from django.contrib import admin from django import forms from django.contrib.gis.admin import OSMGeoAdmin from django.conf.urls import url from django.utils.translation import ungettext, ugettext_lazy as _ from photos.models import Photo, PhotoGallery, LuxImage, LuxGallery, LuxImageSize from django.shortcuts import render from django.contrib.admin import helpers from django.http import HttpResponseRedirect from .forms import UploadZipForm, GalleryForm class LuxImageSizeAdmin(OSMGeoAdmin): list_display = ('name', 'width', 'height', 'quality') pass admin.site.register(LuxImageSize, LuxImageSizeAdmin) class LuxImageAdmin(OSMGeoAdmin): list_display = ('pk', 'admin_thumbnail', 'pub_date', 'location') list_filter = ('pub_date', 'location') search_fields = ['title', 'caption'] # Options for OSM map Using custom ESRI topo map default_lon = -9285175 default_lat = 4025046 default_zoom = 6 units = True scrollable = False map_width = 700 map_height = 425 map_template = 'gis/admin/osm.html' openlayers_url = '/static/admin/js/OpenLayers.js' fieldsets = ( (None, { 'fields': (('image', 'pub_date'), 'sizes', ('title', 'alt'), 'caption', 'point', ('is_public', 'is_video'), ('photo_credit_source', 'photo_credit_url')) }), ('Exif Data', { 'classes': ('collapse',), 'fields': ('exif_raw', 'exif_aperture', 'exif_make', 'exif_model', 'exif_exposure', 'exif_iso', 'exif_focal_length', 'exif_lens', 'exif_date', 'height', 'width'), }), ) admin.site.register(LuxImage, LuxImageAdmin) class LuxGalleryAdmin(OSMGeoAdmin): form = GalleryForm list_display = ('title', 'location', 'pub_date') list_filter = ('location',) # Options for OSM map Using custom ESRI topo map default_lon = -9285175 default_lat = 4025046 default_zoom = 6 units = True scrollable = False map_width = 700 map_height = 425 map_template = 'gis/admin/osm.html' openlayers_url = '/static/admin/js/OpenLayers.js' def get_urls(self): urls = super(LuxGalleryAdmin, self).get_urls() custom_urls = [ url( r'upload_zip/$', self.admin_site.admin_view(self.upload_zip), name='upload_zip' ) ] return custom_urls + urls def upload_zip(self, request): context = { 'title': _('Upload a zip archive of photos'), 'app_label': self.model._meta.app_label, 'opts': self.model._meta, 'has_change_permission': self.has_change_permission(request) } # Handle form request if request.method == 'POST': form = UploadZipForm(request.POST, request.FILES) if form.is_valid(): form.save(request=request) return HttpResponseRedirect('..') else: form = UploadZipForm() context['form'] = form context['adminform'] = helpers.AdminForm(form, list([(None, {'fields': form.base_fields})]), {}) return render(request, 'admin/upload_zip.html', context) admin.site.register(LuxGallery, LuxGalleryAdmin) class PhotoAdmin(OSMGeoAdmin): list_display = ('title', 'admin_thumbnail', 'flickr_id', 'pub_date',) list_filter = ('pub_date',) search_fields = ['title', 'description'] fieldsets = ( (None, { 'fields': ( ('title', 'description'), 'pub_date', ('lat', 'lon') ) }), ('Exif Data', { 'fields': ( 'exif_aperture', 'exif_exposure', 'exif_iso', 'exif_focal_length', 'exif_lens', 'exif_date', 'exif_make', 'exif_model' ), 'classes': ('collapse') }), ('Flickr Data', { 'fields': ( 'flickr_id', 'flickr_owner', 'flickr_farm', 'flickr_server', 'flickr_secret', 'flickr_originalsecret' ), 'classes': ('collapse') }), ) # Options for OSM map Using custom ESRI topo map default_lon = -9285175 default_lat = 4025046 default_zoom = 6 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(Photo, PhotoAdmin) class PhotoGalleryAdmin(OSMGeoAdmin): list_display = ('set_title', 'region', 'location', 'pub_date') list_filter = ('region', 'location') fieldsets = ( (None, { 'fields': ( ('set_id', 'set_title', 'set_desc'), 'set_slug', 'primary', 'location', 'region', 'photos', 'pub_date' ) }), ) admin.site.register(PhotoGallery, PhotoGalleryAdmin)