Files
hossein-por-shop/backend/order/admin.py
T
Parsa Nazer d440a3e8a6 test payment
2025-03-15 01:51:44 +03:30

59 lines
2.0 KiB
Python

from django.contrib import admin
from .models import *
from unfold.admin import TabularInline, StackedInline
from import_export.admin import ImportExportModelAdmin
from unfold.contrib.import_export.forms import ExportForm, ImportForm, SelectableFieldsExportForm
from unfold.contrib.forms.widgets import ArrayWidget, WysiwygWidget
from django.contrib.postgres.fields import ArrayField
from utils.admin import ModelAdmin
from django.utils.html import format_html, format_html_join
class OrderItemModelInline(StackedInline):
model = OrderItemModel
extra = 0
max_num = 0
def has_delete_permission(self, request, obj=None):
return False
def get_readonly_fields(self, request, obj=None):
return [field.name for field in self.model._meta.fields]
@admin.register(DiscountCode)
class DiscountCodeAdmin(ModelAdmin, ImportExportModelAdmin):
import_form_class = ImportForm
export_form_class = ExportForm
list_display = ['code', 'expiration_date', 'percent', 'quantity']
@admin.register(OrderModel)
class OrderAdmin(ModelAdmin, ImportExportModelAdmin):
import_form_class = ImportForm
export_form_class = ExportForm
list_filter = ['is_paid', 'status']
list_display = ['user', 'is_paid', 'status', 'discount_code', 'address', ]
readonly_fields = ('created_at', 'bank_links')
compressed_fields = True
warn_unsaved_form = True
exclude = ('bank_records',)
formfield_overrides = {
ArrayField: {
"widget": ArrayWidget,
}
}
inlines = [OrderItemModelInline]
def bank_links(self, obj):
banks = obj.bank_records.all()
if not banks.exists():
return "-"
return format_html_join(
"",
'<a style="padding-bottom:10px;display:block;" href="/secret-admin/azbankgateways/bank/{}/change/" class="text-primary-600 dark:text-primary-500">{}</a>',
[(bank.id, bank.tracking_code) for bank in banks]
) or "-"
bank_links.short_description = "Bank Records"