Fix singleton admin: ensure Save button appears by checking count instead of filter
This commit is contained in:
@@ -3,7 +3,7 @@ from .models import (
|
||||
Service, Project, Client, Order, Review, BlogPost,
|
||||
Category, ServiceRequest, AboutPage, FooterSettings, TeamMember,
|
||||
PortfolioItem, PrivacyPolicy, TermsOfUse, NewsArticle, CareerVacancy,
|
||||
SiteSettings, PortfolioImage
|
||||
SiteSettings, PortfolioImage, ContactSettings
|
||||
)
|
||||
from .forms import ProjectForm
|
||||
|
||||
@@ -163,7 +163,12 @@ class AboutPageAdmin(admin.ModelAdmin):
|
||||
)
|
||||
|
||||
def has_add_permission(self, request):
|
||||
return not AboutPage.objects.filter(is_active=True).exists()
|
||||
# Разрешить создание если нет ни одной записи
|
||||
return AboutPage.objects.count() == 0
|
||||
|
||||
def has_delete_permission(self, request, obj=None):
|
||||
# Запретить удаление
|
||||
return False
|
||||
|
||||
|
||||
@admin.register(FooterSettings)
|
||||
@@ -209,7 +214,12 @@ class FooterSettingsAdmin(admin.ModelAdmin):
|
||||
)
|
||||
|
||||
def has_add_permission(self, request):
|
||||
return not FooterSettings.objects.filter(is_active=True).exists()
|
||||
# Разрешить создание если нет ни одной записи
|
||||
return FooterSettings.objects.count() == 0
|
||||
|
||||
def has_delete_permission(self, request, obj=None):
|
||||
# Запретить удаление единственной активной записи
|
||||
return False
|
||||
|
||||
|
||||
@admin.register(TeamMember)
|
||||
@@ -259,3 +269,53 @@ class SiteSettingsAdmin(admin.ModelAdmin):
|
||||
return False
|
||||
|
||||
|
||||
@admin.register(ContactSettings)
|
||||
class ContactSettingsAdmin(admin.ModelAdmin):
|
||||
list_display = ('company_name', 'email', 'phone', 'telegram', 'updated_at')
|
||||
|
||||
fieldsets = (
|
||||
('📋 Основная информация', {
|
||||
'fields': ('company_name',),
|
||||
'description': 'Название компании'
|
||||
}),
|
||||
('📞 Основные контакты', {
|
||||
'fields': ('email', 'phone', 'telegram', 'whatsapp'),
|
||||
'description': 'Главные каналы связи с клиентами'
|
||||
}),
|
||||
('📍 Адрес и режим работы', {
|
||||
'fields': ('address', 'working_hours'),
|
||||
}),
|
||||
('🌐 Социальные сети', {
|
||||
'fields': (
|
||||
'telegram_url',
|
||||
'instagram_url',
|
||||
'linkedin_url',
|
||||
'facebook_url',
|
||||
'twitter_url',
|
||||
'youtube_url',
|
||||
'github_url'
|
||||
),
|
||||
'classes': ('collapse',),
|
||||
'description': 'Ссылки на страницы в социальных сетях'
|
||||
}),
|
||||
('📧 Дополнительные контакты', {
|
||||
'fields': ('support_email', 'sales_email', 'emergency_phone'),
|
||||
'classes': ('collapse',),
|
||||
'description': 'Специализированные контакты (опционально)'
|
||||
}),
|
||||
)
|
||||
|
||||
def has_add_permission(self, request):
|
||||
# Запретить создание новых записей (singleton)
|
||||
return not ContactSettings.objects.exists()
|
||||
|
||||
def has_delete_permission(self, request, obj=None):
|
||||
# Запретить удаление контактов
|
||||
return False
|
||||
|
||||
class Media:
|
||||
css = {
|
||||
'all': ('admin/css/forms.css',)
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user