Files
bus-manager/busManager/traveller/admin_mixins.py
T
st01765 b695dd8054 Created new models to replicate out of and split coord app
Moved helpers and views to their respective new apps
2026-02-05 11:18:08 +11:00

60 lines
2.2 KiB
Python

import csv
from datetime import date
from django.http import HttpResponse
from common.documents import render_to_pdf
from messaging.services.email import email_school_roll
from messaging.services.sms import send_sms
from traveller.context_helpers import school_roll_context, traveller_route_context, confirmation_letter_context, \
traveller_roll_context
from traveller.models import TravellerRoute
class SchoolRollMixin:
def email_travellers_to_school(self, request, queryset):
return email_school_roll(request, queryset)
def show_school_travellers(self, request, queryset):
return render_to_pdf('reports/school_roll.html', school_roll_context(queryset))
def show_school_travellers_on_date(self, request, queryset):
return render_to_pdf('reports/school_roll.html', school_roll_context(queryset))
def export_travellers_to_csv(self, request, queryset):
traveller_list = []
for school in queryset:
for travellerRoute in TravellerRoute.objects.filter(traveller__school=school):
if not travellerRoute.traveller._is_active():
continue
traveller_list.append(traveller_route_context(travellerRoute))
response = HttpResponse(content_type="text/csv")
response["Content-Disposition"] = f"attachment; filename=traveller_list_{date.today()}.csv"
writer = csv.DictWriter(response, fieldnames=traveller_list[0].keys())
writer.writeheader()
writer.writerows(traveller_list)
return response
class TravellerRollMixin:
def confirmation_letter(self, request, queryset):
return render_to_pdf('mail/confirmation_letter.html', confirmation_letter_context(queryset))
def send_sms(self, request, queryset):
return send_sms(self, request, queryset)
def export_to_csv(self, request, queryset):
traveller_list = traveller_roll_context(queryset)
response = HttpResponse(content_type="text/csv")
response["Content-Disposition"] = f"attachment; filename=traveller_list_{date.today()}.csv"
writer = csv.DictWriter(response, fieldnames=traveller_list[0].keys())
writer.writeheader()
writer.writerows(traveller_list)
return response