Prepare code for Eurostar/Trenitalia France/RENFE/ÖBB data input
This commit is contained in:
@ -15,7 +15,9 @@ from sncfgtfs.models import Agency, Stop, Route, Trip, StopTime, Calendar, Calen
|
||||
Transfer, FeedInfo, TripUpdate, StopTimeUpdate
|
||||
|
||||
CACHE_CONTROL = cache_control(max_age=7200)
|
||||
LAST_MODIFIED = last_modified(lambda *args, **kwargs: datetime.fromisoformat(FeedInfo.objects.get().version))
|
||||
LAST_MODIFIED = last_modified(lambda *args, **kwargs: datetime.fromisoformat(
|
||||
FeedInfo.objects.get(publisher_name="SNCF_default").version))
|
||||
LOOKUP_VALUE_REGEX = r"[\w.: |-]+"
|
||||
|
||||
|
||||
@method_decorator(name='list', decorator=[CACHE_CONTROL, LAST_MODIFIED])
|
||||
@ -25,6 +27,7 @@ class AgencyViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
serializer_class = AgencySerializer
|
||||
filter_backends = [DjangoFilterBackend]
|
||||
filterset_fields = '__all__'
|
||||
lookup_value_regex = LOOKUP_VALUE_REGEX
|
||||
|
||||
|
||||
@method_decorator(name='list', decorator=[CACHE_CONTROL, LAST_MODIFIED])
|
||||
@ -35,6 +38,7 @@ class StopViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
filter_backends = [DjangoFilterBackend, SearchFilter]
|
||||
filterset_fields = '__all__'
|
||||
search_fields = ['name',]
|
||||
lookup_value_regex = LOOKUP_VALUE_REGEX
|
||||
|
||||
|
||||
@method_decorator(name='list', decorator=[CACHE_CONTROL, LAST_MODIFIED])
|
||||
@ -44,6 +48,7 @@ class RouteViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
serializer_class = RouteSerializer
|
||||
filter_backends = [DjangoFilterBackend]
|
||||
filterset_fields = '__all__'
|
||||
lookup_value_regex = LOOKUP_VALUE_REGEX
|
||||
|
||||
|
||||
@method_decorator(name='list', decorator=[CACHE_CONTROL, LAST_MODIFIED])
|
||||
@ -53,6 +58,7 @@ class TripViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
serializer_class = TripSerializer
|
||||
filter_backends = [DjangoFilterBackend]
|
||||
filterset_fields = '__all__'
|
||||
lookup_value_regex = LOOKUP_VALUE_REGEX
|
||||
|
||||
|
||||
@method_decorator(name='list', decorator=[CACHE_CONTROL, LAST_MODIFIED])
|
||||
@ -64,6 +70,7 @@ class StopTimeViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
filterset_fields = '__all__'
|
||||
ordering_fields = ['arrival_time', 'departure_time', 'stop_sequence', ]
|
||||
ordering = ['stop_sequence', ]
|
||||
lookup_value_regex = LOOKUP_VALUE_REGEX
|
||||
|
||||
|
||||
@method_decorator(name='list', decorator=[CACHE_CONTROL, LAST_MODIFIED])
|
||||
@ -73,6 +80,7 @@ class CalendarViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
serializer_class = CalendarSerializer
|
||||
filter_backends = [DjangoFilterBackend]
|
||||
filterset_fields = '__all__'
|
||||
lookup_value_regex = LOOKUP_VALUE_REGEX
|
||||
|
||||
|
||||
@method_decorator(name='list', decorator=[CACHE_CONTROL, LAST_MODIFIED])
|
||||
@ -82,6 +90,7 @@ class CalendarDateViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
serializer_class = CalendarDateSerializer
|
||||
filter_backends = [DjangoFilterBackend]
|
||||
filterset_fields = '__all__'
|
||||
lookup_value_regex = LOOKUP_VALUE_REGEX
|
||||
|
||||
|
||||
@method_decorator(name='list', decorator=[CACHE_CONTROL, LAST_MODIFIED])
|
||||
@ -90,6 +99,7 @@ class TransferViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
queryset = Transfer.objects.all()
|
||||
serializer_class = TransferSerializer
|
||||
filter_backends = [DjangoFilterBackend]
|
||||
lookup_value_regex = LOOKUP_VALUE_REGEX
|
||||
|
||||
|
||||
@method_decorator(name='list', decorator=[CACHE_CONTROL, LAST_MODIFIED])
|
||||
@ -99,6 +109,7 @@ class FeedInfoViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
serializer_class = FeedInfoSerializer
|
||||
filter_backends = [DjangoFilterBackend]
|
||||
filterset_fields = '__all__'
|
||||
lookup_value_regex = LOOKUP_VALUE_REGEX
|
||||
|
||||
|
||||
class TripUpdateViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
@ -106,6 +117,7 @@ class TripUpdateViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
serializer_class = TripUpdateSerializer
|
||||
filter_backends = [DjangoFilterBackend]
|
||||
filterset_fields = '__all__'
|
||||
lookup_value_regex = LOOKUP_VALUE_REGEX
|
||||
|
||||
|
||||
class StopTimeUpdateViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
@ -113,6 +125,7 @@ class StopTimeUpdateViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
serializer_class = StopTimeUpdateSerializer
|
||||
filter_backends = [DjangoFilterBackend]
|
||||
filterset_fields = '__all__'
|
||||
lookup_value_regex = LOOKUP_VALUE_REGEX
|
||||
|
||||
|
||||
class NextDeparturesViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
@ -140,7 +153,7 @@ class NextDeparturesViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
stop = Stop.objects.get(id=stop_id)
|
||||
stops = Stop.objects.filter(Q(id=stop_id)
|
||||
| Q(parent_station=stop_id))
|
||||
if stop.location_type == 0:
|
||||
if stop.location_type == 0 and stop.parent_station_id is not None:
|
||||
stops |= Stop.objects.filter(parent_station=stop.parent_station_id)
|
||||
stop_filter = Q(stop__in=stops.values_list('id', flat=True))
|
||||
elif stop_name:
|
||||
@ -201,7 +214,7 @@ class NextArrivalsViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
stop = Stop.objects.get(id=stop_id)
|
||||
stops = Stop.objects.filter(Q(id=stop_id)
|
||||
| Q(parent_station=stop_id))
|
||||
if stop.location_type == 0:
|
||||
if stop.location_type == 0 and stop.parent_station_id is not None:
|
||||
stops |= Stop.objects.filter(parent_station=stop.parent_station_id)
|
||||
stop_filter = Q(stop__in=stops.values_list('id', flat=True))
|
||||
elif stop_name:
|
||||
|
Reference in New Issue
Block a user