From af2f47b7f9bce606fb2aed50fcf97d692e0cada9 Mon Sep 17 00:00:00 2001 From: John Mullins Date: Tue, 18 Feb 2025 15:40:38 +1100 Subject: [PATCH] Added function to email schools shuttle rolls. --- busManager/coord/admin.py | 8 ++++++-- busManager/coord/email_helpers.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/busManager/coord/admin.py b/busManager/coord/admin.py index 234ee17..a19a989 100644 --- a/busManager/coord/admin.py +++ b/busManager/coord/admin.py @@ -13,7 +13,7 @@ from rangefilter.filters import DateRangeFilterBuilder from .adminClone import CloneModelAdmin from .context_helpers import * from .email_helpers import email_companies_bus_roll, render_to_pdf, email_school_roll, \ - email_companies_emergency_contacts + email_companies_emergency_contacts, email_school_shuttle_roll from .forms import roll_date_selector from .models import * from .utils.send_sms import send_sms @@ -62,6 +62,10 @@ class ShuttleRollMixin: buses.append(shuttle.bus) return render_to_pdf('reports/bus_roll.html', bus_roll_context(buses, include_bus_stops=False)) + def email_shuttle_roll(self, request, queryset): + return email_school_shuttle_roll(request, queryset) + + class SchoolRollMixin: @@ -295,7 +299,7 @@ class SettingAdmin(MyImportExportModelAdmin, admin.ModelAdmin): @admin.register(Shuttle) class ShuttleAdmin(MyImportExportModelAdmin, admin.ModelAdmin, ShuttleRollMixin): list_display = ["__str__", "school", "bus", "shuttle_travellers"] - actions = ["show_shuttle_roll"] + actions = ["show_shuttle_roll", "email_shuttle_roll"] def shuttle_travellers(self, obj): url = ( diff --git a/busManager/coord/email_helpers.py b/busManager/coord/email_helpers.py index c32a1c5..bf30a71 100644 --- a/busManager/coord/email_helpers.py +++ b/busManager/coord/email_helpers.py @@ -106,3 +106,31 @@ def email_school_roll(request, query_set): email.send(fail_silently=True) return render_to_pdf(html_template, context) + + +def email_school_shuttle_roll(request, queryset): + html_template = 'reports/bus_roll.html' + + schools = [] + for shuttle in queryset: + if shuttle.school not in schools: + schools.append(shuttle.school) + for school in schools: + buses = [] + for shuttle in queryset: + if shuttle.school == school: + buses.append(shuttle.bus) + pdf = render_to_pdf(html_template, bus_roll_context(buses, include_bus_stops=False)) + + subject = "Echuca Schools Shuttle Roll" + message = f"A new shuttle roll for {school.name} has been generated" + email_from = "bus.manager@education.vic.gov.au" + recipient = [school.email] + email = EmailMessage(subject, message, email_from, recipient, _getBCC(request)) + email.attach(f"school_shuttle_roll_{date.today()}.pdf", pdf.content) + email.send(fail_silently=True) + buses = [] + for shuttle in queryset: + if shuttle.bus not in buses: + buses.append(shuttle.bus) + return render_to_pdf(html_template, bus_roll_context(buses, include_bus_stops=False))