84 lines
2.8 KiB
Python
84 lines
2.8 KiB
Python
from django.contrib import admin
|
|
|
|
from import_export.admin import ImportExportModelAdmin
|
|
|
|
from utils.admin import SoftDeleteListFilter, BaseModelAdmin
|
|
from payments.resources import DiscountResource, PaymentResource
|
|
from payments.models import Payment, DiscountCode
|
|
|
|
|
|
@admin.register(DiscountCode)
|
|
class DiscountCodeAdmin(BaseModelAdmin, ImportExportModelAdmin):
|
|
resource_class = DiscountResource
|
|
|
|
list_display = (
|
|
'code', 'type', 'value', 'is_active', 'starts_at', 'ends_at',
|
|
'usage_limit_total', 'usage_limit_per_user', 'min_amount', 'is_deleted'
|
|
)
|
|
list_filter = (
|
|
'type', 'is_active', 'starts_at', 'ends_at', 'applicable_events',
|
|
SoftDeleteListFilter,
|
|
)
|
|
search_fields = ('code', )
|
|
readonly_fields = ('id', 'deleted_at', 'created_at', 'updated_at')
|
|
|
|
fieldsets = (
|
|
('Discount Code Details', {
|
|
'fields': ('code', 'type', 'value', 'applicable_events', 'is_active')
|
|
}),
|
|
('Limitations', {
|
|
'fields': ('starts_at', 'ends_at', 'usage_limit_total', 'usage_limit_per_user', 'min_amount')
|
|
}),
|
|
('Soft Delete', {
|
|
'fields': ('is_deleted', 'deleted_at'),
|
|
'classes': ('collapse',)
|
|
}),
|
|
)
|
|
|
|
readonly_fields = ('deleted_at', )
|
|
|
|
actions = BaseModelAdmin.actions + [
|
|
'deactivate_codes',
|
|
]
|
|
|
|
@admin.action(description="Deactivate selected discount codes")
|
|
def deactivate_codes(self, request, queryset):
|
|
queryset.update(is_active=False)
|
|
self.message_user(request, f"Deactivate {queryset.count()} discount codes.")
|
|
|
|
@admin.register(Payment)
|
|
class PaymentAdmin(BaseModelAdmin, ImportExportModelAdmin):
|
|
resource_class = PaymentResource
|
|
|
|
list_display = (
|
|
'id', 'user', 'event', 'base_amount', 'discount_code', 'discount_amount', 'amount',
|
|
'status', 'created_at', 'verified_at', 'is_deleted'
|
|
)
|
|
list_filter = (
|
|
'status', 'event',
|
|
SoftDeleteListFilter,
|
|
)
|
|
search_fields = (
|
|
'user__email', 'authority', 'ref_id', 'discount_code__code'
|
|
)
|
|
readonly_fields = (
|
|
'user', 'event', 'base_amount', 'discount_code', 'discount_code', 'discount_amount', 'amount', 'authority',
|
|
'status', 'ref_id', 'card_pan', 'card_hash', 'created_at', 'updated_at', 'deleted_at'
|
|
)
|
|
|
|
fieldsets = (
|
|
('Payment Details', {
|
|
'fields': ('user', 'event', 'status', 'created_at', 'updated_at')
|
|
}),
|
|
('Price Info', {
|
|
'fields': ('base_amount', 'discount_code', 'discount_amount', 'amount')
|
|
}),
|
|
('Others', {
|
|
'fields': ('authority', 'ref_id', 'card_pan', 'card_hash')
|
|
}),
|
|
('Soft Delete', {
|
|
'fields': ('is_deleted', 'deleted_at'),
|
|
'classes': ('collapse',)
|
|
}),
|
|
)
|