diff --git a/lpon_site/frontend/admin.py b/lpon_site/frontend/admin.py index d67a450..add9ff7 100644 --- a/lpon_site/frontend/admin.py +++ b/lpon_site/frontend/admin.py @@ -14,9 +14,41 @@ from .utils import validate_entity_for_admin_form, generate_admin_save_message # ============================================================================ -# МИКСИНЫ ДЛЯ АДМИНКИ +# ЛОКАЛЬНЫЕ ХЕЛПЕРЫ ДЛЯ АДМИНКИ # ============================================================================ +def get_related_article_description(model_class): + """ + Генерирует HTML-описание для fieldset'а 'Связанная публикация'. + + Описание объясняет роль связанной статьи и предлагает создавать её вручную. + Использует verbose_name из модели для универсальности. + + Args: + model_class: Класс модели (TbLabel, TbArtist, TbMusicStyle и т.д.) + + Returns: + str: HTML-описание для fieldset'а + + Пример: + 'description': get_related_article_description(TbLabel) + """ + # Получаем наименование модели в родительном падеже (для описания) + verbose_name = model_class._meta.verbose_name.upper() + + # Получаем наименование во множественном числе (для списков альбомов) + verbose_name_plural = model_class._meta.verbose_name_plural.upper() + + return (f'Прикреп­ленная статья (если есть) будет отображаться на странице {verbose_name}' + f' на сайте. Также позволяет получать список всех альбомов {verbose_name_plural},' + f' управлять SEO-атрибутами для улучшения видимости поисковых систем, иметь красивый' + f' slag для URL-странички, подсчитывать число просмотров и добавлений' + f' в избранные. ОЧЕНЬ РЕКОМЕН­ДУЕТСЯ СОЗДАВАТЬ' + f' И ПРИВЯЗЫВАТЬ СТАТЬЮ ВРУЧНУЮ. Если публикация не создана вручную,' + f' то она будет создана автоматически (пустая) при сохранении {verbose_name},' + f' со всеми SEO-атрибутами и slag, но автоматика несовершенна.
 ') + + class RequestInFormMixin(admin.ModelAdmin): """ Миксин для передачи request объекта в форму. @@ -360,14 +392,7 @@ class MusicStyleAdmin(admin.ModelAdmin): }), ('Связанная публикация', { 'fields': ('k_style_to_article',), - 'description': 'Прикреп­ленная статья (если есть) будет отображаться на странице музыкального' - ' стиля на сайте. Также позволяет получать список всех альбомов музыкального стиля,' - ' управлять SEO-атрибутами для улучшения видимости поисковых систем, иметь красивый' - ' slag для URL-странички, подсчитывать число просмотров и добавлений' - ' в избранные. ОЧЕНЬ РЕКОМЕН­ДУЕТСЯ СОЗДАВАТЬ' - ' И ПРИВЯЗЫВАТЬ СТАТЬЮ ВРУЧНУЮ. Если публикация не создана вручную,' - ' то она будет создана автоматически (пустая) при сохранении музыкального стиля,' - ' со всеми SEO-атрибутами и slag, но автоматика несовершенна.
 ', + 'description': get_related_article_description(TbMusicStyle), # 'classes': ('collapse',), }), ('Служебная информация', { @@ -439,14 +464,7 @@ class ArtistAdmin(admin.ModelAdmin): }), ('Связанная публикация', { 'fields': ('k_artist_to_article', ), - 'description': 'Прикреп­ленная статья (если есть) будет отображаться на странице исполнителя' - ' на сайте. Также позволяет получать список всех альбомов исполнителя, управлять' - ' SEO-атрибутами для улучшения видимости поисковых систем, иметь красивый' - ' slag для URL-странички, подсчитывать число просмотров и добавлений' - ' в избранные. ОЧЕНЬ РЕКОМЕН­ДУЕТСЯ СОЗДАВАТЬ' - ' И ПРИВЯЗЫВАТЬ СТАТЬЮ ВРУЧНУЮ. Если публикация не создана вручную,' - ' то она будет создана автоматически (пустая) при сохранении исполнителя,' - ' со всеми SEO-атрибутами и slag, но автоматика несовершенна.
 ', + 'description': get_related_article_description(TbArtist), # 'classes': ('collapse',), }), ('Служебная информация', { @@ -573,14 +591,7 @@ class LabelAdmin(RequestInFormMixin, admin.ModelAdmin): }), ('Связанная публикация', { 'fields': ('k_label_to_article', ), - 'description': 'Прикреп­ленная статья (если есть) будет отображаться на странице лейбла' - ' на сайте. Также позволяет получать список всех альбомов лейбла, управлять' - ' SEO-атрибутами для улучшения видимости поисковых систем, иметь красивый' - ' slag для URL-странички, подсчитывать число просмотров и добавлений' - ' в избранные. ОЧЕНЬ РЕКОМЕН­ДУЕТСЯ СОЗДАВАТЬ' - ' И ПРИВЯЗЫВАТЬ СТАТЬЮ ВРУЧНУЮ. Если публикация не создана вручную,' - ' то она будет создана автоматически (пустая) при сохранении лейбла,' - ' со всеми SEO-атрибутами и slag, но автоматика несовершенна.
 ', + 'description': get_related_article_description(TbLabel), # 'classes': ('collapse',), }), ('Служебная информация', {