From 437f3cff3163c150aee2bd7cb1d0de3be36f917e Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Sun, 22 Jun 2025 16:57:54 +0300 Subject: [PATCH] Features: 1) Simplify `FieldsetsMixin` class by including translation handling method inline; 2) Improve icon consistency with updated replacements in ModelAdmin classes. Fixes: 1) Add missing `# type: ignore` comments for type-checking in admin site customizations. Extra: 1) Refactor admin models by removing `TranslationFieldsetMixin` usage; 2) Streamline translation fieldset injection logic; 3) Code cleanup and minor comment adjustments. --- core/admin.py | 61 +++++++++++++++++++++++---------------------------- 1 file changed, 28 insertions(+), 33 deletions(-) diff --git a/core/admin.py b/core/admin.py index f78c655c..70a1c3e1 100644 --- a/core/admin.py +++ b/core/admin.py @@ -35,22 +35,6 @@ from .models import ( ) -class TranslationFieldsetMixin: - model: Model - - def get_fieldsets(self, request, obj=None): - fieldsets = super().get_fieldsets(request, obj) - 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 - - class FieldsetsMixin: general_fields: list = [] relation_fields: list = [] @@ -58,6 +42,18 @@ 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 + if self.general_fields: fieldsets.append((_("general"), {"fields": self.general_fields})) if self.relation_fields: @@ -71,6 +67,7 @@ class FieldsetsMixin: ts.append(name) if ts: fieldsets.append((_("timestamps"), {"fields": ts, "classes": ["collapse"]})) + fieldsets = add_translations_fieldset(fieldsets) return fieldsets @@ -107,7 +104,7 @@ class AttributeValueInline(TabularInline): is_navtab = True verbose_name = _("attribute value") verbose_name_plural = _("attribute values") - icon = "fa-regular fa-circle-dot" + icon = "fa-solid fa-list-ul" class ProductImageInline(TabularInline): @@ -125,7 +122,7 @@ class StockInline(TabularInline): is_navtab = True verbose_name = _("stock") verbose_name_plural = _("stocks") - icon = "fa-regular fa-boxes-stacked" + icon = "fa-solid fa-boxes-stacked" class OrderProductInline(TabularInline): @@ -159,7 +156,7 @@ class CategoryChildrenInline(TabularInline): @admin.register(AttributeGroup) -class AttributeGroupAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin): +class AttributeGroupAdmin(FieldsetsMixin, BasicModelAdmin): model = AttributeGroup # type: ignore list_display = ("name", "modified") search_fields = ("uuid", "name") @@ -170,7 +167,7 @@ class AttributeGroupAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAd @admin.register(Attribute) -class AttributeAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin): +class AttributeAdmin(FieldsetsMixin, BasicModelAdmin): model = Attribute # type: ignore list_display = ("name", "group", "value_type", "modified") list_filter = ("value_type", "group", "is_active") @@ -183,7 +180,7 @@ class AttributeAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin): @admin.register(AttributeValue) -class AttributeValueAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin): +class AttributeValueAdmin(FieldsetsMixin, BasicModelAdmin): model = AttributeValue # type: ignore list_display = ("attribute", "value", "modified") list_filter = ("attribute__group", "is_active") @@ -196,9 +193,7 @@ class AttributeValueAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAd @admin.register(Category) -class CategoryAdmin( - FieldsetsMixin, TranslationFieldsetMixin, DraggableMPTTAdmin, BasicModelAdmin -): +class CategoryAdmin(FieldsetsMixin, DraggableMPTTAdmin, BasicModelAdmin): model = Category # type: ignore list_display = ("indented_title", "parent", "is_active", "modified") list_filter = ("is_active", "level", "created", "modified") @@ -212,7 +207,7 @@ class CategoryAdmin( @admin.register(Brand) -class BrandAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin): +class BrandAdmin(FieldsetsMixin, BasicModelAdmin): model = Brand # type: ignore list_display = ("name",) list_filter = ("categories", "is_active") @@ -224,7 +219,7 @@ class BrandAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin): @admin.register(Product) -class ProductAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin): +class ProductAdmin(FieldsetsMixin, BasicModelAdmin): model = Product # type: ignore list_display = ( "name", @@ -261,7 +256,7 @@ class ProductAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin): @admin.register(ProductTag) -class ProductTagAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin): +class ProductTagAdmin(FieldsetsMixin, BasicModelAdmin): model = ProductTag # type: ignore list_display = ("tag_name",) search_fields = ("tag_name",) @@ -272,7 +267,7 @@ class ProductTagAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin) @admin.register(CategoryTag) -class CategoryTagAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin): +class CategoryTagAdmin(FieldsetsMixin, BasicModelAdmin): model = CategoryTag # type: ignore list_display = ("tag_name",) search_fields = ("tag_name",) @@ -296,7 +291,7 @@ class VendorAdmin(FieldsetsMixin, BasicModelAdmin): @admin.register(Feedback) -class FeedbackAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin): +class FeedbackAdmin(FieldsetsMixin, BasicModelAdmin): model = Feedback # type: ignore list_display = ("order_product", "rating", "comment", "modified") list_filter = ("rating", "is_active") @@ -368,7 +363,7 @@ class PromoCodeAdmin(FieldsetsMixin, BasicModelAdmin): @admin.register(Promotion) -class PromotionAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin): +class PromotionAdmin(FieldsetsMixin, BasicModelAdmin): model = Promotion # type: ignore list_display = ("name", "discount_percent", "modified") search_fields = ("name",) @@ -404,7 +399,7 @@ class WishlistAdmin(FieldsetsMixin, BasicModelAdmin): @admin.register(ProductImage) -class ProductImageAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin): +class ProductImageAdmin(FieldsetsMixin, BasicModelAdmin): model = ProductImage # type: ignore list_display = ("alt", "product", "priority", "modified") list_filter = ("priority",) @@ -479,6 +474,6 @@ class ConstanceConfig: admin.site.unregister([Config]) # type: ignore admin.site.register([ConstanceConfig], BaseConstanceAdmin) # type: ignore -admin.site.site_title = CONSTANCE_CONFIG["PROJECT_NAME"][0] +admin.site.site_title = CONSTANCE_CONFIG["PROJECT_NAME"][0] # type: ignore admin.site.site_header = "eVibes" -admin.site.index_title = CONSTANCE_CONFIG["PROJECT_NAME"][0] +admin.site.index_title = CONSTANCE_CONFIG["PROJECT_NAME"][0] # type: ignore