from django.contrib import admin from django import forms from django.contrib.gis.admin import OSMGeoAdmin from utils.widgets import AdminImageWidget, LGEntryForm from .models import Entry, HomepageCurrator, Home from photos.forms import GalleryForm from photos.models import LuxImage from utils.util import get_latlon @admin.register(Entry) class EntryAdmin(OSMGeoAdmin): form = LGEntryForm def render_change_form(self, request, context, *args, **kwargs): #context['adminform'].form.fields['featured_image'].queryset = LuxImage.objects.all()[:200] return super(EntryAdmin, self).render_change_form(request, context, *args, **kwargs) def formfield_for_dbfield(self, db_field, **kwargs): if db_field.name == 'thumbnail' or db_field.name == 'image': field = forms.FileField(widget=AdminImageWidget) else: field = super(EntryAdmin, self).formfield_for_dbfield(db_field, **kwargs) return field list_display = ('title', 'pub_date', 'template_name', 'status', 'location', 'photo_gallery') search_fields = ['title', 'body_markdown'] prepopulated_fields = {"slug": ('title',)} list_filter = ('pub_date', 'enable_comments', 'status', 'location__state__country__lux_region') filter_horizontal = ('field_notes', 'books') fieldsets = ( ('Entry', { 'fields': ( 'title', 'body_markdown', ('pub_date', 'status'), 'slug', 'point' ), 'classes': ( 'show', 'extrapretty', 'wide' ) } ), ('Formatting data', { 'fields': ( 'dek', 'meta_description', 'template_name', 'enable_comments', 'featured_image', ), }), ('Extra', { 'fields': ( 'field_notes', 'books', ), 'classes': ( 'collapse', 'extrapretty', 'wide' ) }), ) # options for OSM map Using custom ESRI topo map lat, lon = get_latlon() default_lon = lon default_lat = lat default_zoom = 10 units = True scrollable = False map_width = 700 map_height = 425 map_template = 'gis/admin/osm.html' openlayers_url = '/static/admin/js/OpenLayers.js' class Media: js = ('image-loader.js', 'next-prev-links.js') css = { "all": ("my_styles.css",) } @admin.register(HomepageCurrator) class HomepageCurratorAdmin(admin.ModelAdmin): form = GalleryForm filter_horizontal = ('popular',) class Media: js = ('image-loader.js', 'next-prev-links.js') css = { "all": ("my_styles.css",) } @admin.register(Home) class HomeAdmin(admin.ModelAdmin): form = LGEntryForm filter_horizontal = ('popular',) class Media: js = ('image-loader.js', 'next-prev-links.js') css = { "all": ("my_styles.css",) }