10
10
from payment .models import PaymentDiscount , PaymentRequest
11
11
from core .models import Event
12
12
13
+
13
14
# Register your models here.
14
15
15
16
class CsvImportForm (forms .Form ):
16
17
csv_file = forms .FileField ()
17
18
19
+
18
20
class PaymentDiscountAdmin (admin .ModelAdmin , ExportCSVMixin ):
19
21
search_fields = ('code' ,)
20
22
list_display = ('code' , 'percentage' , 'amount' , 'count' )
@@ -49,23 +51,33 @@ def get_urls(self):
49
51
]
50
52
return my_urls + urls
51
53
54
+
52
55
admin .site .register (PaymentDiscount , PaymentDiscountAdmin )
53
56
57
+
54
58
class DiscountCodesImportForm (forms .Form ):
55
59
file = forms .FileField ()
56
60
61
+
57
62
class PaymentRequestAdmin (admin .ModelAdmin , ExportCSVMixin ):
58
- list_display = ('participant' , 'timestamp' , 'paid' , 'discount_code ' , 'order_id' , 'base_price' , 'paid_price' )
63
+ list_display = ('participant' , 'timestamp' , 'paid' , 'discount__code ' , 'order_id' , 'base_price' , 'paid_price' )
59
64
list_filter = ('paid' , 'discount__code' )
60
65
actions = ["export_as_csv" , "calculate_discount_usage" ]
61
66
change_list_template = "payment_request_changelist.html"
67
+ search_fields = (
68
+ 'participant__user__email' ,
69
+ 'participant__info__first_name' ,
70
+ 'participant__info__last_name' ,
71
+ 'order_id' ,
72
+ 'discount__code' ,
73
+ )
62
74
63
75
def base_price (self , obj ):
64
76
return obj .get_price ()[0 ]
65
-
77
+
66
78
def paid_price (self , obj ):
67
79
return obj .get_price ()[1 ]
68
-
80
+
69
81
def discount_code (self , obj ):
70
82
return obj .discount .code if obj .discount is not None else None
71
83
@@ -88,7 +100,7 @@ def calculate_discount_usage(self, request, queryset):
88
100
89
101
for discount in discount_codes :
90
102
total_usage = queryset .filter (discount = discount ).count ()
91
-
103
+
92
104
successful_payments = queryset .filter (
93
105
discount = discount ,
94
106
paid = True
@@ -111,7 +123,7 @@ def import_discount_codes(self, request):
111
123
file = request .FILES ["file" ]
112
124
content = file .read ().decode ('utf-8' )
113
125
discount_codes = [code .strip () for code in content .split ('\n ' ) if code .strip ()]
114
-
126
+
115
127
response = HttpResponse (content_type = 'text/csv' )
116
128
response ['Content-Disposition' ] = 'attachment; filename=discount_usage_report.csv'
117
129
writer = csv .writer (response )
@@ -159,4 +171,5 @@ def get_urls(self):
159
171
]
160
172
return my_urls + urls
161
173
162
- admin .site .register (PaymentRequest , PaymentRequestAdmin )
174
+
175
+ admin .site .register (PaymentRequest , PaymentRequestAdmin )
0 commit comments