From ab2286858458350095e81cedb77b98c52094f305 Mon Sep 17 00:00:00 2001 From: John Mullins Date: Tue, 29 Aug 2023 16:17:04 +1000 Subject: [PATCH] Moved emergency contacts view to pdf view --- busManager/coord/context_helpers.py | 44 +++++++++++++++++++++++++++-- busManager/coord/models.py | 2 +- busManager/coord/views.py | 38 +++---------------------- 3 files changed, 47 insertions(+), 37 deletions(-) diff --git a/busManager/coord/context_helpers.py b/busManager/coord/context_helpers.py index d62f85c..6dfd2f6 100644 --- a/busManager/coord/context_helpers.py +++ b/busManager/coord/context_helpers.py @@ -1,4 +1,4 @@ -from coord.models import Bus, BusStop, TravellerRoute +from coord.models import Bus, BusStop, TravellerRoute, Driver def bus_roll_context(queryset=None): @@ -10,7 +10,6 @@ def bus_roll_context(queryset=None): for bus in buses: bus_route = [] - for bus_stop in BusStop.objects.filter(bus=bus): traveller_list = [] for trav_route in TravellerRoute.objects.filter(busStop=bus_stop): @@ -38,3 +37,44 @@ def bus_roll_context(queryset=None): bus_routes.append({'bus': bus, 'stops': bus_route}) return {'routes': bus_routes} + + +def emergency_contacts_context(queryset=None): + if queryset is None: + buses = Bus.objects.all() + else: + buses = queryset + + bus_routes = [] + for bus in buses: + drivers = [] + for driver in Driver.objects.filter(bus=bus): + drivers.append(driver) + traveller_list = [] + for travellerRoute in TravellerRoute.objects.filter(busStop__bus=bus): + traveller = travellerRoute.traveller + if not traveller.is_active(): + continue + parent_a = "" + if travellerRoute.traveller.parent_A_firstname: + parent_a = f"{traveller.parent_A_firstname} {traveller.parent_A_lastname} ({traveller.parent_A_phone})" + parent_b = "" + if travellerRoute.traveller.parent_B_firstname: + parent_b = f"{traveller.parent_B_firstname} {traveller.parent_B_lastname} ({traveller.parent_B_phone})" + contact_a = "" + if travellerRoute.traveller.emergency_contact_A_firstname: + contact_a = f"{traveller.emergency_contact_A_firstname} {traveller.emergency_contact_A_lastname} ({traveller.emergency_contact_A_phone})" + contact_b = "" + if travellerRoute.traveller.emergency_contact_B_firstname: + contact_b = f"{traveller.emergency_contact_B_firstname} {traveller.emergency_contact_B_lastname} ({traveller.emergency_contact_B_phone})" + traveller_list.append({ + 'traveller': traveller, + 'parent_a': parent_a, + 'parent_b': parent_b, + 'contact_a': contact_a, + 'contact_b': contact_b, + 'note': travellerRoute.notes + }) + bus_routes.append({'bus': bus, 'drivers': drivers, 'travellers': traveller_list}) + + return {'routes': bus_routes} diff --git a/busManager/coord/models.py b/busManager/coord/models.py index 7e3152a..a8df5bd 100644 --- a/busManager/coord/models.py +++ b/busManager/coord/models.py @@ -120,7 +120,7 @@ class Driver(models.Model): ordering = ["last_name"] def __str__(self): - return f"{self.first_name} {self.last_name} - {self.bus.route_name}" + return f"{self.first_name} {self.last_name}" class BusStop(models.Model): diff --git a/busManager/coord/views.py b/busManager/coord/views.py index ed5d537..721ef41 100644 --- a/busManager/coord/views.py +++ b/busManager/coord/views.py @@ -2,7 +2,8 @@ from django.contrib.admin.views.decorators import staff_member_required from django.shortcuts import render from django.views.generic import ListView -from .context_helpers import bus_roll_context +from .context_helpers import bus_roll_context, emergency_contacts_context +from .email_helpers import render_to_pdf from .models import Company, Bus, Traveller, BusStop, TravellerRoute, Shuttle, Driver @@ -73,39 +74,8 @@ def bus_summary(request, queryset=None): @staff_member_required def emergency_contacts(request, queryset=None): - if queryset is None: - buses = Bus.objects.all() - else: - buses = queryset - - bus_routes = [] - for bus in buses: - traveller_list = [] - for travellerRoute in TravellerRoute.objects.filter(busStop__bus=bus): - traveller = travellerRoute.traveller - parent_a = "" - if travellerRoute.traveller.parent_A_firstname: - parent_a = f"{traveller.parent_A_firstname} {traveller.parent_A_lastname} ({traveller.parent_A_phone})" - parent_b = "" - if travellerRoute.traveller.parent_B_firstname: - parent_b = f"{traveller.parent_B_firstname} {traveller.parent_B_lastname} ({traveller.parent_B_phone})" - contact_a = "" - if travellerRoute.traveller.emergency_contact_A_firstname: - contact_a = f"{traveller.emergency_contact_A_firstname} {traveller.emergency_contact_A_lastname} ({traveller.emergency_contact_A_phone})" - contact_b = "" - if travellerRoute.traveller.emergency_contact_B_firstname: - contact_b = f"{traveller.emergency_contact_B_firstname} {traveller.emergency_contact_B_lastname} ({traveller.emergency_contact_B_phone})" - traveller_list.append({ - 'traveller': traveller, - 'parent_a': parent_a, - 'parent_b': parent_b, - 'contact_a': contact_a, - 'contact_b': contact_b, - 'note': travellerRoute.notes - }) - bus_routes.append({'bus': bus, 'travellers': traveller_list}) - - return render(request, 'reports/emergency_contacts.html', {'routes': bus_routes}) + pdf = render_to_pdf('reports/emergency_contacts.html', emergency_contacts_context(queryset)) + return pdf @staff_member_required