chaloBEST/chaloBEST/mumbai/admin.py

219 lines
6.8 KiB
Python

from django.contrib.gis import admin
from django import forms
from mumbai.models import *
from django.contrib.contenttypes import generic
from django.contrib.admin.filterspecs import FilterSpec, RelatedFilterSpec
'''
class CustomFilterSpec(RelatedFilterSpec):
def __init__(self, f, *args, **kwargs):
super(CustomFilterSpec, self).__init__(f, *args, **kwargs)
instance = f
stop_choices = instance.get_stop_choices()
CHOICES = (
(item.id, item.name) for item in stop_choices
)
self.lookup_choices = CHOICES
FilterSpec.filter_specs.insert(0, (lambda f: bool(f.rel and hasattr(f, 'custom_filter_spec')), CustomFilterSpec))
'''
class RouteScheduleInline(admin.StackedInline):
model = RouteSchedule
extra = 0
class AlternativeNameInline(generic.GenericStackedInline):
extra = 3
model = AlternativeName
class AreaAdmin(admin.OSMGeoAdmin):
list_display = ("code","display_name", "name_mr", "name", "slug")
list_editable = ("display_name", "name_mr",)
readonly_fields = ("code", "name")
formfield_overrides = {
models.TextField: {'widget': forms.TextInput},
}
default_lon = 8110203.9998955
default_lat = 2170000.4068373
default_zoom = 10
search_fields = ("name","display_name", "name_mr","slug")
inlines = [AlternativeNameInline]
class RoadAdmin(admin.OSMGeoAdmin):
list_display = ("code","display_name", "name_mr", "name", "slug")
list_editable = ("display_name", "name_mr",)
readonly_fields = ("code", "name")
search_fields = ("name","display_name", "name_mr","slug")
formfield_overrides = {
models.TextField: {'widget': forms.TextInput},
}
default_lon = 8110203.9998955
default_lat = 2170000.4068373
default_zoom = 10
inlines = [AlternativeNameInline]
class FareAdmin(admin.ModelAdmin):
list_display = ("slab","ordinary","limited","express","ac","ac_express")
readonly_fields = ("slab","ordinary","limited","express","ac","ac_express")
formfield_overrides = {
models.TextField: {'widget': forms.TextInput},
}
class UniqueRouteForm(forms.ModelForm):
class Meta:
model = UniqueRoute
def __init__(self,*args, **kwargs):
super(UniqueRouteForm,self).__init__(*args,**kwargs)
self.fields['from_stop'].queryset = Stop.objects.filter(routedetail__route=self.instance.route).order_by('routedetail')
self.fields['to_stop'].queryset = Stop.objects.filter(routedetail__route=self.instance.route).order_by('routedetail')
class UniqueRouteAdmin(admin.ModelAdmin):
list_display = ("route","from_stop", "from_stop_txt", "to_stop", "to_stop_txt", "distance","is_full")
# list_editable = ("from_stop", "to_stop")
readonly_fields = ("route","distance","is_full")
search_fields = ("route__alias", "from_stop__name", "to_stop__name")
ordering = ('route',)
list_per_page = 50
inlines = [RouteScheduleInline]
form = UniqueRouteForm
class StopForm(forms.ModelForm):
class Meta:
model = Stop
class StopAdmin(admin.OSMGeoAdmin):
list_display = ("code","display_name", "name_mr","name", "road","area","depot", "has_point")
list_editable = ("display_name", "name_mr","depot",)
readonly_fields = ("code","name","road","area","depot","chowki" )
search_fields = ("code",'name', 'depot__name', "road__name", "area__name")
ordering = ('name',)
list_per_page = 20
"""
fieldsets = (
(None, {
'fields': ('name', 'area', 'road')
}),
('Advanced options', {
'classes': ('collapse',),
'fields': ('code', 'chowki', 'depot')
}),
)
form = StopForm
"""
# For mapping widget
formfield_overrides = {
models.TextField: {'widget': forms.TextInput},
}
default_lon = 8110203.9998955
default_lat = 2170000.4068373
default_zoom = 10
inlines = [AlternativeNameInline]
class RouteDetailAdmin(admin.ModelAdmin):
list_display = ("route_code","serial","stop","stop_dir", "stage","km")
readonly_fields = ("route_code","serial","stop","stage","km")
search_fields = ("route_code","stop__name")
formfield_overrides = {
models.TextField: {'widget': forms.TextInput},
}
class RouteAdmin(admin.ModelAdmin):
list_display = ("alias","code","from_stop","to_stop","distance","stages")
search_fields = ("alias","from_stop__name","to_stop__name")
formfield_overrides = {
models.TextField: {'widget': forms.TextInput},
}
class RouteTypeAdmin(admin.ModelAdmin):
list_display = ("code","rtype","faretype")
readonly_fields = ("code","rtype","faretype")
search_fields = ("code","rtype","faretype")
formfield_overrides = {
models.TextField: {'widget': forms.TextInput},
}
class HardCodedRouteAdmin(admin.ModelAdmin):
list_display = ("code","alias","faretype")
readonly_fields = ("code","alias","faretype")
search_fields = ("code","alias","faretype")
formfield_overrides = {
models.TextField: {'widget': forms.TextInput},
}
class LandmarkAdmin(admin.OSMGeoAdmin):
list_display = ("name", "display_name", "name_mr", "slug", "point" )
list_editable = ("display_name","name_mr")
search_fields = ("name", "display_name", "name_mr","slug")
formfield_overrides = {
models.TextField: {'widget': forms.TextInput},
}
default_lon = 8110203.9998955
default_lat = 2170000.4068373
default_zoom = 10
inlines = [AlternativeNameInline]
class StopLocationAdmin(admin.OSMGeoAdmin):
list_display = ("stop", "direction", "point")
formfield_overrides = {
models.TextField: {'widget': forms.TextInput},
}
default_lon = 8110203.9998955
default_lat = 2170000.4068373
default_zoom = 10
class DepotAdmin(admin.ModelAdmin):
list_display = ("code", "name", "stop")
readonly_fields = ("code", "name", "stop")
search_fields = ("code", "name", "stop__name")
#list_editable = ("name",)
formfield_overrides = {
models.TextField: {'widget': forms.TextInput},
}
class HolidayAdmin(admin.ModelAdmin):
list_display = ("date", "name")
readonly_fields = ("date", "name")
search_fields = ("name", "date")
formfield_overrides = {
models.TextField: {'widget': forms.TextInput},
}
admin.site.register(Area, AreaAdmin)
admin.site.register(Road, RoadAdmin)
admin.site.register(Fare,FareAdmin)
admin.site.register(Stop, StopAdmin)
admin.site.register(RouteDetail, RouteDetailAdmin)
admin.site.register(Route, RouteAdmin)
admin.site.register(RouteType, RouteTypeAdmin)
admin.site.register(HardCodedRoute, HardCodedRouteAdmin)
admin.site.register(Landmark, LandmarkAdmin)
admin.site.register(Depot,DepotAdmin)
admin.site.register(Holiday,HolidayAdmin)
admin.site.register(StopLocation,StopLocationAdmin)
admin.site.register(UniqueRoute, UniqueRouteAdmin)