153 lines
5.8 KiB
Python
153 lines
5.8 KiB
Python
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': 'Вставьте коды аналитики без тегов <script></script>',
|
||
'classes': ('collapse',)
|
||
}),
|
||
('Дополнительные скрипты', {
|
||
'fields': ('custom_head_scripts', 'custom_body_scripts'),
|
||
'description': 'Вставьте дополнительные скрипты С тегами <script></script>',
|
||
'classes': ('collapse',)
|
||
}),
|
||
('Настройки', {
|
||
'fields': ('is_active',)
|
||
}),
|
||
)
|
||
|
||
def has_add_permission(self, request):
|
||
return not FooterSettings.objects.filter(is_active=True).exists()
|