From 080fcb2a2571398a99bf9ec29be12497b913efd3 Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Mon, 23 Jun 2025 15:33:35 +0300 Subject: [PATCH] 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; --- core/admin.py | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/core/admin.py b/core/admin.py index c4e9bc18..f6d94544 100644 --- a/core/admin.py +++ b/core/admin.py @@ -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) - translation_fields = [] - for orig in opts.local_fields: - translation_fields += get_translation_fields(orig) - if translation_fields: - fieldsets = list(fieldsets) + [ - (_("translations"), {"fields": translation_fields}) - ] - return fieldsets + def add_translations_fieldset(fss): + with suppress(NotRegistered): + transoptions = translator.get_options_for_model(self.model) + translation_fields = [] + for orig in transoptions.local_fields: + translation_fields += get_translation_fields(orig) + if translation_fields: + fss = list(fss) + [ + (_("translations"), {"fields": translation_fields}) + ] + return fss if self.general_fields: fieldsets.append((_("general"), {"fields": self.general_fields}))