Files
bus-manager/busManager/coord/backup/backup_helpers.py
T
John Mullins 9a3d244c8e Removed fee per term from export
Removed print statements from backup function
2024-01-24 10:21:39 +11:00

91 lines
3.4 KiB
Python

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}