Better pass-midnight management
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
import csv
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timedelta
|
||||
from io import BytesIO
|
||||
from zipfile import ZipFile
|
||||
|
||||
@ -260,24 +260,15 @@ class Command(BaseCommand):
|
||||
for stop_time_dict in csv.DictReader(zipfile.read("stop_times.txt").decode().splitlines()):
|
||||
stop_time_dict: dict
|
||||
|
||||
arrival_next_day = False
|
||||
arrival_time = stop_time_dict['arrival_time']
|
||||
if int(arrival_time.split(":")[0]) >= 24:
|
||||
split = arrival_time.split(':')
|
||||
arrival_time = f"{int(split[0]) - 24:02}:{split[1]}:{split[2]}"
|
||||
arrival_next_day = True
|
||||
departure_time = stop_time_dict['departure_time']
|
||||
if int(departure_time.split(":")[0]) >= 24:
|
||||
split = departure_time.split(':')
|
||||
departure_time = f"{int(split[0]) - 24:02}:{split[1]}:{split[2]}"
|
||||
arrival_next_day = True
|
||||
|
||||
arr_time = stop_time_dict['arrival_time']
|
||||
arr_time = int(arr_time[:2]) * 3600 + int(arr_time[3:5]) * 60 + int(arr_time[6:])
|
||||
dep_time = stop_time_dict['departure_time']
|
||||
dep_time = int(dep_time[:2]) * 3600 + int(dep_time[3:5]) * 60 + int(dep_time[6:])
|
||||
st = StopTime(
|
||||
id=f"{stop_time_dict['trip_id']}-{stop_time_dict['stop_sequence']}",
|
||||
trip_id=stop_time_dict['trip_id'],
|
||||
arrival_time=arrival_time,
|
||||
departure_time=departure_time,
|
||||
arrival_next_day=arrival_next_day,
|
||||
arrival_time=timedelta(seconds=arr_time),
|
||||
departure_time=timedelta(seconds=dep_time),
|
||||
stop_id=stop_time_dict['stop_id'],
|
||||
stop_sequence=stop_time_dict['stop_sequence'],
|
||||
stop_headsign=stop_time_dict['stop_headsign'],
|
||||
@ -291,7 +282,7 @@ class Command(BaseCommand):
|
||||
StopTime.objects.bulk_create(stop_times,
|
||||
update_conflicts=True,
|
||||
update_fields=['stop_id', 'arrival_time', 'departure_time',
|
||||
'arrival_next_day', 'stop_headsign', 'pickup_type',
|
||||
'stop_headsign', 'pickup_type',
|
||||
'drop_off_type', 'timepoint'],
|
||||
unique_fields=['id'])
|
||||
stop_times.clear()
|
||||
@ -299,7 +290,7 @@ class Command(BaseCommand):
|
||||
StopTime.objects.bulk_create(stop_times,
|
||||
update_conflicts=True,
|
||||
update_fields=['stop_id', 'arrival_time', 'departure_time',
|
||||
'arrival_next_day', 'stop_headsign', 'pickup_type',
|
||||
'stop_headsign', 'pickup_type',
|
||||
'drop_off_type', 'timepoint'],
|
||||
unique_fields=['id'])
|
||||
stop_times.clear()
|
||||
|
Reference in New Issue
Block a user