Features: 1) Introduced ActivationActionsMixin to centralize activation-related admin actions; 2) Integrated DALFModelAdmin for enhanced admin functionality in ProductAdmin.
Fixes: 1) Removed unused imports to reduce clutter; 2) Simplified media property in `ProductAdmin` by removing unnecessary customization logic. Extra: Refactored all admin model classes to utilize `ActivationActionsMixin` for consistency and maintainability.
This commit is contained in:
parent
1edec85c3a
commit
9e2bf380dd
1 changed files with 19 additions and 52 deletions
|
|
@ -2,13 +2,10 @@ from contextlib import suppress
|
|||
|
||||
from constance.admin import Config
|
||||
from constance.admin import ConstanceAdmin as BaseConstanceAdmin
|
||||
from dalf.admin import DALFRelatedFieldAjax, DALFRelatedOnlyField
|
||||
from django import forms
|
||||
from dalf.admin import DALFModelAdmin, DALFRelatedFieldAjax, DALFRelatedOnlyField
|
||||
from django.apps import apps
|
||||
from django.conf import settings
|
||||
from django.contrib import admin
|
||||
from django.contrib.admin import ModelAdmin, TabularInline
|
||||
from django.contrib.admin.widgets import get_select2_language
|
||||
from django.contrib.gis.admin import GISModelAdmin
|
||||
from django.db.models import Model
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
|
@ -87,7 +84,7 @@ class FieldsetsMixin:
|
|||
return fieldsets
|
||||
|
||||
|
||||
class BasicModelAdmin(ModelAdmin):
|
||||
class ActivationActionsMixin:
|
||||
@admin.action(description=str(_("activate selected %(verbose_name_plural)s")))
|
||||
def activate_selected(self, request, queryset) -> str:
|
||||
if request:
|
||||
|
|
@ -171,7 +168,7 @@ class CategoryChildrenInline(TabularInline):
|
|||
|
||||
|
||||
@admin.register(AttributeGroup)
|
||||
class AttributeGroupAdmin(FieldsetsMixin, BasicModelAdmin):
|
||||
class AttributeGroupAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||
model = AttributeGroup # type: ignore
|
||||
list_display = ("name", "modified")
|
||||
search_fields = ("uuid", "name")
|
||||
|
|
@ -182,7 +179,7 @@ class AttributeGroupAdmin(FieldsetsMixin, BasicModelAdmin):
|
|||
|
||||
|
||||
@admin.register(Attribute)
|
||||
class AttributeAdmin(FieldsetsMixin, BasicModelAdmin):
|
||||
class AttributeAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||
model = Attribute # type: ignore
|
||||
list_display = ("name", "group", "value_type", "modified")
|
||||
list_filter = ("value_type", "group", "is_active")
|
||||
|
|
@ -195,7 +192,7 @@ class AttributeAdmin(FieldsetsMixin, BasicModelAdmin):
|
|||
|
||||
|
||||
@admin.register(AttributeValue)
|
||||
class AttributeValueAdmin(FieldsetsMixin, BasicModelAdmin):
|
||||
class AttributeValueAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||
model = AttributeValue # type: ignore
|
||||
list_display = ("attribute", "value", "modified")
|
||||
list_filter = ("attribute__group", "is_active")
|
||||
|
|
@ -208,7 +205,7 @@ class AttributeValueAdmin(FieldsetsMixin, BasicModelAdmin):
|
|||
|
||||
|
||||
@admin.register(Category)
|
||||
class CategoryAdmin(FieldsetsMixin, DraggableMPTTAdmin, BasicModelAdmin):
|
||||
class CategoryAdmin(FieldsetsMixin, DraggableMPTTAdmin, ActivationActionsMixin, ModelAdmin):
|
||||
model = Category # type: ignore
|
||||
list_display = ("indented_title", "parent", "is_active", "modified")
|
||||
# noinspection PyUnresolvedReferences
|
||||
|
|
@ -223,7 +220,7 @@ class CategoryAdmin(FieldsetsMixin, DraggableMPTTAdmin, BasicModelAdmin):
|
|||
|
||||
|
||||
@admin.register(Brand)
|
||||
class BrandAdmin(FieldsetsMixin, BasicModelAdmin):
|
||||
class BrandAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||
model = Brand # type: ignore
|
||||
list_display = ("name",)
|
||||
list_filter = ("categories", "is_active")
|
||||
|
|
@ -235,7 +232,7 @@ class BrandAdmin(FieldsetsMixin, BasicModelAdmin):
|
|||
|
||||
|
||||
@admin.register(Product)
|
||||
class ProductAdmin(FieldsetsMixin, BasicModelAdmin):
|
||||
class ProductAdmin(FieldsetsMixin, ActivationActionsMixin, DALFModelAdmin):
|
||||
model = Product # type: ignore
|
||||
list_display = (
|
||||
"name",
|
||||
|
|
@ -272,39 +269,9 @@ class ProductAdmin(FieldsetsMixin, BasicModelAdmin):
|
|||
general_fields = ["is_active", "name", "partnumber", "is_digital"]
|
||||
relation_fields = ["category", "brand", "tags"]
|
||||
|
||||
@property
|
||||
def media(self):
|
||||
i18n_name = get_select2_language()
|
||||
extra = "" if settings.DEBUG else ".min"
|
||||
js = [
|
||||
f"vendor/jquery/jquery{extra}.js",
|
||||
"jquery.init.js",
|
||||
"core.js",
|
||||
"admin/RelatedObjectLookups.js",
|
||||
"actions.js",
|
||||
"urlify.js",
|
||||
"prepopulate.js",
|
||||
f"vendor/xregexp/xregexp{extra}.js",
|
||||
"vendor/jquery/jquery.min.js",
|
||||
"vendor/select2/select2.full.min.js",
|
||||
f"vendor/select2/i18n/{i18n_name}.js" if i18n_name else (),
|
||||
"jquery.init.js",
|
||||
"django_admin_list_filter.js",
|
||||
]
|
||||
return super().media + forms.Media(
|
||||
js=[f"admin/js/{url}" for url in js],
|
||||
css={
|
||||
"screen": (
|
||||
"admin/css/vendor/select2/select2.min.css",
|
||||
"admin/css/autocomplete.css",
|
||||
"admin/css/django_admin_list_filter.css",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@admin.register(ProductTag)
|
||||
class ProductTagAdmin(FieldsetsMixin, BasicModelAdmin):
|
||||
class ProductTagAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||
model = ProductTag # type: ignore
|
||||
list_display = ("tag_name",)
|
||||
search_fields = ("tag_name",)
|
||||
|
|
@ -315,7 +282,7 @@ class ProductTagAdmin(FieldsetsMixin, BasicModelAdmin):
|
|||
|
||||
|
||||
@admin.register(CategoryTag)
|
||||
class CategoryTagAdmin(FieldsetsMixin, BasicModelAdmin):
|
||||
class CategoryTagAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||
model = CategoryTag # type: ignore
|
||||
list_display = ("tag_name",)
|
||||
search_fields = ("tag_name",)
|
||||
|
|
@ -326,7 +293,7 @@ class CategoryTagAdmin(FieldsetsMixin, BasicModelAdmin):
|
|||
|
||||
|
||||
@admin.register(Vendor)
|
||||
class VendorAdmin(FieldsetsMixin, BasicModelAdmin):
|
||||
class VendorAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||
model = Vendor # type: ignore
|
||||
list_display = ("name", "markup_percent", "modified")
|
||||
list_filter = ("markup_percent", "is_active")
|
||||
|
|
@ -339,7 +306,7 @@ class VendorAdmin(FieldsetsMixin, BasicModelAdmin):
|
|||
|
||||
|
||||
@admin.register(Feedback)
|
||||
class FeedbackAdmin(FieldsetsMixin, BasicModelAdmin):
|
||||
class FeedbackAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||
model = Feedback # type: ignore
|
||||
list_display = ("order_product", "rating", "comment", "modified")
|
||||
list_filter = ("rating", "is_active")
|
||||
|
|
@ -351,7 +318,7 @@ class FeedbackAdmin(FieldsetsMixin, BasicModelAdmin):
|
|||
|
||||
|
||||
@admin.register(Order)
|
||||
class OrderAdmin(FieldsetsMixin, BasicModelAdmin):
|
||||
class OrderAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||
model = Order # type: ignore
|
||||
list_display = (
|
||||
"human_readable_id",
|
||||
|
|
@ -379,7 +346,7 @@ class OrderAdmin(FieldsetsMixin, BasicModelAdmin):
|
|||
|
||||
|
||||
@admin.register(OrderProduct)
|
||||
class OrderProductAdmin(FieldsetsMixin, BasicModelAdmin):
|
||||
class OrderProductAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||
model = OrderProduct # type: ignore
|
||||
list_display = ("order", "product", "quantity", "buy_price", "status", "modified")
|
||||
list_filter = ("status",)
|
||||
|
|
@ -392,7 +359,7 @@ class OrderProductAdmin(FieldsetsMixin, BasicModelAdmin):
|
|||
|
||||
|
||||
@admin.register(PromoCode)
|
||||
class PromoCodeAdmin(FieldsetsMixin, BasicModelAdmin):
|
||||
class PromoCodeAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||
model = PromoCode # type: ignore
|
||||
list_display = (
|
||||
"code",
|
||||
|
|
@ -420,7 +387,7 @@ class PromoCodeAdmin(FieldsetsMixin, BasicModelAdmin):
|
|||
|
||||
|
||||
@admin.register(Promotion)
|
||||
class PromotionAdmin(FieldsetsMixin, BasicModelAdmin):
|
||||
class PromotionAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||
model = Promotion # type: ignore
|
||||
list_display = ("name", "discount_percent", "modified")
|
||||
search_fields = ("name",)
|
||||
|
|
@ -432,7 +399,7 @@ class PromotionAdmin(FieldsetsMixin, BasicModelAdmin):
|
|||
|
||||
|
||||
@admin.register(Stock)
|
||||
class StockAdmin(FieldsetsMixin, BasicModelAdmin):
|
||||
class StockAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||
model = Stock # type: ignore
|
||||
list_display = ("product", "vendor", "sku", "quantity", "price", "modified")
|
||||
list_filter = ("vendor", "quantity")
|
||||
|
|
@ -452,7 +419,7 @@ class StockAdmin(FieldsetsMixin, BasicModelAdmin):
|
|||
|
||||
|
||||
@admin.register(Wishlist)
|
||||
class WishlistAdmin(FieldsetsMixin, BasicModelAdmin):
|
||||
class WishlistAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||
model = Wishlist # type: ignore
|
||||
list_display = ("user", "modified")
|
||||
search_fields = ("user__email",)
|
||||
|
|
@ -463,7 +430,7 @@ class WishlistAdmin(FieldsetsMixin, BasicModelAdmin):
|
|||
|
||||
|
||||
@admin.register(ProductImage)
|
||||
class ProductImageAdmin(FieldsetsMixin, BasicModelAdmin):
|
||||
class ProductImageAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||
model = ProductImage # type: ignore
|
||||
list_display = ("alt", "product", "priority", "modified")
|
||||
list_filter = ("priority",)
|
||||
|
|
|
|||
Loading…
Reference in a new issue