from django.contrib import admin
from django.utils.safestring import mark_safe

from sncfgtfs.models import Agency, Stop, Route, Trip, StopTime, Calendar, CalendarDate, \
    Transfer, FeedInfo


@admin.register(Agency)
class AgencyAdmin(admin.ModelAdmin):
    list_display = ('name', 'id', 'url', 'timezone',)
    search_fields = ('name',)


@admin.register(Stop)
class StopAdmin(admin.ModelAdmin):
    list_display = ('name', 'id', 'lat', 'lon', 'location_type',)
    list_filter = ('location_type',)
    search_fields = ('name', 'id',)
    ordering = ('name',)
    autocomplete_fields = ('parent_station',)


@admin.register(Route)
class RouteAdmin(admin.ModelAdmin):
    list_display = ('long_name', 'short_name', 'id', 'type',)
    list_filter = ('type',)
    search_fields = ('long_name', 'short_name', 'id',)
    ordering = ('long_name',)
    autocomplete_fields = ('agency',)


@admin.register(Trip)
class TripAdmin(admin.ModelAdmin):
    list_display = ('id', 'route', 'service', 'headsign', 'direction_id',)
    list_filter = ('direction_id', 'service__transport_type',)
    search_fields = ('id', 'route__long_name', 'service', 'headsign',)
    ordering = ('route', 'service',)


@admin.register(StopTime)
class StopTimeAdmin(admin.ModelAdmin):
    list_display = ('trip', 'stop', 'arrival_time', 'departure_time', 'arrival_next_day',
                    'stop_sequence', 'pickup_type', 'drop_off_type',)
    list_filter = ('arrival_next_day', 'pickup_type', 'drop_off_type', 'trip__service__transport_type',)
    search_fields = ('trip__id', 'stop__name', 'arrival_time', 'departure_time',)
    ordering = ('trip', 'stop_sequence',)
    autocomplete_fields = ('trip', 'stop',)


@admin.register(Calendar)
class CalendarAdmin(admin.ModelAdmin):
    list_display = ('id', 'transport_type', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday',
                    'saturday', 'sunday', 'start_date', 'end_date',)
    list_filter = ('transport_type', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday',
                   'start_date', 'end_date',)
    search_fields = ('id', 'start_date', 'end_date',)
    ordering = ('transport_type', 'id',)


@admin.register(CalendarDate)
class CalendarDateAdmin(admin.ModelAdmin):
    list_display = ('id', 'service_id', 'date', 'exception_type',)
    list_filter = ('exception_type', 'date', 'service__transport_type',)
    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__stop_name', 'to_stop__stop_name',)
    autocomplete_fields = ('from_stop', 'to_stop',)


@admin.register(FeedInfo)
class FeedInfoAdmin(admin.ModelAdmin):
    list_display = ('feed_publisher_name', 'feed_publisher_url', 'feed_lang', 'feed_start_date',
                    'feed_end_date', 'feed_version',)
    search_fields = ('feed_publisher_name', 'feed_publisher_url', 'feed_lang', 'feed_start_date',
                     'feed_end_date', 'feed_version',)
    ordering = ('feed_publisher_name',)
