Skip to content

Commit af86098

Browse files
committed
Merge branch 'finder' of github.com:django-cms/django-filer into finder
2 parents c0bbb27 + 31af672 commit af86098

File tree

3 files changed

+45
-2
lines changed

3 files changed

+45
-2
lines changed

demoapp/settings.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import os
1414
from pathlib import Path
1515

16+
from django.utils.translation import gettext_lazy as _
17+
1618
# Build paths inside the project like this: BASE_DIR / 'subdir'.
1719
BASE_DIR = Path(__file__).resolve().parent.parent
1820

@@ -104,6 +106,13 @@
104106

105107
USE_I18N = True
106108

109+
LANGUAGES = [
110+
('en', _("English")),
111+
('de', _("German")),
112+
]
113+
114+
LANGUAGE_CODE = 'en'
115+
107116
STATICFILES_DIRS = [
108117
('node_modules', BASE_DIR / 'node_modules'),
109118
]

finder/contrib/image/admin.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1+
from functools import cached_property
2+
3+
from django.utils.text import format_lazy
4+
5+
from django.conf import settings
16
from django.contrib import admin
7+
from django.utils.translation import gettext_lazy as _
28

39
from finder.admin.file import FileAdmin
410
from finder.contrib.image.forms import ImageFileForm
@@ -7,7 +13,28 @@
713

814
@admin.register(ImageFileModel)
915
class ImageAdmin(FileAdmin):
10-
form = ImageFileForm
16+
17+
@cached_property
18+
def form(self):
19+
attrs, extra_fields = {}, []
20+
alt_text_field = ImageFileForm.declared_fields['alt_text']
21+
meta_data_fields = list(ImageFileForm._meta.entangled_fields['meta_data'])
22+
index = meta_data_fields.index('alt_text')
23+
if settings.USE_I18N and len(settings.LANGUAGES) > 1:
24+
for code, language in settings.LANGUAGES:
25+
if code != settings.LANGUAGE_CODE:
26+
field_name = f'alt_text_{code}'
27+
label = format_lazy(_("{field} ({language})"), field=alt_text_field.label, language=language)
28+
attrs[field_name] = alt_text_field.__class__(**dict(alt_text_field.__dict__, label=label))
29+
extra_fields.append(field_name)
30+
index += 1
31+
meta_data_fields.insert(index, field_name)
32+
33+
attrs['Meta'] = type('Meta', (ImageFileForm.Meta,), {
34+
'entangled_fields': {'meta_data': meta_data_fields},
35+
'fields': ImageFileForm._meta.fields + extra_fields,
36+
})
37+
return type(ImageFileForm.__name__, ImageFileForm.__mro__, attrs)
1138

1239
def get_editor_settings(self, request, inode):
1340
settings = super().get_editor_settings(request, inode)

finder/contrib/image/forms.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from django.forms.fields import CharField, FloatField, IntegerField
22
from django.forms.widgets import HiddenInput, TextInput
3+
from django.utils.translation import gettext_lazy as _
34

45
from entangled.forms import EntangledModelFormMixin
56

@@ -27,11 +28,17 @@ class ImageFileForm(EntangledModelFormMixin, FileForm):
2728
required=False,
2829
)
2930
alt_text = CharField(
31+
label=_("Alternative Text"),
32+
widget=TextInput(attrs={'size': 100}),
33+
required=False,
34+
)
35+
credit = CharField(
36+
label=_("Image Credit"),
3037
widget=TextInput(attrs={'size': 100}),
3138
required=False,
3239
)
3340

3441
class Meta:
3542
model = ImageFileModel
36-
entangled_fields = {'meta_data': ['crop_x', 'crop_y', 'crop_size', 'gravity', 'alt_text']}
43+
entangled_fields = {'meta_data': ['crop_x', 'crop_y', 'crop_size', 'gravity', 'alt_text', 'credit']}
3744
untangled_fields = ['name', 'labels', 'width', 'height']

0 commit comments

Comments
 (0)