from django.contrib.admin.views.decorators import staff_member_required from django.http import HttpResponse from django.shortcuts import render from django.views.generic import ListView from .models import Company, Bus, Traveller, BusStop, TravellerRoute # def index(request): # return HttpResponse("Hello, world. You're at the coord index.") @staff_member_required def bus_numbers(request): buses = [] for bus in Bus.objects.all(): num_travellers = Traveller.objects.filter(bus_stops__bus=bus).count() buses.append({'route_name': bus.route_name, 'num_travellers': num_travellers}) return render(request, 'reports/bus_numbers.html', {'buses': buses}) @staff_member_required def bus_roll(request, queryset=None): bus_routes = [] if queryset is None: buses = Bus.objects.all() else: buses = queryset 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): traveller = trav_route.traveller if not traveller.is_active(): continue is_fared = "---" if traveller.eligibility_status == "2": is_fared = "Y" traveller_list.append({ 'display': f"{traveller} ({traveller.get_year_level_display()}, {traveller.school.shortName})", 'isFared': is_fared }) stop_result = { 'stop_num': bus_stop.get_stop_number(), 'name': bus_stop.address, 'am': bus_stop.am_time, 'pm': bus_stop.pm_time, 'travellers': traveller_list } # print(traveller_list) bus_route.append(stop_result) bus_routes.append({'route_name': bus.route_name, 'stops': bus_route}) return render(request, 'reports/bus_roll.html', {'routes': bus_routes}) @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.guardian_A_firstname: parent_a = f"{traveller.guardian_A_firstname} {traveller.guardian_A_lastname} ({traveller.guardian_A_phone})" parent_b = "" if travellerRoute.traveller.guardian_B_firstname: parent_b = f"{traveller.guardian_B_firstname} {traveller.guardian_B_lastname} ({traveller.guardian_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}) @staff_member_required def clone(request): options = { 'verbose_name': "Traveller", 'app_label': "coord" } return render(request, 'admin/clone_form.html', options) @staff_member_required class CompanyList(ListView): model = Company template_name = "companies.html"