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:
Egor Pavlovich Gorbunov 2025-06-23 15:33:35 +03:00
parent 2410f6dd3d
commit 080fcb2a25

View file

@ -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}))