from django.contrib import admin from django.forms import BaseInlineFormSet 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',) 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', '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', 'gtfs_feed',) search_fields = ('name', 'id',) ordering = ('name',) autocomplete_fields = ('parent_station', 'gtfs_feed',) @admin.register(Route) class RouteAdmin(admin.ModelAdmin): 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', 'gtfs_feed',) inlines = (TripInline,) @admin.register(Trip) class TripAdmin(admin.ModelAdmin): 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', 'gtfs_feed',) inlines = (StopTimeInline, TripUpdateInline,) @admin.register(StopTime) 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__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', 'gtfs_feed', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday', 'start_date', 'end_date',) list_filter = ('gtfs_feed', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday', 'start_date', 'end_date',) search_fields = ('id', 'start_date', 'end_date',) 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__gtfs_feed',) search_fields = ('id', 'date',) ordering = ('date', 'service_id',) @admin.register(Transfer) class TransferAdmin(admin.ModelAdmin): list_display = ('from_stop', 'to_stop', 'transfer_type', 'min_transfer_time',) list_filter = ('transfer_type',) search_fields = ('from_stop__name', 'to_stop__name',) autocomplete_fields = ('from_stop', 'to_stop',) @admin.register(FeedInfo) class FeedInfoAdmin(admin.ModelAdmin): list_display = ('publisher_name', 'publisher_url', 'lang', 'start_date', 'end_date', 'version',) search_fields = ('publisher_name', 'publisher_url', 'lang', 'start_date', 'end_date', 'version',) autocomplete_fields = ('gtfs_feed',) ordering = ('publisher_name',) @admin.register(StopTimeUpdate) class StopTimeUpdateAdmin(admin.ModelAdmin): list_display = ('trip_update', 'stop_time', 'arrival_delay', 'arrival_time', 'departure_delay', 'departure_time', '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',) @admin.register(TripUpdate) class TripUpdateAdmin(admin.ModelAdmin): list_display = ('trip_id', 'start_date', 'start_time',) list_filter = ('start_date', 'schedule_relationship',) search_fields = ('trip__id', 'start_date', 'start_time',) ordering = ('trip_id', 'start_date', 'start_time',) autocomplete_fields = ('trip',)