from django.contrib import admin from django.contrib.gis.admin import OSMGeoAdmin from birds.models import BirdSighting, BirdAudio, BirdClass, Bird from django.contrib.gis.geos import GEOSGeometry def convertll(lat, lon): pnt = GEOSGeometry('POINT({0} {1})'.format(lon, lat), srid=4326) pnt.transform(3857) return pnt.y, pnt.x # Florida: lat, lon = convertll(29.658057, -84.867797) # Athens: lon = -9285175 lat = 4025046 class BirdClassAdmin(admin.ModelAdmin): list_display = ('common_name', 'scientific_name',) class BirdAudioAdmin(admin.ModelAdmin): list_display = ('bird', 'recorder',) class BirdAdmin(admin.ModelAdmin): list_display = ('pk', 'common_name', 'scientific_name', 'code', 'bird_class') list_filter = ('bird_class',) class BirdSightingAdmin(OSMGeoAdmin): list_display = ('bird', 'location') list_filter = ('seen_by', 'location',) fieldsets = ( ('Sighting', { 'fields': ( 'bird', 'point', 'date', 'image', 'seen_by' ), 'classes': ( 'show', 'extrapretty', 'wide' ) } ), ) # options for OSM map Using custom ESRI topo map default_lon = lon default_lat = lat default_zoom = 13 units = True scrollable = False map_width = 700 map_height = 425 map_template = 'gis/admin/osm.html' openlayers_url = '/static/admin/js/OpenLayers.js' admin.site.register(BirdSighting, BirdSightingAdmin) admin.site.register(BirdClass, BirdClassAdmin) admin.site.register(BirdAudio, BirdAudioAdmin) admin.site.register(Bird, BirdAdmin)