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',),
}),
('Служебная информация', {