from django.contrib import admin from django import forms from django.contrib.gis.admin import OSMGeoAdmin from .models import LuxImage, LuxGallery, LuxImageSize, LuxVideo from django.shortcuts import render from django.contrib.admin import helpers from django.http import HttpResponseRedirect @admin.register(LuxImageSize) class LuxImageSizeAdmin(OSMGeoAdmin): list_display = ('name','slug', 'width', 'height', 'quality') @admin.register(LuxVideo) class LuxVideoAdmin(OSMGeoAdmin): pass @admin.register(LuxImage) class LuxImageAdmin(OSMGeoAdmin): list_display = ('pk', 'admin_thumbnail', 'pub_date', 'caption', 'location') list_filter = ('pub_date', 'location') search_fields = ['title', 'caption', 'alt'] list_editable = ('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' fieldsets = ( (None, { 'fields': ( 'image', 'alt', 'sizes', 'caption', 'pub_date', 'title', ) }), ('Exif and Other Data', { 'classes': ('collapse',), 'fields': ( 'point', ('is_public'), ('photo_credit_source', 'photo_credit_url'), 'exif_raw', 'exif_aperture', 'exif_make', 'exif_model', 'exif_exposure', 'exif_iso', 'exif_focal_length', 'exif_lens', 'exif_date', 'height', 'width'), }), ) def save_related(self, request, form, formsets, change): super(LuxImageAdmin, self).save_related(request, form, formsets, change) if not form.instance.sizes.all(): print("there are no sizes") form.instance.sizes.add(*LuxImageSize.objects.filter(slug__in=["picwide-sm", "picwide-med", "picwide"])) class Media: js = ('image-preview.js', 'next-prev-links.js')