Restructurate GTFS feeds into dedicated models
This commit is contained in:
@ -1,26 +1,38 @@
|
||||
from django.contrib import admin
|
||||
from django.forms import BaseInlineFormSet
|
||||
|
||||
from sncfgtfs.models import Agency, Stop, Route, Trip, StopTime, Calendar, CalendarDate, \
|
||||
Transfer, FeedInfo, StopTimeUpdate, TripUpdate
|
||||
from sncfgtfs.models import Agency, Calendar, CalendarDate, FeedInfo, GTFSFeed, \
|
||||
Route, Stop, StopTime, StopTimeUpdate, Transfer, Trip, TripUpdate
|
||||
|
||||
|
||||
class LimitModelFormset(BaseInlineFormSet):
|
||||
""" Base Inline formset to limit inline Model query results. """
|
||||
def get_queryset(self):
|
||||
return super(LimitModelFormset, self).get_queryset()[:50]
|
||||
|
||||
|
||||
class CalendarDateInline(admin.TabularInline):
|
||||
model = CalendarDate
|
||||
extra = 0
|
||||
formset = LimitModelFormset
|
||||
|
||||
|
||||
class TripInline(admin.TabularInline):
|
||||
model = Trip
|
||||
extra = 0
|
||||
formset = LimitModelFormset
|
||||
autocomplete_fields = ('route', 'service',)
|
||||
show_change_link = True
|
||||
ordering = ('service',)
|
||||
readonly_fields = ('gtfs_feed',)
|
||||
|
||||
|
||||
class StopTimeInline(admin.TabularInline):
|
||||
model = StopTime
|
||||
extra = 0
|
||||
formset = LimitModelFormset
|
||||
autocomplete_fields = ('stop',)
|
||||
readonly_fields = ('id',)
|
||||
show_change_link = True
|
||||
ordering = ('stop_sequence',)
|
||||
|
||||
@ -28,47 +40,59 @@ class StopTimeInline(admin.TabularInline):
|
||||
class TripUpdateInline(admin.StackedInline):
|
||||
model = TripUpdate
|
||||
extra = 0
|
||||
formset = LimitModelFormset
|
||||
autocomplete_fields = ('trip',)
|
||||
|
||||
|
||||
class StopTimeUpdateInline(admin.StackedInline):
|
||||
model = StopTimeUpdate
|
||||
extra = 0
|
||||
formset = LimitModelFormset
|
||||
autocomplete_fields = ('trip_update', 'stop_time',)
|
||||
|
||||
|
||||
@admin.register(GTFSFeed)
|
||||
class GTFSFeedAdmin(admin.ModelAdmin):
|
||||
list_display = ('name', 'code', 'country', 'last_modified',)
|
||||
list_filter = ('country', 'last_modified',)
|
||||
search_fields = ('name', 'code',)
|
||||
readonly_fields = ('code',)
|
||||
|
||||
|
||||
@admin.register(Agency)
|
||||
class AgencyAdmin(admin.ModelAdmin):
|
||||
list_display = ('name', 'id', 'url', 'timezone',)
|
||||
list_display = ('name', 'id', 'url', 'timezone', 'gtfs_feed',)
|
||||
list_filter = ('gtfs_feed', 'timezone',)
|
||||
search_fields = ('name',)
|
||||
autocomplete_fields = ('gtfs_feed',)
|
||||
|
||||
|
||||
@admin.register(Stop)
|
||||
class StopAdmin(admin.ModelAdmin):
|
||||
list_display = ('name', 'id', 'lat', 'lon', 'location_type',)
|
||||
list_filter = ('location_type', 'transport_type',)
|
||||
list_filter = ('location_type', 'gtfs_feed',)
|
||||
search_fields = ('name', 'id',)
|
||||
ordering = ('name',)
|
||||
autocomplete_fields = ('parent_station',)
|
||||
autocomplete_fields = ('parent_station', 'gtfs_feed',)
|
||||
|
||||
|
||||
@admin.register(Route)
|
||||
class RouteAdmin(admin.ModelAdmin):
|
||||
list_display = ('short_name', 'long_name', 'id', 'type',)
|
||||
list_filter = ('transport_type', 'type', 'agency',)
|
||||
list_display = ('__str__', 'id', 'type', 'gtfs_feed',)
|
||||
list_filter = ('gtfs_feed', 'type', 'agency',)
|
||||
search_fields = ('long_name', 'short_name', 'id',)
|
||||
ordering = ('long_name',)
|
||||
autocomplete_fields = ('agency',)
|
||||
autocomplete_fields = ('agency', 'gtfs_feed',)
|
||||
inlines = (TripInline,)
|
||||
|
||||
|
||||
@admin.register(Trip)
|
||||
class TripAdmin(admin.ModelAdmin):
|
||||
list_display = ('id', 'route', 'service', 'headsign', 'direction_id',)
|
||||
list_filter = ('direction_id', 'route__transport_type',)
|
||||
list_display = ('id', 'origin_destination', 'route', 'service', 'headsign', 'direction_id',)
|
||||
list_filter = ('direction_id', 'route__gtfs_feed',)
|
||||
search_fields = ('id', 'route__id', 'route__long_name', 'service__id', 'headsign',)
|
||||
ordering = ('route', 'service',)
|
||||
autocomplete_fields = ('route', 'service',)
|
||||
autocomplete_fields = ('route', 'service', 'gtfs_feed',)
|
||||
inlines = (StopTimeInline, TripUpdateInline,)
|
||||
|
||||
|
||||
@ -76,28 +100,30 @@ class TripAdmin(admin.ModelAdmin):
|
||||
class StopTimeAdmin(admin.ModelAdmin):
|
||||
list_display = ('trip', 'stop', 'arrival_time', 'departure_time',
|
||||
'stop_sequence', 'pickup_type', 'drop_off_type',)
|
||||
list_filter = ('pickup_type', 'drop_off_type', 'trip__route__transport_type',)
|
||||
list_filter = ('pickup_type', 'drop_off_type', 'trip__route__gtfs_feed',)
|
||||
search_fields = ('trip__id', 'stop__name', 'arrival_time', 'departure_time',)
|
||||
ordering = ('trip', 'stop_sequence',)
|
||||
autocomplete_fields = ('trip', 'stop',)
|
||||
readonly_fields = ('id',)
|
||||
inlines = (StopTimeUpdateInline,)
|
||||
|
||||
|
||||
@admin.register(Calendar)
|
||||
class CalendarAdmin(admin.ModelAdmin):
|
||||
list_display = ('id', 'transport_type', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday',
|
||||
list_display = ('id', 'gtfs_feed', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday',
|
||||
'saturday', 'sunday', 'start_date', 'end_date',)
|
||||
list_filter = ('transport_type', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday',
|
||||
list_filter = ('gtfs_feed', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday',
|
||||
'start_date', 'end_date',)
|
||||
search_fields = ('id', 'start_date', 'end_date',)
|
||||
ordering = ('transport_type', 'id',)
|
||||
autocomplete_fields = ('gtfs_feed',)
|
||||
ordering = ('gtfs_feed', 'id',)
|
||||
inlines = (CalendarDateInline, TripInline,)
|
||||
|
||||
|
||||
@admin.register(CalendarDate)
|
||||
class CalendarDateAdmin(admin.ModelAdmin):
|
||||
list_display = ('id', 'service_id', 'date', 'exception_type',)
|
||||
list_filter = ('exception_type', 'date', 'service__transport_type',)
|
||||
list_filter = ('exception_type', 'date', 'service__gtfs_feed',)
|
||||
search_fields = ('id', 'date',)
|
||||
ordering = ('date', 'service_id',)
|
||||
|
||||
@ -116,6 +142,7 @@ class FeedInfoAdmin(admin.ModelAdmin):
|
||||
'end_date', 'version',)
|
||||
search_fields = ('publisher_name', 'publisher_url', 'lang', 'start_date',
|
||||
'end_date', 'version',)
|
||||
autocomplete_fields = ('gtfs_feed',)
|
||||
ordering = ('publisher_name',)
|
||||
|
||||
|
||||
@ -123,7 +150,7 @@ class FeedInfoAdmin(admin.ModelAdmin):
|
||||
class StopTimeUpdateAdmin(admin.ModelAdmin):
|
||||
list_display = ('trip_update', 'stop_time', 'arrival_delay', 'arrival_time',
|
||||
'departure_delay', 'departure_time', 'schedule_relationship',)
|
||||
list_filter = ('schedule_relationship',)
|
||||
list_filter = ('schedule_relationship', 'trip_update__trip__gtfs_feed',)
|
||||
search_fields = ('trip_update__trip__id', 'stop_time__stop__name', 'arrival_time', 'departure_time',)
|
||||
ordering = ('trip_update', 'stop_time',)
|
||||
autocomplete_fields = ('trip_update', 'stop_time',)
|
||||
|
Reference in New Issue
Block a user