Email roll to schools function
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user