from django.contrib import admin from .models import PageTitle, ProductionSeedState, SiteBranding, VoipConfiguration @admin.register(SiteBranding) class SiteBrandingAdmin(admin.ModelAdmin): fieldsets = ( ("عمومی", {"fields": ("site_title", "header_title", "header_subtitle")}), ("لوگو و آیکون‌ها", {"fields": ("company_logo", "favicon", "pwa_icon"), "description": "در صورت خالی بودن هر فیلد، فایل پیش‌فرض فعلی استفاده می‌شود."}), ("PWA", {"fields": ("pwa_name", "pwa_title", "pwa_description", "pwa_install_label", "pwa_install_help")}), ("پنل کارشناسان", {"fields": ("staff_brand_title", "staff_brand_subtitle", "staff_panel_label")}), ("صفحه ورود مشتری", {"fields": ("login_intro_enabled", "login_intro_icon", "login_intro_eyebrow", "login_intro_heading", "login_intro_body")}), ("صفحه ورود کارشناسان", {"fields": ("staff_login_intro_enabled", "staff_login_intro_icon", "staff_login_intro_eyebrow", "staff_login_intro_heading", "staff_login_intro_body")}), ("صفحه تیکت‌های مشتری", {"fields": ("customer_tickets_hero_enabled", "customer_tickets_hero_eyebrow", "customer_tickets_hero_heading", "customer_tickets_hero_body")}), ("امضای توسعه‌دهنده", {"fields": ("developer_credit_text", "developer_credit_html", "use_developer_credit_html"), "description": "HTML خام تنها برای محتوای کاملاً مورد اعتماد فعال شود."}), ("امضای مستقل sidebar کارکنان", {"fields": ("staff_sidebar_credit_text", "staff_sidebar_credit_html", "use_staff_sidebar_credit_html"), "description": "این مقدار فقط در پایین sidebar پنل staff نمایش داده می‌شود."}), ) def get_readonly_fields(self, request, obj=None): if request.user.is_superuser: return () return ("developer_credit_html", "use_developer_credit_html", "staff_sidebar_credit_html", "use_staff_sidebar_credit_html") def has_add_permission(self, request): return not SiteBranding.objects.exists() def has_delete_permission(self, request, obj=None): return False @admin.register(VoipConfiguration) class VoipConfigurationAdmin(admin.ModelAdmin): fields = ("voip_call_url", "updated_at") readonly_fields = ("updated_at",) def has_add_permission(self, request): return not VoipConfiguration.objects.exists() def has_delete_permission(self, request, obj=None): return False @admin.register(PageTitle) class PageTitleAdmin(admin.ModelAdmin): list_display = ("route_name", "title", "is_active", "updated_at") list_editable = ("title", "is_active") search_fields = ("route_name", "title") list_filter = ("is_active",) @admin.register(ProductionSeedState) class ProductionSeedStateAdmin(admin.ModelAdmin): list_display = ("bundle_sha256", "applied_at") readonly_fields = ("bundle_sha256", "manifest", "applied_at") def has_add_permission(self, request): return False def has_change_permission(self, request, obj=None): return False def has_delete_permission(self, request, obj=None): return False