diff --git a/busManager/coord/admin.py b/busManager/coord/admin.py index 448deea..a74f662 100644 --- a/busManager/coord/admin.py +++ b/busManager/coord/admin.py @@ -1,6 +1,7 @@ import csv from django.contrib.admin import DateFieldListFilter +from django.contrib.admin.views.decorators import staff_member_required from django.forms import widgets from django.contrib import admin from django.http import HttpResponse @@ -10,7 +11,7 @@ from django.utils.http import urlencode from import_export.admin import ImportExportModelAdmin from .adminClone import CloneModelAdmin -from .context_helpers import bus_roll_context +from .context_helpers import bus_roll_context, emergency_contacts_context from .email_helpers import email_companies_bus_roll, render_to_pdf from .models import * @@ -38,6 +39,9 @@ class BusRollMixin: def show_bus_roll(self, request, queryset): return render_to_pdf('reports/bus_roll.html', bus_roll_context(queryset)) + def show_emergency_contacts(self, request, queryset): + return render_to_pdf('reports/emergency_contacts.html', emergency_contacts_context(queryset)) + def email_company(self, request, queryset): return email_companies_bus_roll(request, queryset) @@ -55,7 +59,7 @@ class MyImportExportModelAdmin(ImportExportModelAdmin): @admin.register(Company) class CompanyAdmin(MyImportExportModelAdmin, admin.ModelAdmin): - list_display = ["name", "buses"] + list_display = ["name", "contact_name", "email", "buses"] def buses(self, obj): count = obj.bus_set.count() @@ -66,6 +70,9 @@ class CompanyAdmin(MyImportExportModelAdmin, admin.ModelAdmin): ) return format_html('{} Buses', url, count) + def email(self, obj): + return format_html('{}', obj.contact_email, obj.contact_email) + class DriverInline(admin.StackedInline): model = Driver @@ -83,7 +90,7 @@ class BusesAdmin(MyImportExportModelAdmin, admin.ModelAdmin, BusRollMixin): list_filter = ["company"] list_display = ["route_name", "company", "contract_number", "route_travellers"] readonly_fields = ["traveller_count"] - actions = ["email_company", "show_bus_roll"] + actions = ["email_company", "show_bus_roll", "show_emergency_contacts"] inlines = [DriverInline, BusStopInline] fieldsets = [ (None, {'fields': [ @@ -222,7 +229,10 @@ class TravellerRouteAdmin(MyImportExportModelAdmin, admin.ModelAdmin): @admin.register(School) class SchoolAdmin(MyImportExportModelAdmin, admin.ModelAdmin): - pass + list_display = ["__str__", "address", "suburb", "school_email", "phone"] + + def school_email(self, obj): + return format_html('{}', obj.email, obj.email) @admin.register(Setting) @@ -245,4 +255,8 @@ class ShuttleAdmin(MyImportExportModelAdmin, admin.ModelAdmin): @admin.register(Driver) class DriverAdmin(MyImportExportModelAdmin, admin.ModelAdmin): - pass + list_display = ["__str__", "route", "phone_number"] + + def route(self, obj): + url = reverse("admin:coord_bus_change", args=(obj.bus.id,)) + return format_html('{}', url, obj.bus) diff --git a/busManager/coord/templates/reports/emergency_contacts.html b/busManager/coord/templates/reports/emergency_contacts.html index 49f094b..13b2977 100644 --- a/busManager/coord/templates/reports/emergency_contacts.html +++ b/busManager/coord/templates/reports/emergency_contacts.html @@ -1,4 +1,8 @@ {% for route in routes %} -

{{ route.bus }}

-
+

{{ route.bus.company }} - {{ route.bus }}

+ {% for driver in route.drivers %} +

Driver: {{ driver }} ({{ driver.phone_number }})

+ {% endfor %} - - - - - - + + + + + + {% for traveller in route.travellers %} - +
StudentParent AParent BEmergency Contact AEmergency Contact BDriver notesStudentParent AParent BEmergency Contact AEmergency Contact BDriver notes
{{ traveller.traveller }} ({{ traveller.traveller.school.shortName }}){{ traveller.traveller.last_name }}, {{ traveller.traveller.first_name }} ({{ traveller.traveller.school.shortName }}) {{ traveller.parent_a }} {{ traveller.parent_b }} {{ traveller.contact_a }}