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 from photos.forms import GalleryForm from daily.models import CheckIn def convertll(lat, lon): pnt = GEOSGeometry('POINT({0} {1})'.format(lon, lat), srid=4326) pnt.transform(3857) return pnt.y, pnt.x def get_latlon(): loc = CheckIn.objects.latest() lat_converted, lon_converted = convertll(loc.lat, loc.lon) return lat_converted, lon_converted 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): form = GalleryForm list_display = ('bird', 'location') list_filter = ('seen_by', 'location',) fieldsets = ( ('Sighting', { 'fields': ( 'bird', 'point', 'date', 'seen_by', 'images', 'audio', ), 'classes': ( 'show', 'extrapretty', 'wide' ) } ), ) # options for OSM map Using custom ESRI topo map lat, lon = get_latlon() print(lat, lon) 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)