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.
This commit is contained in:
Egor Pavlovich Gorbunov 2025-06-22 16:57:54 +03:00
parent 0079998ed7
commit 437f3cff31

View file

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