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 ConstanceAdmin as BaseConstanceAdmin
|
||||
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.db.models import Model
|
||||
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 mptt.admin import DraggableMPTTAdmin
|
||||
|
||||
|
|
@ -43,16 +45,17 @@ class FieldsetsMixin:
|
|||
def get_fieldsets(self, request, obj=None):
|
||||
fieldsets = []
|
||||
|
||||
def add_translations_fieldset(fieldsets):
|
||||
opts = translator.get_options_for_model(self.model)
|
||||
def add_translations_fieldset(fss):
|
||||
with suppress(NotRegistered):
|
||||
transoptions = translator.get_options_for_model(self.model)
|
||||
translation_fields = []
|
||||
for orig in opts.local_fields:
|
||||
for orig in transoptions.local_fields:
|
||||
translation_fields += get_translation_fields(orig)
|
||||
if translation_fields:
|
||||
fieldsets = list(fieldsets) + [
|
||||
fss = list(fss) + [
|
||||
(_("translations"), {"fields": translation_fields})
|
||||
]
|
||||
return fieldsets
|
||||
return fss
|
||||
|
||||
if self.general_fields:
|
||||
fieldsets.append((_("general"), {"fields": self.general_fields}))
|
||||
|
|
|
|||
Loading…
Reference in a new issue