Skip to content

Commit

Permalink
Merge ae26aa0 into 36dec21
Browse files Browse the repository at this point in the history
  • Loading branch information
mvbrn committed May 29, 2019
2 parents 36dec21 + ae26aa0 commit a0c2156
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 14 deletions.
6 changes: 3 additions & 3 deletions docs/modeltranslation/admin.rst
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,11 @@ method does the following:
translation field required instead.


get_form/get_fieldsets/_declared_fieldsets
get_form/get_fieldsets
******************************************

In addition the ``TranslationBaseModelAdmin`` class overrides ``get_form``,
``get_fieldsets`` and ``_declared_fieldsets`` to make the options ``fields``,
In addition the ``TranslationBaseModelAdmin`` class overrides ``get_form`` and
``get_fieldsets`` to make the options ``fields``,
``exclude`` and ``fieldsets`` work in a transparent way. It basically does:

1. Removes the original field from every admin form by adding it to
Expand Down
20 changes: 9 additions & 11 deletions modeltranslation/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,16 +25,15 @@ def __init__(self, *args, **kwargs):
self.trans_opts = translator.get_options_for_model(self.model)
self._patch_prepopulated_fields()

def _declared_fieldsets(self):
def _get_declared_fieldsets(self, request, obj=None):
# Take custom modelform fields option into account
if not self.fields and hasattr(self.form, '_meta') and self.form._meta.fields:
self.fields = self.form._meta.fields
if self.fieldsets:
return self._patch_fieldsets(self.fieldsets)
elif self.fields:
return [(None, {'fields': self.replace_orig_field(self.fields)})]
return [(None, {'fields': self.replace_orig_field(self.get_fields(request, obj))})]
return None
declared_fieldsets = property(_declared_fieldsets)

def formfield_for_dbfield(self, db_field, **kwargs):
field = super(TranslationBaseModelAdmin, self).formfield_for_dbfield(db_field, **kwargs)
Expand Down Expand Up @@ -198,12 +197,12 @@ def _get_form_or_formset(self, request, obj, **kwargs):

return kwargs

def _get_fieldsets_pre_form_or_formset(self):
def _get_fieldsets_pre_form_or_formset(self, request, obj=None):
"""
Generic get_fieldsets code, shared by
TranslationAdmin and TranslationInlineModelAdmin.
"""
return self._declared_fieldsets()
return self._get_declared_fieldsets(request, obj)

def _get_fieldsets_post_form_or_formset(self, request, form, obj=None):
"""
Expand Down Expand Up @@ -266,7 +265,7 @@ def _group_fieldsets(self, fieldsets):
# setting TranslationAdmin.group_fieldsets to True. If the admin class
# already defines a fieldset, we leave it alone and assume the author
# has done whatever grouping for translated fields they desire.
if not self.declared_fieldsets and self.group_fieldsets is True:
if self.group_fieldsets is True:
flattened_fieldsets = flatten_fieldsets(fieldsets)

# Create a fieldset to group each translated field's localized fields
Expand Down Expand Up @@ -314,9 +313,7 @@ def get_form(self, request, obj=None, **kwargs):
return super(TranslationAdmin, self).get_form(request, obj, **kwargs)

def get_fieldsets(self, request, obj=None):
if self.declared_fieldsets:
return self._get_fieldsets_pre_form_or_formset()
return self._group_fieldsets(
return self._get_fieldsets_pre_form_or_formset(request, obj) or self._group_fieldsets(
self._get_fieldsets_post_form_or_formset(
request, self.get_form(request, obj, fields=None), obj))

Expand All @@ -330,8 +327,9 @@ def get_fieldsets(self, request, obj=None):
# FIXME: If fieldsets are declared on an inline some kind of ghost
# fieldset line with just the original model verbose_name of the model
# is displayed above the new fieldsets.
if self.declared_fieldsets:
return self._get_fieldsets_pre_form_or_formset()
declared_fieldsets = self._get_fieldsets_pre_form_or_formset(request, obj)
if declared_fieldsets:
return declared_fieldsets
form = self.get_formset(request, obj, fields=None).form
return self._get_fieldsets_post_form_or_formset(request, form, obj)

Expand Down

0 comments on commit a0c2156

Please sign in to comment.