b695dd8054
Moved helpers and views to their respective new apps
60 lines
2.2 KiB
Python
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 |