class CourseAdmin(ImageCroppingMixin, ModelTranlsationFieldsetsMixin, BaseArticleAdmin): """Курсы""" date_hierarchy = 'date_start' group_fieldsets = True filter_horizontal = ('categories', ) inlines = (CourseAboutBlockInline, CourseTeacherInline, CourseScheduleInline) list_display = ('id', 'image_thumb', 'title', 'date_start', 'date_finish', 'ordering', 'status', 'updated') list_editable = ('status', 'ordering') list_filter = BaseArticleAdmin.list_filter + ('city', 'categories') ordering = ('-date_start', '-date_finish', 'ordering') save_as = True search_fields = ['=id', 'slug', 'image'] + get_model_translation_fields( models.Course) suit_form_tabs = (('general', _('Основное')), ('about', _('О курсе')), ('detail', _('Подробная информация')), ('teachers', _('Преподаватели курса')), ('schedule', _('Расписание'))) tabs_mapping = { '': 'general', 'О курсе': 'about', 'Подробная информация': 'detail', 'Расписание': 'schedule' } class Media: js = ('admin/js/translit.js', ) def get_fieldsets(self, request, obj=None): fieldsets = super(CourseAdmin, self).get_fieldsets(request, obj=obj) fieldsets[0][1]['fields'].append('categories') return fieldsets
class ProductCategoryAdmin(ModelTranlsationFieldsetsMixin, BaseModelAdmin, TranslationAdmin, MPTTModelAdmin): """Категории продуктов""" group_fieldsets = True list_display = ('title', 'id', 'ordering', 'status', 'updated') list_display_links = ('title', 'id') list_editable = ('status', 'ordering') list_filter = BaseModelAdmin.list_filter + ('parent', 'level') ordering = BaseModelAdmin.ordering + ('title', ) search_fields = ['=id', 'slug'] + get_model_translation_fields( models.ProductCategory) suit_form_tabs = (('general', _('Основное')), ('body', _('Основной контент')), ('seo', _('SEO-блок'))) tabs_mapping = { '': 'general', 'Контент': 'body', 'Заголовок seo-блока': 'seo', 'Контент seo-блока': 'seo', 'Изображение в seo-блоке': 'seo' } class Media: js = ('admin/js/translit.js', ) def get_fieldsets(self, request, obj=None): fieldsets = super(ProductCategoryAdmin, self).get_fieldsets(request, obj=obj) return fieldsets
class SupportQuestionAdmin(BaseModelAdmin, TranslationAdmin): """Категории продуктов""" fields = models.SupportQuestion().collect_fields() + ['sections'] filter_horizontal = ('sections',) list_display = ('id', 'title', 'ordering', 'get_sections', 'status', 'updated') list_display_links = ('id', 'title') list_filter = BaseModelAdmin.list_filter + ('sections',) ordering = BaseModelAdmin.ordering + ('title',) search_fields = ['=id'] + get_model_translation_fields(models.SupportQuestion) def get_queryset(self, request): qs = super(SupportQuestionAdmin, self).get_queryset(request) qs = qs.prefetch_related( Prefetch( 'sections', queryset=models.SupportSection.objects.published(), to_attr='sections_cache' ) ) return qs def get_sections(self, obj): return '<br/>'.join(x.title for x in obj.sections_cache) get_sections.allow_tags = True get_sections.short_description = _('Разделы') class Media: js = ('admin/js/translit.js',)
class FeatureAdmin(BaseModelAdmin, TranslationAdmin): """Характеристики""" fields = models.Feature().collect_fields() list_display = ('id', 'title', 'ordering', 'status', 'updated') list_display_links = ('id', 'title') ordering = BaseModelAdmin.ordering + ('title', ) search_fields = ['=id'] + get_model_translation_fields(models.Feature)
class TeacherAdmin(ImageCroppingMixin, BaseModelAdmin, TranslationAdmin): """Преподаватели""" fields = models.Teacher().collect_fields() list_display = ('id', 'image_thumb', 'title', 'ordering', 'status', 'updated') list_display_links = ('id', 'image_thumb', 'title') ordering = BaseModelAdmin.ordering + ('title', ) search_fields = ['=id'] + get_model_translation_fields(models.Teacher)
class HomeSlideAdmin(BaseModelAdmin, TranslationAdmin): """Слайды на главной""" group_fieldsets = True list_display = ('id', 'image_thumb', 'title', 'ordering', 'status', 'updated') list_display_links = ('id', 'image_thumb', 'title') ordering = BaseModelAdmin.ordering + ('title',) save_as = True search_fields = ['=id'] + get_model_translation_fields(models.HomeSlide)
class HomeAdvantageAdmin(BaseModelAdmin, TranslationAdmin): """Преимущества на главной странице""" group_fieldsets = True list_display = ('id', 'title', 'icon', 'ordering', 'status', 'updated') list_display_links = ('id', 'title') ordering = BaseModelAdmin.ordering + ('title',) save_as = True search_fields = ['=id', 'icon'] + get_model_translation_fields(models.HomeAdvantage)
class CityAdmin(BaseModelAdmin, SuperUserDeletableAdminMixin, TranslationAdmin): """Города""" fields = models.City().collect_fields() list_display = ('id', 'title', 'status', 'ordering', 'updated') list_display_links = ('id', 'title') ordering = ('ordering', 'title') search_fields = ['=id'] + get_model_translation_fields(models.City)
class DbConfigAdmin(SuperUserDeletableAdminMixin, BaseModelAdmin, TranslationAdmin): """Переменные шаблонов""" fields = models.DbConfig().collect_fields() list_display = ('key', 'verbose_title', 'status', 'created') list_editable = ('status', ) ordering = ('key', ) search_fields = ['=id', 'key', 'verbose_title' ] + get_model_translation_fields(models.DbConfig)
class HomeCatalogAdmin(BaseModelAdmin, TranslationAdmin): """Каталоги на главной странице""" group_fieldsets = True inlines = (HomeCatalogProductInline, HomeCatalogManufacturerInline) list_display = ('id', 'title', 'ordering', 'status', 'updated') list_display_links = ('id', 'title') ordering = BaseModelAdmin.ordering + ('title',) save_as = True search_fields = ['=id'] + get_model_translation_fields(models.HomeCatalog)
class MenuAdmin(SuperUserDeletableAdminMixin, BaseModelAdmin): """Меню""" fields = models.Menu().collect_fields() inlines = (MenuItemInline, ) list_display = ('slug', 'title', 'status', 'created') list_editable = ('status', ) ordering = BaseModelAdmin.ordering + ('slug', ) search_fields = ['=id', 'slug', 'title'] + \ ['items__%s' % x for x in get_model_translation_fields(models.MenuItem)]
class ProfessionalAreaAdmin(BaseModelAdmin, SuperUserDeletableAdminMixin, TranslationAdmin): """Направления деятельности""" fields = models.ProfessionalArea().collect_fields() list_display = ('id', 'title', 'status', 'ordering', 'updated') list_display_links = ('id', 'title') ordering = ('ordering', 'title') search_fields = ['=id'] + get_model_translation_fields( models.ProfessionalArea)
class PartnerAdmin(BaseModelAdmin, TranslationAdmin): """Дилеры""" group_fieldsets = True fields = models.Partner().collect_fields() + ['professional_areas'] filter_horizontal = ('professional_areas', ) list_display = ('id', 'title', 'city', 'status', 'ordering', 'updated') list_display_links = ('id', 'title') list_filter = BaseModelAdmin.list_filter + ('city', 'professional_areas') ordering = ('ordering', 'title') search_fields = ['=id'] + get_model_translation_fields(models.Partner)
class ArticleCategoryAdmin(BaseModelAdmin): """Категории статей базы знаний""" fields = models.ArticleCategory().collect_fields() list_display = ('id', 'title', 'ordering', 'status', 'updated') list_display_links = ('id', 'title') ordering = BaseModelAdmin.ordering + ('title',) search_fields = ['=id', 'slug'] + get_model_translation_fields(models.ArticleCategory) class Media: js = ('admin/js/translit.js',)
class PageAdmin(BaseModelAdmin, TranslationAdmin): """Простые страницы""" fields = models.Page().collect_fields() list_display = ('id', 'title', 'slug', 'ordering', 'status', 'updated') list_display_links = ('id', 'title') ordering = BaseModelAdmin.ordering + ('title',) search_fields = ['=id', 'slug'] + get_model_translation_fields(models.Page) class Media: js = ('admin/js/translit.js',)
class SupportCategoryAdmin(BaseModelAdmin, TranslationAdmin): """Категории тех. поддержки""" fields = models.SupportCategory().collect_fields() list_display = ('id', 'title', 'ordering', 'status', 'updated') list_display_links = ('id', 'title') ordering = BaseModelAdmin.ordering + ('title',) search_fields = ['=id', 'slug'] + get_model_translation_fields(models.SupportCategory) class Media: js = ('admin/js/translit.js',)
class MenuItemAdmin(SuperUserDeletableAdminMixin, BaseModelAdmin, TranslationAdmin): """Пункты меню""" fields = models.MenuItem().collect_fields() list_display = ('id', 'title', 'parent_item', 'menu', 'status', 'ordering', 'created') list_display_links = ('id', 'title') list_filter = BaseModelAdmin.list_filter + ('menu', ) ordering = BaseModelAdmin.ordering raw_id_fields = ('parent_item', ) search_fields = ['=id'] + get_model_translation_fields(models.MenuItem)
class GalleryAdmin(BaseModelAdmin, TranslationAdmin): """Галереи""" fields = models.Gallery().collect_fields() inlines = (GalleryPhotoInline,) list_display = ('image_thumb', 'title', 'ordering', 'status', 'updated') list_display_links = ('image_thumb', 'title') ordering = BaseModelAdmin.ordering + ('title',) search_fields = ['=id'] + get_model_translation_fields(models.Gallery) class Media: js = ('admin/js/translit.js',)
class ManufacturerAdmin(BaseModelAdmin, TranslationAdmin): """Производители""" fields = models.Manufacturer().collect_fields() list_display = ('id', 'image_thumb', 'title', 'ordering', 'status', 'updated') list_display_links = ('id', 'image_thumb', 'title') ordering = BaseModelAdmin.ordering + ('title', ) search_fields = ['=id', 'slug', 'image'] + get_model_translation_fields( models.Manufacturer) class Media: js = ('admin/js/translit.js', )
class SupportSectionAdmin(BaseModelAdmin, TranslationAdmin): """Категории продуктов""" filter_horizontal = ('categories',) group_fieldsets = True list_display = ('id', 'title', 'ordering', 'status', 'updated') list_display_links = ('id', 'title') list_filter = BaseModelAdmin.list_filter + ('categories',) ordering = BaseModelAdmin.ordering + ('title',) search_fields = ['=id'] + get_model_translation_fields(models.SupportSection) def get_fieldsets(self, request, obj=None): fieldsets = super(SupportSectionAdmin, self).get_fieldsets(request, obj=obj) fieldsets[0][1]['fields'].append('categories') return fieldsets
class BaseArticleAdmin(BaseModelAdmin, TranslationAdmin): """Базовая админ.часть для новостей и событий""" date_hierarchy = 'publish_date' group_fieldsets = True list_display = ('id', 'image_thumb', 'title', 'publish_date', 'ordering', 'status', 'updated') list_display_links = ('id', 'image_thumb', 'title') list_editable = ('status', 'ordering', 'publish_date') ordering = ('ordering', '-publish_date') search_fields = ['=id', 'slug', 'image'] + get_model_translation_fields( models.BaseArticle) suit_form_tabs = (('general', _('Основное')), ('body', _('Основной контент')), ('sections', _('Секции'))) tabs_mapping = {'': 'general', 'Контент': 'body', 'Анонс': 'body'} class Media: js = ('admin/js/translit.js', )
class ProductAdmin(ModelTranlsationFieldsetsMixin, ImageCroppingMixin, BaseModelAdmin, TranslationAdmin): """Продукты""" filter_horizontal = ('categories', ) form = forms.ProductModelForm group_fieldsets = True inlines = (ProductImageMainInline, ProductFeatureMainInline, ProductFeatureInline, ProductDocumentInline, ProductRelatedInline) list_display = ('id', 'image_thumb', 'title', 'ordering', 'status', 'updated') list_display_links = ('id', 'image_thumb', 'title') list_filter = BaseModelAdmin.list_filter + ('categories', 'manufacturer') ordering = BaseModelAdmin.ordering + ('title', ) save_as = True search_fields = ['=id', 'slug', 'image'] + get_model_translation_fields( models.Product) suit_form_tabs = (('general', _('Основное')), ('body', _('Основной контент')), ('images', _('Изображения')), ('features', _('Характеристики')), ('training', _('Обучение')), ('testing', _('Тестирование')), ('docs', _('Документация')), ('related', _('Связанные продукты'))) tabs_mapping = { '': 'general', 'Основной контент': 'body', 'Короткое описание': 'body', 'Контент вкладки "характеристики"': 'features', 'Контент вкладки "обучение"': 'training', 'Контент вкладки "тестирование"': 'testing', 'Контент вкладки "документация"': 'docs' } class Media: js = ('admin/js/translit.js', ) def get_fieldsets(self, request, obj=None): fieldsets = super(ProductAdmin, self).get_fieldsets(request, obj=obj) fieldsets[0][1]['fields'].append('categories') return fieldsets
class SEOPageAdmin(BaseModelAdmin, TranslationAdmin): """SEO-параметры страниц""" group_fieldsets = True list_display = ('url', 'seo_title', 'ordering', 'status', 'created') ordering = ('url', ) search_fields = ['url'] + get_model_translation_fields(models.SEOPage)