Some checks failed
continuous-integration/drone/push Build is failing
✨ НОВЫЕ ФУНКЦИИ: - 🎬 Поддержка видео в Hero баннерах и услугах - 💊 Водная анимация пилюль маркеров банеров - 📱 Полная главная страница с портфолио, блогом, новостями - 🎯 HeroBanner модель с видео/изображениями - 🎨 Современные hover-эффекты и анимации 📊 УЛУЧШЕНИЯ СТРУКТУРЫ: - Расширенная home_modern.html с полным контентом - Новые URL маршруты для всех секций - Обновленные views с передачей всех данных - CSS стили для всех новых секций - Миграции для видео полей 🎪 HERO БАНЕР СИСТЕМА: - Динамические банеры с видео/фото фонами - Пилюли маркеры с водной анимацией - Растягивание маркеров от центра - Адаптивный дизайн для мобильных - Glassmorphism эффекты 🎨 СОВРЕМЕННЫЙ ДИЗАЙН: - Hover анимации для карточек - Плавные переходы везде - Современная типографика - Градиенты и тени - Отзывчивая сетка Готов к продакшену! 🚀
82 lines
3.3 KiB
Python
82 lines
3.3 KiB
Python
from django.contrib import admin
|
|
from .models import Service, Project, Client, Order, Review, BlogPost, Category, ServiceRequest, HeroBanner
|
|
from .forms import ProjectForm
|
|
|
|
@admin.register(HeroBanner)
|
|
class HeroBannerAdmin(admin.ModelAdmin):
|
|
list_display = ('title', 'is_active', 'order', 'created_at')
|
|
list_filter = ('is_active', 'created_at')
|
|
search_fields = ('title', 'subtitle')
|
|
fields = ('title', 'subtitle', 'description', 'image', 'video', 'video_poster',
|
|
'button_text', 'button_link', 'is_active', 'order')
|
|
list_editable = ('is_active', 'order')
|
|
|
|
@admin.register(Service)
|
|
class ServiceAdmin(admin.ModelAdmin):
|
|
list_display = ('name', 'category', 'price', 'has_video')
|
|
search_fields = ('name', 'category')
|
|
fields = ('name', 'description', 'price', 'category', 'image', 'video', 'video_poster')
|
|
|
|
def has_video(self, obj):
|
|
return bool(obj.video)
|
|
has_video.boolean = True
|
|
has_video.short_description = 'Есть видео'
|
|
|
|
@admin.register(Project)
|
|
class ProjectAdmin(admin.ModelAdmin):
|
|
form = ProjectForm
|
|
list_display = ('name', 'client','service', 'status', 'order', 'has_video')
|
|
list_filter = ('name', 'client','service', 'status', 'order')
|
|
search_fields = ('name', 'client','service', 'status', 'order', 'client__first_name', 'client__last_name')
|
|
fields = ('name', 'description', 'completion_date', 'client', 'service', 'order',
|
|
'category', 'image', 'video', 'video_poster', 'status')
|
|
|
|
def has_video(self, obj):
|
|
return bool(obj.video)
|
|
has_video.boolean = True
|
|
has_video.short_description = 'Есть видео'
|
|
|
|
@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', 'has_video')
|
|
list_filter = ('rating',)
|
|
search_fields = ('client__first_name', 'service__name')
|
|
fields = ('client', 'service', 'project', 'rating', 'comment', 'image', 'video', 'video_poster')
|
|
|
|
def has_video(self, obj):
|
|
return bool(obj.video)
|
|
has_video.boolean = True
|
|
has_video.short_description = 'Есть видео'
|
|
|
|
@admin.register(BlogPost)
|
|
class BlogPostAdmin(admin.ModelAdmin):
|
|
list_display = ('title', 'published_date', 'has_video')
|
|
search_fields = ('title',)
|
|
fields = ('title', 'content', 'image', 'video', 'video_poster')
|
|
|
|
def has_video(self, obj):
|
|
return bool(obj.video)
|
|
has_video.boolean = True
|
|
has_video.short_description = 'Есть видео'
|
|
|
|
@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') |