95 lines
3.1 KiB
Python
95 lines
3.1 KiB
Python
from django.contrib.gis import admin
|
|
from models import *
|
|
from django import forms
|
|
#from django.contrib.admin import SimpleListFilter
|
|
from ajax_select.fields import AutoCompleteSelectMultipleField, AutoCompleteSelectField
|
|
|
|
|
|
'''
|
|
class FeatureTypeFilter(SimpleListFilter):
|
|
# Human-readable title which will be displayed in the
|
|
# right admin sidebar just above the filter options.
|
|
title = 'Feature Type'
|
|
|
|
# Parameter for the filter that will be used in the URL query.
|
|
parameter_name = 'feature_type'
|
|
|
|
def lookups(self, request, model_admin):
|
|
"""
|
|
Returns a list of tuples. The first element in each
|
|
tuple is the coded value for the option that will
|
|
appear in the URL query. The second element is the
|
|
human-readable name for the option that will appear
|
|
in the right sidebar.
|
|
"""
|
|
fts = []
|
|
for ft in FeatureType.objects.all():
|
|
if ft.feature_set.count() > 0:
|
|
t = (ft.id, ft.__unicode__(),)
|
|
fts.append(t)
|
|
|
|
return fts
|
|
|
|
def queryset(self, request, queryset):
|
|
"""
|
|
Returns the filtered queryset based on the value
|
|
provided in the query string and retrievable via
|
|
`self.value()`.
|
|
"""
|
|
# Compare the requested value (either '80s' or 'other')
|
|
# to decide how to filter the queryset.
|
|
val = self.value()
|
|
return queryset.filter(feature_type=val)
|
|
'''
|
|
|
|
class AuthorityRecordAdmin(admin.ModelAdmin):
|
|
search_fields = ['preferred_name']
|
|
|
|
|
|
class FeatureNamesInline(admin.StackedInline):
|
|
model = Name
|
|
extra = 0
|
|
|
|
class FeatureRelationInline(admin.TabularInline):
|
|
model = Feature.relationships.through
|
|
extra = 1
|
|
fk_name = 'feature1'
|
|
|
|
|
|
class featuresForm(forms.ModelForm):
|
|
url = forms.CharField(label='URI',
|
|
required=True,
|
|
widget=forms.TextInput(attrs={'size': '40'}))
|
|
authority_record = AutoCompleteSelectField('authority_record', required=False)
|
|
|
|
# exclude = ('info',)
|
|
|
|
class Meta:
|
|
model = Feature
|
|
|
|
|
|
class FeatureAdmin(admin.OSMGeoAdmin):
|
|
search_fields = ['preferred_name']
|
|
# list_filter = ('feature_type',)
|
|
inlines = [FeatureNamesInline]
|
|
list_display = ('__unicode__', 'feature_type_name', 'admin1', 'admin2', 'time_start', 'time_end',)
|
|
list_per_page = 30
|
|
# list_filter = (FeatureTypeFilter,)
|
|
openlayers_url = 'http://openlayers.org/dev/OpenLayers.js'
|
|
openlayers_img_path = None
|
|
form = featuresForm
|
|
# map_template = 'gis/admin/osm.html'
|
|
# default_lon = 72.855211097628413
|
|
# default_lat = 19.415775291486027
|
|
# default_zoom = 4
|
|
# extra_js = ['http://openstreetmap.org/openlayers/OpenStreetMap.js', 'http://openlayers.org/dev/OpenLayers.js']
|
|
|
|
class FeatureTypeAdmin(admin.ModelAdmin):
|
|
list_display = ('code', 'name', 'description', 'feature_class',)
|
|
|
|
admin.site.register(Feature, FeatureAdmin)
|
|
admin.site.register(TimeFrame)
|
|
admin.site.register(FeatureType, FeatureTypeAdmin)
|
|
admin.site.register(Relationship)
|
|
admin.site.register(AuthorityRecord, AuthorityRecordAdmin)
|