feat: use django-objects-actions
This commit is contained in:
@@ -1,4 +1,9 @@
|
||||
from django.contrib import admin
|
||||
from django_object_actions import (
|
||||
DjangoObjectActions,
|
||||
action,
|
||||
takes_instance_or_queryset,
|
||||
)
|
||||
from market.models import Market, MarketOption, UserBet, UserPointChange
|
||||
|
||||
|
||||
@@ -9,7 +14,7 @@ class MarketOptionInline(admin.TabularInline):
|
||||
|
||||
|
||||
@admin.register(Market)
|
||||
class MarketAdmin(admin.ModelAdmin):
|
||||
class MarketAdmin(DjangoObjectActions, admin.ModelAdmin):
|
||||
list_display = ["title", "status", "end_date", "created_by", "created_at"]
|
||||
list_filter = ["status", "created_at"]
|
||||
search_fields = ["uuid", "title"]
|
||||
@@ -39,22 +44,25 @@ class MarketAdmin(admin.ModelAdmin):
|
||||
obj.created_by = request.user
|
||||
super().save_model(request, obj, form, change)
|
||||
|
||||
@admin.action(description="Publish selected draft markets")
|
||||
actions = ["publish_markets", "close_markets"]
|
||||
change_actions = ["publish_markets", "close_markets"]
|
||||
|
||||
@action(label="Publish", description="Publish selected draft markets")
|
||||
@takes_instance_or_queryset
|
||||
def publish_markets(self, request, queryset):
|
||||
updated = queryset.filter(status=Market.Status.DRAFT).update(
|
||||
status=Market.Status.OPEN
|
||||
)
|
||||
self.message_user(request, f"Published {updated} market(s).")
|
||||
|
||||
@admin.action(description="Close selected markets")
|
||||
@action(label="Close", description="Close selected markets")
|
||||
@takes_instance_or_queryset
|
||||
def close_markets(self, request, queryset):
|
||||
updated = queryset.filter(status=Market.Status.OPEN).update(
|
||||
status=Market.Status.CLOSED
|
||||
)
|
||||
self.message_user(request, f"Closed {updated} market(s).")
|
||||
|
||||
actions = ["publish_markets", "close_markets"]
|
||||
|
||||
|
||||
@admin.register(MarketOption)
|
||||
class MarketOptionAdmin(admin.ModelAdmin):
|
||||
|
||||
Reference in New Issue
Block a user