Email roll to schools function

This commit is contained in:
John Mullins
2023-09-01 15:18:20 +10:00
parent 99530513c1
commit d051bc8beb
6 changed files with 107 additions and 10 deletions
+19 -7
View File
@@ -12,7 +12,8 @@ from django.utils.translation import gettext_lazy
from import_export.admin import ImportExportModelAdmin
from .adminClone import CloneModelAdmin
from .context_helpers import bus_roll_context, emergency_contacts_context, traveller_roll_context
from .context_helpers import bus_roll_context, emergency_contacts_context, traveller_roll_context, \
traveller_route_context
from .email_helpers import email_companies_bus_roll, render_to_pdf, email_school_roll_csv
from .models import *
@@ -33,11 +34,23 @@ class BusRollMixin:
class SchoolRollMixin:
def email_school_roll(self, request, queryset):
def export_travellers_to_csv(self, request, queryset):
traveller_list = []
for school in queryset:
if not school.email:
return HttpResponse(f"No email is set for {school.name}")
email_school_roll_csv(request, school)
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:
@@ -55,7 +68,6 @@ class TravellerRollMixin:
class ArchiveFilter(BooleanFieldListFilter):
title = gettext_lazy('Previous Years')
parameter_name = 'is_archived'
def choices(self, changelist):
@@ -258,7 +270,7 @@ class TravellerRouteAdmin(MyImportExportModelAdmin, admin.ModelAdmin):
@admin.register(School)
class SchoolAdmin(MyImportExportModelAdmin, admin.ModelAdmin, SchoolRollMixin):
list_display = ["__str__", "address", "suburb", "school_email", "phone"]
actions = ["email_school_roll"]
actions = ["export_travellers_to_csv"]
def school_email(self, obj):
return format_html('<a href="mailto:{}">{}</a>', obj.email, obj.email)