from common.documents import render_to_pdf from messaging.services.email import email_companies_bus_roll, email_companies_emergency_contacts, \ email_school_shuttle_roll from messaging.services.sms import send_sms from transport.context_busroll import bus_roll_context from transport.context_helpers import emergency_contacts_context from transport.forms import roll_date_selector from traveller.models import Traveller class BusRollMixin: def show_bus_roll(self, request, queryset): return render_to_pdf('reports/bus_roll.html', bus_roll_context(queryset)) def show_bus_roll_on_date(self, request, queryset): return roll_date_selector(self, request, queryset) def show_emergency_contacts(self, request, queryset): return render_to_pdf('reports/emergency_contacts.html', emergency_contacts_context(queryset)) def sms_traveller_contacts(self, request, queryset): travellers = None for bus in queryset: query = Traveller.objects.filter(bus_stops__bus=bus).filter(is_active=True).distinct() if travellers is None: travellers = query else: travellers.union(query) return send_sms(self, request, travellers) def email_bus_roll(self, request, queryset): return email_companies_bus_roll(request, queryset) def email_emergency_contacts(self, request, queryset): return email_companies_emergency_contacts(request, queryset) email_bus_roll.short_description = "Email Bus Roll to Company" email_emergency_contacts.short_description = "Email Emergency Contacts to Company" class ShuttleRollMixin: def show_shuttle_roll(self, request, queryset): if queryset is None: buses = None else: buses = [] for shuttle in queryset: if shuttle.bus not in buses: 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)