from django.contrib import admin from .models import ( Service, Project, Client, Order, Review, BlogPost, Category, ServiceRequest, AboutPage, FooterSettings ) from .forms import ProjectForm @admin.register(Service) class ServiceAdmin(admin.ModelAdmin): list_display = ('name', 'category', 'price') search_fields = ('name', 'category') @admin.register(Project) class ProjectAdmin(admin.ModelAdmin): form = ProjectForm list_display = ('name', 'client','service', 'status', 'order', 'description') list_filter = ('name', 'client','service', 'status', 'order') search_fields = ('name', 'client','service', 'status', 'order', 'client__first_name', 'client__last_name') @admin.register(Client) class ClientAdmin(admin.ModelAdmin): list_display = ('first_name', 'last_name', 'email', 'phone_number') search_fields = ('first_name', 'last_name', 'email') @admin.register(Order) class OrderAdmin(admin.ModelAdmin): list_display = ('id', 'service', 'client', 'client__email', 'client__phone_number', 'status') list_filter = ('status','client', 'order_date') search_fields = ('client__first_name', 'service__name','status','client', 'order_date') @admin.register(Review) class ReviewAdmin(admin.ModelAdmin): list_display = ('client', 'service', 'rating', 'review_date') list_filter = ('rating',) search_fields = ('client__first_name', 'service__name') @admin.register(BlogPost) class BlogPostAdmin(admin.ModelAdmin): list_display = ('title', 'published_date') search_fields = ('title',) @admin.register(Category) class CategoryAdmin(admin.ModelAdmin): list_display = ('name','description') search_fields = ('name',) @admin.register(ServiceRequest) class ServiceRequestAdmin(admin.ModelAdmin): list_display = ('service','token', 'client', 'created_at') search_fields = ('service','token', 'client') list_filter = ('service','token','client') @admin.register(AboutPage) class AboutPageAdmin(admin.ModelAdmin): list_display = ('hero_title', 'is_active', 'updated_at') list_filter = ('is_active', 'updated_at') search_fields = ('hero_title', 'mission_title', 'vision_title') fieldsets = ( ('Hero секция', { 'fields': ('hero_badge', 'hero_title', 'hero_description') }), ('Статистика', { 'fields': ('stat_projects', 'stat_clients', 'stat_years', 'stat_support') }), ('Миссия', { 'fields': ( 'mission_badge', 'mission_title', 'mission_description', 'mission_point_1_title', 'mission_point_1_text', 'mission_point_2_title', 'mission_point_2_text', 'mission_point_3_title', 'mission_point_3_text', ) }), ('Видение', { 'fields': ('vision_badge', 'vision_title', 'vision_description') }), ('Навыки', { 'fields': ( 'skill_1_name', 'skill_1_percent', 'skill_2_name', 'skill_2_percent', 'skill_3_name', 'skill_3_percent', 'skill_4_name', 'skill_4_percent', ) }), ('Команда', { 'fields': ('team_badge', 'team_title', 'team_description') }), ('Ценности', { 'fields': ( 'values_badge', 'values_title', 'value_1_icon', 'value_1_title', 'value_1_text', 'value_2_icon', 'value_2_title', 'value_2_text', 'value_3_icon', 'value_3_title', 'value_3_text', 'value_4_icon', 'value_4_title', 'value_4_text', ) }), ('Контакты', { 'fields': ('contact_title', 'contact_description') }), ('Настройки', { 'fields': ('is_active',) }), ) def has_add_permission(self, request): return not AboutPage.objects.filter(is_active=True).exists() @admin.register(FooterSettings) class FooterSettingsAdmin(admin.ModelAdmin): list_display = ('company_name', 'email', 'is_active', 'updated_at') list_filter = ('is_active', 'updated_at') search_fields = ('company_name', 'email') fieldsets = ( ('Информация о компании', { 'fields': ('company_name', 'company_description', 'company_logo_icon') }), ('Социальные сети', { 'fields': ('telegram_url', 'instagram_url', 'linkedin_url', 'github_url', 'facebook_url', 'twitter_url'), 'classes': ('collapse',) }), ('Контактная информация', { 'fields': ('email', 'phone', 'address') }), ('Меню футера', { 'fields': ( 'show_services_menu', 'services_title', 'show_company_menu', 'company_menu_title' ), 'classes': ('collapse',) }), ('Copyright', { 'fields': ('copyright_text',) }), ('Интеграция скриптов', { 'fields': ('google_analytics', 'google_adsense', 'yandex_metrika', 'facebook_pixel'), 'description': 'Вставьте коды аналитики без тегов ', 'classes': ('collapse',) }), ('Дополнительные скрипты', { 'fields': ('custom_head_scripts', 'custom_body_scripts'), 'description': 'Вставьте дополнительные скрипты С тегами ', 'classes': ('collapse',) }), ('Настройки', { 'fields': ('is_active',) }), ) def has_add_permission(self, request): return not FooterSettings.objects.filter(is_active=True).exists()