Better canceled trains display

This commit is contained in:
2024-02-10 19:47:34 +01:00
parent a67ad3044f
commit 11cf6bbf55
4 changed files with 85 additions and 31 deletions

View File

@ -171,18 +171,29 @@ class NextDeparturesViewSet(viewsets.ReadOnlyModelViewSet):
.values_list('service_id', flat=True)))
.values_list('id'))
def canceled_filter(d: date):
return Q(Q(update__schedule_relationship=1) | Q(update__trip_update__schedule_relationship=3),
Q(update__trip_update__start_date=d),
~Q(update__departure_time=datetime.fromtimestamp(0)))
qs_today = StopTime.objects.filter(stop_filter) \
.filter(Q(departure_time__gte=query_time, pickup_type=0), calendar_filter(query_date)) \
.filter(Q(departure_time__gte=query_time)) \
.filter(Q(pickup_type=0) | canceled_filter(query_date)) \
.filter(calendar_filter(query_date)) \
.annotate(departure_date=Value(query_date)) \
.annotate(departure_time_24h=F('departure_time'))
qs_yesterday = StopTime.objects.filter(stop_filter) \
.filter(Q(departure_time__gte=time_yesterday, pickup_type=0), calendar_filter(yesterday)) \
.filter(Q(departure_time__gte=time_yesterday)) \
.filter(Q(pickup_type=0) | canceled_filter(yesterday)) \
.filter(calendar_filter(yesterday)) \
.annotate(departure_date=Value(yesterday)) \
.annotate(departure_time_24h=F('departure_time') - timedelta(days=1))
qs_tomorrow = StopTime.objects.filter(stop_filter) \
.filter(Q(departure_time__gte=timedelta(0), pickup_type=0), calendar_filter(tomorrow)) \
.filter(Q(departure_time__gte=timedelta(0))) \
.filter(Q(pickup_type=0) | canceled_filter(tomorrow)) \
.filter(calendar_filter(tomorrow)) \
.annotate(departure_date=Value(tomorrow)) \
.annotate(departure_time_24h=F('departure_time') + timedelta(days=1))
@ -232,18 +243,29 @@ class NextArrivalsViewSet(viewsets.ReadOnlyModelViewSet):
.values_list('service_id', flat=True)))
.values_list('id'))
def canceled_filter(d: date):
return Q(Q(update__schedule_relationship=1) | Q(update__trip_update__schedule_relationship=3),
Q(update__trip_update__start_date=d),
~Q(update__arrival_time=datetime.fromtimestamp(0)))
qs_today = StopTime.objects.filter(stop_filter) \
.filter(Q(arrival_time__gte=query_time, drop_off_type=0), calendar_filter(query_date)) \
.filter(Q(departure_time__gte=query_time)) \
.filter(Q(drop_off_type=0) | canceled_filter(query_date)) \
.filter(calendar_filter(query_date)) \
.annotate(arrival_date=Value(query_date)) \
.annotate(arrival_time_24h=F('arrival_time'))
qs_yesterday = StopTime.objects.filter(stop_filter) \
.filter(Q(arrival_time__gte=time_yesterday, drop_off_type=0), calendar_filter(yesterday)) \
.filter(Q(departure_time__gte=time_yesterday)) \
.filter(Q(drop_off_type=0) | canceled_filter(yesterday)) \
.filter(calendar_filter(yesterday)) \
.annotate(arrival_date=Value(yesterday)) \
.annotate(arrival_time_24h=F('arrival_time') - timedelta(days=1))
qs_tomorrow = StopTime.objects.filter(stop_filter) \
.filter(Q(arrival_time__gte=timedelta(0), drop_off_type=0), calendar_filter(tomorrow)) \
.filter(Q(departure_time__gte=timedelta(0))) \
.filter(Q(drop_off_type=0) | canceled_filter(tomorrow)) \
.filter(calendar_filter(tomorrow)) \
.annotate(arrival_date=Value(tomorrow)) \
.annotate(arrival_time_24h=F('arrival_time') + timedelta(days=1))