import datetime from django.forms import model_to_dict from coord.models import * def _to_date(date): if date is None: return None return date.strftime("%Y-%m-%d") def get_export_dict(): suburbs = [] schools = [] companies = [] travellers = [] for suburb in Suburb.objects.all(): suburbs.append(model_to_dict(suburb)) for school in School.objects.all(): school_dict = model_to_dict(school) school_dict['suburb'] = school.suburb.name schools.append(school_dict) for company in Company.objects.all(): company_dict = model_to_dict(company) company_dict['suburb'] = company.suburb.name buses = [] for bus in Bus.objects.filter(company=company): bus_dict = model_to_dict(bus) bus_dict.pop('company') drivers = [] shuttles = [] bus_stops = [] for driver in Driver.objects.filter(bus=bus): driver_dict = model_to_dict(driver) driver_dict.pop('bus') drivers.append(driver_dict) for shuttle in Shuttle.objects.filter(bus=bus): shuttle_dict = model_to_dict(shuttle) shuttle_dict.pop('bus') shuttles.append(shuttle_dict) for busStop in BusStop.objects.filter(bus=bus): bus_stop_dict = model_to_dict(busStop) bus_stop_dict.pop('bus') bus_stop_dict['am_time'] = busStop.am_time.strftime("%H:%M:%S") bus_stop_dict['pm_time'] = busStop.pm_time.strftime("%H:%M:%S") bus_stops.append(bus_stop_dict) bus_dict['drivers'] = drivers bus_dict['shuttles'] = shuttles bus_dict['bus_stops'] = bus_stops buses.append(bus_dict) company_dict['buses'] = buses companies.append(company_dict) ignore_fields = ['travel_start_date', 'travel_end_date', 'is_active', 'is_archived', 'bus_stops', 'fee_per_term'] for traveller in Traveller.objects.all(): traveller_dict = model_to_dict(traveller) traveller_dict['school'] = traveller.school.name if traveller.residential_suburb is not None: traveller_dict['residential_suburb'] = traveller.residential_suburb.name if traveller.postal_suburb is not None: traveller_dict['postal_suburb'] = traveller.postal_suburb.name traveller_dict['dob'] = _to_date(traveller.dob) traveller_dict['assessment_date'] = _to_date(traveller.assessment_date) traveller_dict['created_on'] = traveller.created_on.strftime("%Y-%m-%d %H:%M:%S %Z") traveller_dict['last_edit'] = traveller.last_edit.strftime("%Y-%m-%d %H:%M:%S %Z") for field in ignore_fields: traveller_dict.pop(field) routes = [] for route in TravellerRoute.objects.filter(traveller=traveller): route_dict = model_to_dict(route) route_dict.pop('traveller') route_dict['name'] = route.busStop.__str__() route_dict['travel_start_date'] = _to_date(route.travel_start_date) route_dict['travel_end_date'] = _to_date(route.travel_end_date) routes.append(route_dict) traveller_dict['bus_stops'] = routes travellers.append(traveller_dict) return {'suburbs': suburbs, 'schools': schools, 'companies': companies, 'travellers': travellers}