Fix permissions and prepare admin login for deploy

- Admin-only: list contacts, create/edit campaigns and compositions
- Public: submit contact, mine contacts by email/phone, read campaigns/compositions
- Add admin_response field on ContactUs
- Update Postman base_url to https://zoneco.org/api with token save

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Shayan Azadi
2026-07-22 22:52:44 +03:30
parent 97127d5772
commit 149fb614b0
8 changed files with 425 additions and 220 deletions

View File

@@ -4,9 +4,9 @@ from .models import ContactUs, Composition, Campaign, CompositionImage
@admin.register(ContactUs)
class ContactUsAdmin(admin.ModelAdmin):
list_display = ['name', 'email_or_phone', 'category', 'created_at']
list_display = ['name', 'email_or_phone', 'category', 'has_admin_response', 'created_at']
list_filter = ['category', 'created_at']
search_fields = ['name', 'email_or_phone', 'description']
search_fields = ['name', 'email_or_phone', 'description', 'admin_response']
readonly_fields = ['created_at', 'updated_at']
date_hierarchy = 'created_at'
@@ -17,12 +17,19 @@ class ContactUsAdmin(admin.ModelAdmin):
('پیام', {
'fields': ('description',)
}),
('پاسخ ادمین', {
'fields': ('admin_response',)
}),
('اطلاعات زمانی', {
'fields': ('created_at', 'updated_at'),
'classes': ('collapse',)
}),
)
@admin.display(boolean=True, description='پاسخ ادمین')
def has_admin_response(self, obj):
return bool(obj.admin_response and obj.admin_response.strip())
class CompositionImageInline(admin.TabularInline):
model = CompositionImage