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