From 1ea2292833c298bfa47491ce7e0a2d6354060749 Mon Sep 17 00:00:00 2001 From: erjemin Date: Thu, 11 Jun 2026 13:24:12 +0300 Subject: [PATCH] =?UTF-8?q?mod:=20=D0=B0=D0=B4=D0=BC=D0=B8=D0=BD=D0=BA?= =?UTF-8?q?=D0=B0=20(01)=20ImageAdmin=20(02)=20+=D0=B2=D0=B8=D1=80=D1=82?= =?UTF-8?q?=D1=83=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D0=B5=20=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D0=B5=20author=20=D0=B8=D0=B7=20filer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lpon_site/frontend/admin.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/lpon_site/frontend/admin.py b/lpon_site/frontend/admin.py index 02fe363..2699d4d 100644 --- a/lpon_site/frontend/admin.py +++ b/lpon_site/frontend/admin.py @@ -44,6 +44,17 @@ class TbImageAdminForm(forms.ModelForm): help_text='Текст для title-атрибута картинки <img title="" .../>.' ' Будет сохранён в filer_image.default_caption' ) + filer_copyright = forms.CharField( + max_length=255, + required=False, + widget=forms.TextInput(attrs={ + 'placeholder': 'XXXX, Авторские права на изображение', + 'class': 'vTextField', + 'cols': 120, + }), + label='Copyright', + help_text='Авторские права на изображение (например: 2025, Sergei Erjemin. Будет сохранён в filer_image.author' + ) class Meta: model = TbImage @@ -62,6 +73,7 @@ class TbImageAdminForm(forms.ModelForm): # Получаем текущие значения из filer и заполняем виртуальные поля self.fields['filer_alt_text'].initial = filer_image.default_alt_text or '' self.fields['filer_caption'].initial = filer_image.default_caption or '' + self.fields['filer_copyright'].initial = filer_image.author or '' except Exception: # Если ошибка при получении filer_image, просто оставляем пустые значения pass @@ -87,7 +99,8 @@ class ImageAdmin(admin.ModelAdmin): 'description': 'Основные данные об изображении и источнике', }), ('Метаданные filer (SEO для картинок)', { - 'fields': ('_display_filer_alt_text', '_display_filer_caption', 'filer_alt_text', 'filer_caption'), + 'fields': ('_display_filer_alt_text', '_display_filer_caption', 'filer_alt_text', 'filer_caption', + 'filer_copyright'), 'description': 'Редактируемые поля для заполнения Alt текста и описания в filer. Если не заполнить,' ' текущие значения останутся без изменений (или не будут заполнены при создании).', # 'classes': ('collapse',), @@ -179,16 +192,21 @@ class ImageAdmin(admin.ModelAdmin): try: filer_image = obj.image - # Обновляем alt_text, если было заполнено в форме + # Обновляем alt_text (ALT), если было заполнено в форме alt_text = form.cleaned_data.get('filer_alt_text', '').strip() if alt_text: # Если пользователь что-то ввел filer_image.default_alt_text = alt_text - # Обновляем caption, если было заполнено в форме + # Обновляем caption (TITLE), если было заполнено в форме caption = form.cleaned_data.get('filer_caption', '').strip() if caption: # Если пользователь что-то ввел filer_image.default_caption = caption + # Обновляем author (copyrughight), если было заполнено в форме + author = form.cleaned_data.get('filer_copyright', '').strip() + if author: + filer_image.author = author + # Сохраняем filer_image с новыми метаданными filer_image.save()