File size: 2,696 Bytes
c68b343
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
from django.contrib import admin

from django.contrib import admin
from .models import (
    Cart,
    CartItem,
    PaymentOrder,
    Order,
    OrderItem,
    Payment,
    Transaction,
)

# =========================
# CART
# =========================

class CartItemInline(admin.TabularInline):
    model = CartItem
    extra = 0
    readonly_fields = ("product", "quantity")


@admin.register(Cart)
class CartAdmin(admin.ModelAdmin):
    list_display = ("id", "user", "is_active", "created_at")
    list_filter = ("is_active", "created_at")
    search_fields = ("user__email", "user__username")
    readonly_fields = ("created_at",)
    inlines = [CartItemInline]


# =========================
# MASTER PAYMENT ORDER
# =========================

@admin.register(PaymentOrder)
class PaymentOrderAdmin(admin.ModelAdmin):
    list_display = (
        "id",
        "order_type",
        "user",
        "amount",
        "status",
        "razorpay_order_id",
        "created_at",
    )
    list_filter = ("order_type", "status", "created_at")
    search_fields = ("razorpay_order_id", "user__email", "user__username")
    readonly_fields = ("created_at",)


# =========================
# PRODUCT ORDER
# =========================

class OrderItemInline(admin.TabularInline):
    model = OrderItem
    extra = 0
    readonly_fields = (
        "product_name",
        "price",
        "quantity",
        "weight_kg",
    )


@admin.register(Order)
class OrderAdmin(admin.ModelAdmin):
    list_display = (
        "id",
        "full_name",
        "email",
        "phone",
        "status",
        "total_amount",
        "created_at",
    )
    list_filter = ("status", "created_at", "city")
    search_fields = ("full_name", "email", "phone")
    readonly_fields = ("created_at",)
    inlines = [OrderItemInline]


# =========================
# PAYMENT
# =========================

class TransactionInline(admin.TabularInline):
    model = Transaction
    extra = 0
    readonly_fields = ("event", "response", "created_at")


@admin.register(Payment)
class PaymentAdmin(admin.ModelAdmin):
    list_display = (
        "id",
        "payment_order",
        "razorpay_payment_id",
        "status",
        "created_at",
    )
    list_filter = ("status", "created_at")
    search_fields = ("razorpay_payment_id",)
    readonly_fields = ("created_at",)
    inlines = [TransactionInline]


# =========================
# TRANSACTIONS
# =========================

@admin.register(Transaction)
class TransactionAdmin(admin.ModelAdmin):
    list_display = ("id", "payment", "event", "created_at")
    list_filter = ("event", "created_at")
    readonly_fields = ("event", "response", "created_at")