Features: 1) Add suppress(NotRegistered) to handle unregistered translation models safely; 2) Enhance add_translations_fieldset logic for better error handling;
Fixes: 1) Add missing import for `NotRegistered` in `admin.py`; Extra: 1) Minor refactoring of `add_translations_fieldset` function for readability;
This commit is contained in:
parent
2410f6dd3d
commit
080fcb2a25
1 changed files with 14 additions and 11 deletions
|
|
@ -1,3 +1,5 @@
|
||||||
|
from contextlib import suppress
|
||||||
|
|
||||||
from constance.admin import Config
|
from constance.admin import Config
|
||||||
from constance.admin import ConstanceAdmin as BaseConstanceAdmin
|
from constance.admin import ConstanceAdmin as BaseConstanceAdmin
|
||||||
from django.apps import apps
|
from django.apps import apps
|
||||||
|
|
@ -6,7 +8,7 @@ from django.contrib.admin import ModelAdmin, TabularInline
|
||||||
from django.contrib.gis.admin import GISModelAdmin
|
from django.contrib.gis.admin import GISModelAdmin
|
||||||
from django.db.models import Model
|
from django.db.models import Model
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from modeltranslation.translator import translator
|
from modeltranslation.translator import NotRegistered, translator
|
||||||
from modeltranslation.utils import get_translation_fields
|
from modeltranslation.utils import get_translation_fields
|
||||||
from mptt.admin import DraggableMPTTAdmin
|
from mptt.admin import DraggableMPTTAdmin
|
||||||
|
|
||||||
|
|
@ -43,16 +45,17 @@ class FieldsetsMixin:
|
||||||
def get_fieldsets(self, request, obj=None):
|
def get_fieldsets(self, request, obj=None):
|
||||||
fieldsets = []
|
fieldsets = []
|
||||||
|
|
||||||
def add_translations_fieldset(fieldsets):
|
def add_translations_fieldset(fss):
|
||||||
opts = translator.get_options_for_model(self.model)
|
with suppress(NotRegistered):
|
||||||
translation_fields = []
|
transoptions = translator.get_options_for_model(self.model)
|
||||||
for orig in opts.local_fields:
|
translation_fields = []
|
||||||
translation_fields += get_translation_fields(orig)
|
for orig in transoptions.local_fields:
|
||||||
if translation_fields:
|
translation_fields += get_translation_fields(orig)
|
||||||
fieldsets = list(fieldsets) + [
|
if translation_fields:
|
||||||
(_("translations"), {"fields": translation_fields})
|
fss = list(fss) + [
|
||||||
]
|
(_("translations"), {"fields": translation_fields})
|
||||||
return fieldsets
|
]
|
||||||
|
return fss
|
||||||
|
|
||||||
if self.general_fields:
|
if self.general_fields:
|
||||||
fieldsets.append((_("general"), {"fields": self.general_fields}))
|
fieldsets.append((_("general"), {"fields": self.general_fields}))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue