@@ -53,7 +53,7 @@ class EventAdmin(admin.ModelAdmin):
5353
5454@admin .register (EventRegistration )
5555class EventRegistrationAdmin (admin .ModelAdmin ):
56- search_fields = ["event__name" , "user__email" , "order_id" ]
56+ search_fields = ["event__name" , "user__email" , "order_id" , "client_txn_id" ]
5757 list_display = [
5858 "registration_number" ,
5959 "event" ,
@@ -62,17 +62,93 @@ class EventRegistrationAdmin(admin.ModelAdmin):
6262 "datetime" ,
6363 "amount" ,
6464 "payment_status" ,
65- "order_id"
65+ "order_id" ,
66+ "payment_date_time" ,
6667 ]
6768 list_filter = ["event__name" , "payment_status" ]
68- readonly_fields = ["datetime" , "form_responses" ]
69+ readonly_fields = [
70+ "datetime" ,
71+ "form_responses" ,
72+ "payment_status" ,
73+ "order_id" ,
74+ "client_txn_id" ,
75+ "payment_date_time" ,
76+ "payment_data" ,
77+ "get_payment_details"
78+ ]
79+
80+ fieldsets = [
81+ (None , {
82+ 'fields' : [
83+ "event" ,
84+ "user" ,
85+ "datetime" ,
86+ "amount" ,
87+ "form_responses" ,
88+ ]
89+ }),
90+ ('Payment Information' , {
91+ 'fields' : [
92+ "payment_status" ,
93+ "order_id" ,
94+ "client_txn_id" ,
95+ "payment_date_time" ,
96+ ],
97+ 'classes' : ['collapse' ]
98+ }),
99+ ('Payment Diagnostic Data' , {
100+ 'fields' : [
101+ "get_payment_details" ,
102+ ],
103+ 'classes' : ['collapse' ],
104+ 'description' : 'Detailed payment transaction data from UPI gateway'
105+ })
106+ ]
69107
70108 def has_add_permission (self , request ):
71- return False # Registrations should only be created through the website
109+ return False
72110
73111 def get_queryset (self , request ):
74112 return super ().get_queryset (request ).select_related ('event' , 'user' )
75113
76114 def registration_number (self , obj ):
77- return f"# { obj .id } "
115+ return obj .registration_number
78116 registration_number .short_description = "Registration No."
117+
118+ def get_payment_details (self , obj ):
119+ if not obj .payment_data :
120+ return "No payment data available"
121+
122+ # Format payment data for display
123+ details = []
124+ if obj .payment_data .get ('customer_vpa' ):
125+ details .append (f"Customer UPI: { obj .payment_data ['customer_vpa' ]} " )
126+ if obj .payment_data .get ('upi_txn_id' ):
127+ details .append (f"UPI Transaction ID: { obj .payment_data ['upi_txn_id' ]} " )
128+ if obj .payment_data .get ('status' ):
129+ details .append (f"Status: { obj .payment_data ['status' ]} " )
130+ if obj .payment_data .get ('remark' ):
131+ details .append (f"Remark: { obj .payment_data ['remark' ]} " )
132+ if obj .payment_data .get ('txnAt' ):
133+ details .append (f"Transaction Time: { obj .payment_data ['txnAt' ]} " )
134+
135+ # Merchant details
136+ merchant = obj .payment_data .get ('merchant' , {})
137+ if merchant :
138+ details .append ("Merchant Details:" )
139+ if merchant .get ('name' ):
140+ details .append (f" - Name: { merchant ['name' ]} " )
141+ if merchant .get ('upi_id' ):
142+ details .append (f" - UPI ID: { merchant ['upi_id' ]} " )
143+
144+ # User defined fields
145+ for i in range (1 , 4 ):
146+ udf = obj .payment_data .get (f'udf{ i } ' )
147+ if udf :
148+ details .append (f"UDF{ i } : { udf } " )
149+
150+ if obj .payment_data .get ('createdAt' ):
151+ details .append (f"Created At: { obj .payment_data ['createdAt' ]} " )
152+
153+ return "\n " .join (details )
154+ get_payment_details .short_description = "Payment Details"
0 commit comments