Features: 1) Add is_navtab, verbose_name, verbose_name_plural, and icon attributes to several inlines for better configuration and clarity;

Fixes: 1) Add `# type: ignore` comments to suppress type checking issues on model assignments;

Extra: 1) General code cleanup and improvements to the `admin.py` file.
This commit is contained in:
Egor Pavlovich Gorbunov 2025-06-22 16:48:50 +03:00
parent 15df6dd0c8
commit 0079998ed7

View file

@ -104,16 +104,28 @@ class AttributeValueInline(TabularInline):
model = AttributeValue
extra = 0
autocomplete_fields = ["attribute"]
is_navtab = True
verbose_name = _("attribute value")
verbose_name_plural = _("attribute values")
icon = "fa-regular fa-circle-dot"
class ProductImageInline(TabularInline):
model = ProductImage
extra = 0
is_navtab = True
verbose_name = _("image")
verbose_name_plural = _("images")
icon = "fa-regular fa-images"
class StockInline(TabularInline):
model = Stock
extra = 0
is_navtab = True
verbose_name = _("stock")
verbose_name_plural = _("stocks")
icon = "fa-regular fa-boxes-stacked"
class OrderProductInline(TabularInline):
@ -121,6 +133,10 @@ class OrderProductInline(TabularInline):
extra = 0
readonly_fields = ("product", "quantity", "buy_price")
form = OrderProductForm
is_navtab = True
verbose_name = _("order product")
verbose_name_plural = _("order products")
icon = "fa-regular fa-circle-dot"
def get_queryset(self, request):
return (
@ -136,11 +152,15 @@ class CategoryChildrenInline(TabularInline):
fk_name = "parent"
extra = 0
fields = ("name", "description", "is_active", "image", "markup_percent")
is_navtab = True
verbose_name = _("children")
verbose_name_plural = _("children")
icon = "fa-regular fa-circle-dot"
@admin.register(AttributeGroup)
class AttributeGroupAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin):
model = AttributeGroup
model = AttributeGroup # type: ignore
list_display = ("name", "modified")
search_fields = ("uuid", "name")
readonly_fields = ("uuid", "modified", "created")
@ -151,7 +171,7 @@ class AttributeGroupAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAd
@admin.register(Attribute)
class AttributeAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin):
model = Attribute
model = Attribute # type: ignore
list_display = ("name", "group", "value_type", "modified")
list_filter = ("value_type", "group", "is_active")
search_fields = ("uuid", "name", "group__name")
@ -164,7 +184,7 @@ class AttributeAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin):
@admin.register(AttributeValue)
class AttributeValueAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin):
model = AttributeValue
model = AttributeValue # type: ignore
list_display = ("attribute", "value", "modified")
list_filter = ("attribute__group", "is_active")
search_fields = ("uuid", "value", "attribute__name")
@ -179,7 +199,7 @@ class AttributeValueAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAd
class CategoryAdmin(
FieldsetsMixin, TranslationFieldsetMixin, DraggableMPTTAdmin, BasicModelAdmin
):
model = Category
model = Category # type: ignore
list_display = ("indented_title", "parent", "is_active", "modified")
list_filter = ("is_active", "level", "created", "modified")
search_fields = ("uuid", "name")
@ -193,7 +213,7 @@ class CategoryAdmin(
@admin.register(Brand)
class BrandAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin):
model = Brand
model = Brand # type: ignore
list_display = ("name",)
list_filter = ("categories", "is_active")
search_fields = ("uuid", "name", "categories__name")
@ -242,7 +262,7 @@ class ProductAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin):
@admin.register(ProductTag)
class ProductTagAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin):
model = ProductTag
model = ProductTag # type: ignore
list_display = ("tag_name",)
search_fields = ("tag_name",)
readonly_fields = ("uuid", "modified", "created")
@ -253,7 +273,7 @@ class ProductTagAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin)
@admin.register(CategoryTag)
class CategoryTagAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin):
model = CategoryTag
model = CategoryTag # type: ignore
list_display = ("tag_name",)
search_fields = ("tag_name",)
readonly_fields = ("uuid", "modified", "created")
@ -264,7 +284,7 @@ class CategoryTagAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin
@admin.register(Vendor)
class VendorAdmin(FieldsetsMixin, BasicModelAdmin):
model = Vendor
model = Vendor # type: ignore
list_display = ("name", "markup_percent", "modified")
list_filter = ("markup_percent", "is_active")
search_fields = ("name",)
@ -277,7 +297,7 @@ class VendorAdmin(FieldsetsMixin, BasicModelAdmin):
@admin.register(Feedback)
class FeedbackAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin):
model = Feedback
model = Feedback # type: ignore
list_display = ("order_product", "rating", "comment", "modified")
list_filter = ("rating", "is_active")
search_fields = ("order_product__product__name", "comment")
@ -289,7 +309,7 @@ class FeedbackAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin):
@admin.register(Order)
class OrderAdmin(FieldsetsMixin, BasicModelAdmin):
model = Order
model = Order # type: ignore
list_display = (
"human_readable_id",
"user",
@ -317,7 +337,7 @@ class OrderAdmin(FieldsetsMixin, BasicModelAdmin):
@admin.register(OrderProduct)
class OrderProductAdmin(FieldsetsMixin, BasicModelAdmin):
model = OrderProduct
model = OrderProduct # type: ignore
list_display = ("order", "product", "quantity", "buy_price", "status", "modified")
list_filter = ("status",)
search_fields = ("order__user__email", "product__name")
@ -330,7 +350,7 @@ class OrderProductAdmin(FieldsetsMixin, BasicModelAdmin):
@admin.register(PromoCode)
class PromoCodeAdmin(FieldsetsMixin, BasicModelAdmin):
model = PromoCode
model = PromoCode # type: ignore
list_display = (
"code",
"discount_percent",
@ -349,7 +369,7 @@ class PromoCodeAdmin(FieldsetsMixin, BasicModelAdmin):
@admin.register(Promotion)
class PromotionAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin):
model = Promotion
model = Promotion # type: ignore
list_display = ("name", "discount_percent", "modified")
search_fields = ("name",)
readonly_fields = ("uuid", "modified", "created")
@ -361,7 +381,7 @@ class PromotionAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin):
@admin.register(Stock)
class StockAdmin(FieldsetsMixin, BasicModelAdmin):
model = Stock
model = Stock # type: ignore
list_display = ("product", "vendor", "sku", "quantity", "price", "modified")
list_filter = ("vendor", "quantity")
search_fields = ("product__name", "vendor__name", "sku")
@ -374,7 +394,7 @@ class StockAdmin(FieldsetsMixin, BasicModelAdmin):
@admin.register(Wishlist)
class WishlistAdmin(FieldsetsMixin, BasicModelAdmin):
model = Wishlist
model = Wishlist # type: ignore
list_display = ("user", "modified")
search_fields = ("user__email",)
readonly_fields = ("uuid", "modified", "created")
@ -385,7 +405,7 @@ class WishlistAdmin(FieldsetsMixin, BasicModelAdmin):
@admin.register(ProductImage)
class ProductImageAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmin):
model = ProductImage
model = ProductImage # type: ignore
list_display = ("alt", "product", "priority", "modified")
list_filter = ("priority",)
search_fields = ("alt", "product__name")
@ -398,7 +418,7 @@ class ProductImageAdmin(FieldsetsMixin, TranslationFieldsetMixin, BasicModelAdmi
@admin.register(Address)
class AddressAdmin(FieldsetsMixin, GISModelAdmin):
model = Address
model = Address # type: ignore
list_display = ("street", "city", "region", "country", "user")
list_filter = ("country", "region")
search_fields = ("street", "city", "postal_code", "user__email")
@ -457,8 +477,8 @@ class ConstanceConfig:
_meta = Meta()
admin.site.unregister([Config])
admin.site.register([ConstanceConfig], BaseConstanceAdmin)
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_header = "eVibes"
admin.site.index_title = CONSTANCE_CONFIG["PROJECT_NAME"][0]