Features: 1) Add ActivationActionsMixin functionality to admin classes for streamlined activation/deactivation actions; 2) Utilize @register decorator for model admin classes across apps for cleaner registration.
Fixes: 1) Correct use of `@action` decorator within `ActivationActionsMixin` for defining admin actions; 2) Remove unused `BasicModelAdmin` inheritance from multiple admin classes. Extra: Refactor and simplify admin imports and site registration for better readability and maintainability.
This commit is contained in:
parent
9e2bf380dd
commit
19c0ca377a
4 changed files with 43 additions and 48 deletions
|
|
@ -1,13 +1,13 @@
|
||||||
from django.contrib import admin
|
from django.contrib.admin import ModelAdmin, register
|
||||||
from django_summernote.admin import SummernoteModelAdminMixin
|
from django_summernote.admin import SummernoteModelAdminMixin
|
||||||
|
|
||||||
from core.admin import BasicModelAdmin, FieldsetsMixin
|
from core.admin import ActivationActionsMixin, FieldsetsMixin
|
||||||
|
|
||||||
from .models import Post, PostTag
|
from .models import Post, PostTag
|
||||||
|
|
||||||
|
|
||||||
@admin.register(Post)
|
@register(Post)
|
||||||
class PostAdmin(SummernoteModelAdminMixin, FieldsetsMixin, BasicModelAdmin):
|
class PostAdmin(SummernoteModelAdminMixin, FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
list_display = ("title", "author", "slug", "created", "modified")
|
list_display = ("title", "author", "slug", "created", "modified")
|
||||||
list_filter = ("author", "tags", "created", "modified")
|
list_filter = ("author", "tags", "created", "modified")
|
||||||
search_fields = ("title", "content", "slug")
|
search_fields = ("title", "content", "slug")
|
||||||
|
|
@ -33,8 +33,8 @@ class PostAdmin(SummernoteModelAdminMixin, FieldsetsMixin, BasicModelAdmin):
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
@admin.register(PostTag)
|
@register(PostTag)
|
||||||
class PostTagAdmin(admin.ModelAdmin):
|
class PostTagAdmin(ModelAdmin):
|
||||||
list_display = ("tag_name", "name")
|
list_display = ("tag_name", "name")
|
||||||
search_fields = ("tag_name", "name")
|
search_fields = ("tag_name", "name")
|
||||||
ordering = ("tag_name",)
|
ordering = ("tag_name",)
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,7 @@ from constance.admin import Config
|
||||||
from constance.admin import ConstanceAdmin as BaseConstanceAdmin
|
from constance.admin import ConstanceAdmin as BaseConstanceAdmin
|
||||||
from dalf.admin import DALFModelAdmin, DALFRelatedFieldAjax, DALFRelatedOnlyField
|
from dalf.admin import DALFModelAdmin, DALFRelatedFieldAjax, DALFRelatedOnlyField
|
||||||
from django.apps import apps
|
from django.apps import apps
|
||||||
from django.contrib import admin
|
from django.contrib.admin import ModelAdmin, TabularInline, action, register, site
|
||||||
from django.contrib.admin import ModelAdmin, TabularInline
|
|
||||||
from django.contrib.gis.admin import GISModelAdmin
|
from django.contrib.gis.admin import GISModelAdmin
|
||||||
from django.db.models import Model
|
from django.db.models import Model
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
@ -85,14 +84,14 @@ class FieldsetsMixin:
|
||||||
|
|
||||||
|
|
||||||
class ActivationActionsMixin:
|
class ActivationActionsMixin:
|
||||||
@admin.action(description=str(_("activate selected %(verbose_name_plural)s")))
|
@action(description=str(_("activate selected %(verbose_name_plural)s")))
|
||||||
def activate_selected(self, request, queryset) -> str:
|
def activate_selected(self, request, queryset) -> str:
|
||||||
if request:
|
if request:
|
||||||
pass
|
pass
|
||||||
queryset.update(is_active=True)
|
queryset.update(is_active=True)
|
||||||
return str(_("%(verbose_name_plural)s activated successfully!"))
|
return str(_("%(verbose_name_plural)s activated successfully!"))
|
||||||
|
|
||||||
@admin.action(description=str(_("deactivate selected %(verbose_name_plural)s")))
|
@action(description=str(_("deactivate selected %(verbose_name_plural)s")))
|
||||||
def deactivate_selected(self, request, queryset) -> str:
|
def deactivate_selected(self, request, queryset) -> str:
|
||||||
if request:
|
if request:
|
||||||
pass
|
pass
|
||||||
|
|
@ -167,7 +166,7 @@ class CategoryChildrenInline(TabularInline):
|
||||||
icon = "fa-solid fa-leaf"
|
icon = "fa-solid fa-leaf"
|
||||||
|
|
||||||
|
|
||||||
@admin.register(AttributeGroup)
|
@register(AttributeGroup)
|
||||||
class AttributeGroupAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
class AttributeGroupAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
model = AttributeGroup # type: ignore
|
model = AttributeGroup # type: ignore
|
||||||
list_display = ("name", "modified")
|
list_display = ("name", "modified")
|
||||||
|
|
@ -178,7 +177,7 @@ class AttributeGroupAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
relation_fields = []
|
relation_fields = []
|
||||||
|
|
||||||
|
|
||||||
@admin.register(Attribute)
|
@register(Attribute)
|
||||||
class AttributeAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
class AttributeAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
model = Attribute # type: ignore
|
model = Attribute # type: ignore
|
||||||
list_display = ("name", "group", "value_type", "modified")
|
list_display = ("name", "group", "value_type", "modified")
|
||||||
|
|
@ -191,7 +190,7 @@ class AttributeAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
relation_fields = ["group", "categories"]
|
relation_fields = ["group", "categories"]
|
||||||
|
|
||||||
|
|
||||||
@admin.register(AttributeValue)
|
@register(AttributeValue)
|
||||||
class AttributeValueAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
class AttributeValueAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
model = AttributeValue # type: ignore
|
model = AttributeValue # type: ignore
|
||||||
list_display = ("attribute", "value", "modified")
|
list_display = ("attribute", "value", "modified")
|
||||||
|
|
@ -204,7 +203,7 @@ class AttributeValueAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
relation_fields = ["attribute", "product"]
|
relation_fields = ["attribute", "product"]
|
||||||
|
|
||||||
|
|
||||||
@admin.register(Category)
|
@register(Category)
|
||||||
class CategoryAdmin(FieldsetsMixin, DraggableMPTTAdmin, ActivationActionsMixin, ModelAdmin):
|
class CategoryAdmin(FieldsetsMixin, DraggableMPTTAdmin, ActivationActionsMixin, ModelAdmin):
|
||||||
model = Category # type: ignore
|
model = Category # type: ignore
|
||||||
list_display = ("indented_title", "parent", "is_active", "modified")
|
list_display = ("indented_title", "parent", "is_active", "modified")
|
||||||
|
|
@ -219,7 +218,7 @@ class CategoryAdmin(FieldsetsMixin, DraggableMPTTAdmin, ActivationActionsMixin,
|
||||||
relation_fields = ["parent", "tags"]
|
relation_fields = ["parent", "tags"]
|
||||||
|
|
||||||
|
|
||||||
@admin.register(Brand)
|
@register(Brand)
|
||||||
class BrandAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
class BrandAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
model = Brand # type: ignore
|
model = Brand # type: ignore
|
||||||
list_display = ("name",)
|
list_display = ("name",)
|
||||||
|
|
@ -231,7 +230,7 @@ class BrandAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
relation_fields = ["small_logo", "big_logo", "categories"]
|
relation_fields = ["small_logo", "big_logo", "categories"]
|
||||||
|
|
||||||
|
|
||||||
@admin.register(Product)
|
@register(Product)
|
||||||
class ProductAdmin(FieldsetsMixin, ActivationActionsMixin, DALFModelAdmin):
|
class ProductAdmin(FieldsetsMixin, ActivationActionsMixin, DALFModelAdmin):
|
||||||
model = Product # type: ignore
|
model = Product # type: ignore
|
||||||
list_display = (
|
list_display = (
|
||||||
|
|
@ -270,7 +269,7 @@ class ProductAdmin(FieldsetsMixin, ActivationActionsMixin, DALFModelAdmin):
|
||||||
relation_fields = ["category", "brand", "tags"]
|
relation_fields = ["category", "brand", "tags"]
|
||||||
|
|
||||||
|
|
||||||
@admin.register(ProductTag)
|
@register(ProductTag)
|
||||||
class ProductTagAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
class ProductTagAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
model = ProductTag # type: ignore
|
model = ProductTag # type: ignore
|
||||||
list_display = ("tag_name",)
|
list_display = ("tag_name",)
|
||||||
|
|
@ -281,7 +280,7 @@ class ProductTagAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
relation_fields = []
|
relation_fields = []
|
||||||
|
|
||||||
|
|
||||||
@admin.register(CategoryTag)
|
@register(CategoryTag)
|
||||||
class CategoryTagAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
class CategoryTagAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
model = CategoryTag # type: ignore
|
model = CategoryTag # type: ignore
|
||||||
list_display = ("tag_name",)
|
list_display = ("tag_name",)
|
||||||
|
|
@ -292,7 +291,7 @@ class CategoryTagAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
relation_fields = []
|
relation_fields = []
|
||||||
|
|
||||||
|
|
||||||
@admin.register(Vendor)
|
@register(Vendor)
|
||||||
class VendorAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
class VendorAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
model = Vendor # type: ignore
|
model = Vendor # type: ignore
|
||||||
list_display = ("name", "markup_percent", "modified")
|
list_display = ("name", "markup_percent", "modified")
|
||||||
|
|
@ -305,7 +304,7 @@ class VendorAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
relation_fields = []
|
relation_fields = []
|
||||||
|
|
||||||
|
|
||||||
@admin.register(Feedback)
|
@register(Feedback)
|
||||||
class FeedbackAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
class FeedbackAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
model = Feedback # type: ignore
|
model = Feedback # type: ignore
|
||||||
list_display = ("order_product", "rating", "comment", "modified")
|
list_display = ("order_product", "rating", "comment", "modified")
|
||||||
|
|
@ -317,7 +316,7 @@ class FeedbackAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
relation_fields = ["order_product"]
|
relation_fields = ["order_product"]
|
||||||
|
|
||||||
|
|
||||||
@admin.register(Order)
|
@register(Order)
|
||||||
class OrderAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
class OrderAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
model = Order # type: ignore
|
model = Order # type: ignore
|
||||||
list_display = (
|
list_display = (
|
||||||
|
|
@ -345,7 +344,7 @@ class OrderAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
relation_fields = ["promo_code", "billing_address", "shipping_address"]
|
relation_fields = ["promo_code", "billing_address", "shipping_address"]
|
||||||
|
|
||||||
|
|
||||||
@admin.register(OrderProduct)
|
@register(OrderProduct)
|
||||||
class OrderProductAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
class OrderProductAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
model = OrderProduct # type: ignore
|
model = OrderProduct # type: ignore
|
||||||
list_display = ("order", "product", "quantity", "buy_price", "status", "modified")
|
list_display = ("order", "product", "quantity", "buy_price", "status", "modified")
|
||||||
|
|
@ -358,7 +357,7 @@ class OrderProductAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
relation_fields = ["order", "product"]
|
relation_fields = ["order", "product"]
|
||||||
|
|
||||||
|
|
||||||
@admin.register(PromoCode)
|
@register(PromoCode)
|
||||||
class PromoCodeAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
class PromoCodeAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
model = PromoCode # type: ignore
|
model = PromoCode # type: ignore
|
||||||
list_display = (
|
list_display = (
|
||||||
|
|
@ -386,7 +385,7 @@ class PromoCodeAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
relation_fields = ["user"]
|
relation_fields = ["user"]
|
||||||
|
|
||||||
|
|
||||||
@admin.register(Promotion)
|
@register(Promotion)
|
||||||
class PromotionAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
class PromotionAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
model = Promotion # type: ignore
|
model = Promotion # type: ignore
|
||||||
list_display = ("name", "discount_percent", "modified")
|
list_display = ("name", "discount_percent", "modified")
|
||||||
|
|
@ -398,7 +397,7 @@ class PromotionAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
relation_fields = ["products"]
|
relation_fields = ["products"]
|
||||||
|
|
||||||
|
|
||||||
@admin.register(Stock)
|
@register(Stock)
|
||||||
class StockAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
class StockAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
model = Stock # type: ignore
|
model = Stock # type: ignore
|
||||||
list_display = ("product", "vendor", "sku", "quantity", "price", "modified")
|
list_display = ("product", "vendor", "sku", "quantity", "price", "modified")
|
||||||
|
|
@ -418,7 +417,7 @@ class StockAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
relation_fields = ["product", "vendor"]
|
relation_fields = ["product", "vendor"]
|
||||||
|
|
||||||
|
|
||||||
@admin.register(Wishlist)
|
@register(Wishlist)
|
||||||
class WishlistAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
class WishlistAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
model = Wishlist # type: ignore
|
model = Wishlist # type: ignore
|
||||||
list_display = ("user", "modified")
|
list_display = ("user", "modified")
|
||||||
|
|
@ -429,7 +428,7 @@ class WishlistAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
relation_fields = ["products"]
|
relation_fields = ["products"]
|
||||||
|
|
||||||
|
|
||||||
@admin.register(ProductImage)
|
@register(ProductImage)
|
||||||
class ProductImageAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
class ProductImageAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
model = ProductImage # type: ignore
|
model = ProductImage # type: ignore
|
||||||
list_display = ("alt", "product", "priority", "modified")
|
list_display = ("alt", "product", "priority", "modified")
|
||||||
|
|
@ -442,7 +441,7 @@ class ProductImageAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin):
|
||||||
relation_fields = ["product"]
|
relation_fields = ["product"]
|
||||||
|
|
||||||
|
|
||||||
@admin.register(Address)
|
@register(Address)
|
||||||
class AddressAdmin(FieldsetsMixin, GISModelAdmin):
|
class AddressAdmin(FieldsetsMixin, GISModelAdmin):
|
||||||
model = Address # type: ignore
|
model = Address # type: ignore
|
||||||
list_display = ("street", "city", "region", "country", "user")
|
list_display = ("street", "city", "region", "country", "user")
|
||||||
|
|
@ -504,8 +503,8 @@ class ConstanceConfig:
|
||||||
_meta = Meta()
|
_meta = Meta()
|
||||||
|
|
||||||
|
|
||||||
admin.site.unregister([Config]) # type: ignore
|
site.unregister([Config]) # type: ignore
|
||||||
admin.site.register([ConstanceConfig], BaseConstanceAdmin) # type: ignore
|
site.register([ConstanceConfig], BaseConstanceAdmin) # type: ignore
|
||||||
admin.site.site_title = CONSTANCE_CONFIG["PROJECT_NAME"][0] # type: ignore
|
site.site_title = CONSTANCE_CONFIG["PROJECT_NAME"][0] # type: ignore
|
||||||
admin.site.site_header = "eVibes"
|
site.site_header = "eVibes"
|
||||||
admin.site.index_title = CONSTANCE_CONFIG["PROJECT_NAME"][0] # type: ignore
|
site.index_title = CONSTANCE_CONFIG["PROJECT_NAME"][0] # type: ignore
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
# noinspection PyUnresolvedReferences
|
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
from django.contrib.admin import ModelAdmin, register
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from core.admin import BasicModelAdmin
|
from core.admin import ActivationActionsMixin
|
||||||
from payments.forms import TransactionForm
|
from payments.forms import TransactionForm
|
||||||
from payments.models import Balance, Transaction
|
from payments.models import Balance, Transaction
|
||||||
|
|
||||||
|
|
@ -19,8 +19,8 @@ class TransactionInline(admin.TabularInline):
|
||||||
qs = super().get_queryset(request)
|
qs = super().get_queryset(request)
|
||||||
return qs.select_related("order")
|
return qs.select_related("order")
|
||||||
|
|
||||||
|
@register(Balance)
|
||||||
class BalanceAdmin(BasicModelAdmin):
|
class BalanceAdmin(ActivationActionsMixin, ModelAdmin):
|
||||||
inlines = (TransactionInline,)
|
inlines = (TransactionInline,)
|
||||||
list_display = ("user", "amount")
|
list_display = ("user", "amount")
|
||||||
search_fields = ("user__email",)
|
search_fields = ("user__email",)
|
||||||
|
|
@ -30,14 +30,10 @@ class BalanceAdmin(BasicModelAdmin):
|
||||||
qs = super().get_queryset(request)
|
qs = super().get_queryset(request)
|
||||||
return qs.prefetch_related("transactions", "user")
|
return qs.prefetch_related("transactions", "user")
|
||||||
|
|
||||||
|
@register(Transaction)
|
||||||
class TransactionAdmin(BasicModelAdmin):
|
class TransactionAdmin(ActivationActionsMixin, ModelAdmin):
|
||||||
list_display = ("balance", "amount", "currency", "payment_method", "order")
|
list_display = ("balance", "amount", "currency", "payment_method", "order")
|
||||||
search_fields = ("balance__user__email", "currency", "payment_method")
|
search_fields = ("balance__user__email", "currency", "payment_method")
|
||||||
list_filter = ("currency", "payment_method")
|
list_filter = ("currency", "payment_method")
|
||||||
ordering = ("balance",)
|
ordering = ("balance",)
|
||||||
form = TransactionForm
|
form = TransactionForm
|
||||||
|
|
||||||
|
|
||||||
admin.site.register(Balance, BalanceAdmin)
|
|
||||||
admin.site.register(Transaction, TransactionAdmin)
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ from rest_framework_simplejwt.token_blacklist.models import (
|
||||||
OutstandingToken as BaseOutstandingToken,
|
OutstandingToken as BaseOutstandingToken,
|
||||||
)
|
)
|
||||||
|
|
||||||
from core.admin import BasicModelAdmin
|
from core.admin import ActivationActionsMixin
|
||||||
from core.models import Order
|
from core.models import Order
|
||||||
from payments.models import Balance
|
from payments.models import Balance
|
||||||
from vibes_auth.forms import UserForm
|
from vibes_auth.forms import UserForm
|
||||||
|
|
@ -48,7 +48,7 @@ class OrderInline(admin.TabularInline):
|
||||||
icon = "fa-solid fa-cart-shopping"
|
icon = "fa-solid fa-cart-shopping"
|
||||||
|
|
||||||
|
|
||||||
class UserAdmin(BaseUserAdmin, BasicModelAdmin):
|
class UserAdmin(ActivationActionsMixin, BaseUserAdmin):
|
||||||
inlines = (BalanceInline, OrderInline)
|
inlines = (BalanceInline, OrderInline)
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
(None, {"fields": ("email", "password")}),
|
(None, {"fields": ("email", "password")}),
|
||||||
|
|
@ -110,15 +110,15 @@ class UserAdmin(BaseUserAdmin, BasicModelAdmin):
|
||||||
super().save_model(request, obj, form, change)
|
super().save_model(request, obj, form, change)
|
||||||
|
|
||||||
|
|
||||||
class GroupAdmin(BaseGroupAdmin, BasicModelAdmin):
|
class GroupAdmin(BaseGroupAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class BlacklistedTokenAdmin(BaseBlacklistedTokenAdmin, BasicModelAdmin):
|
class BlacklistedTokenAdmin(BaseBlacklistedTokenAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class OutstandingTokenAdmin(BaseOutstandingTokenAdmin, BasicModelAdmin):
|
class OutstandingTokenAdmin(BaseOutstandingTokenAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue