Skip to content

Commit 3b87b57

Browse files
committed
add action to clean short rebate
1 parent c23f2de commit 3b87b57

1 file changed

Lines changed: 36 additions & 2 deletions

File tree

home/admin.py

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -466,9 +466,15 @@ def get_queryset(self, request: HttpRequest):
466466

467467
@admin.display(description="name")
468468
def name(self, obj):
469-
return obj.email.name
469+
return getattr(obj.email, "name", None)
470470

471-
actions = ["export_as_csv", "disapprove", "approve", "export_rebate_total"]
471+
actions = [
472+
"export_as_csv",
473+
"disapprove",
474+
"approve",
475+
"export_rebate_total",
476+
"find_overlapping_records",
477+
]
472478

473479
@admin.action(description="Disapprove the students")
474480
def disapprove(self, request, queryset):
@@ -501,6 +507,8 @@ def export_as_csv(self, request, queryset):
501507
def export_rebate_total(modeladmin, request, queryset):
502508
total_days = 0
503509
for obj in queryset:
510+
if obj.start_date > obj.end_date:
511+
continue
504512
total_days += (obj.end_date - obj.start_date).days + 1
505513

506514
# Create the HttpResponse object with the appropriate CSV header.
@@ -513,6 +521,32 @@ def export_rebate_total(modeladmin, request, queryset):
513521

514522
return response
515523

524+
def find_overlapping_records(self, request, queryset):
525+
response = HttpResponse(content_type="text/csv")
526+
response["Content-Disposition"] = 'attachment; filename="Rebate.csv"'
527+
528+
writer = csv.writer(response)
529+
for obj in queryset:
530+
if obj.start_date > obj.end_date:
531+
obj.delete()
532+
rebates = (
533+
Rebate.objects.filter(email=obj.email)
534+
.filter(start_date__lte=obj.end_date)
535+
.filter(end_date__gte=obj.start_date)
536+
.exclude(pk=obj.pk)
537+
)
538+
for rebate in rebates:
539+
writer.writerow(
540+
[
541+
rebate.email,
542+
rebate.start_date,
543+
rebate.end_date,
544+
getattr(rebate.email, "name", None),
545+
]
546+
)
547+
548+
return response
549+
516550
export_as_csv.short_description = "Export Rebate details to CSV"
517551

518552

0 commit comments

Comments
 (0)