from django.contrib import admin from django import forms from django.contrib.gis.admin import OSMGeoAdmin from django.contrib.contenttypes.admin import GenericStackedInline from utils.widgets import AdminImageWidget, LGEntryForm from .models import Entry, HomepageCurrator, Home #, RelatedPost from photos.forms import GalleryForm from photos.models import LuxImage from utils.util import get_latlon #@admin.register(RelatedPost) #class RelatedPostAdmin(admin.ModelAdmin): # pass @admin.register(Entry) class EntryAdmin(OSMGeoAdmin): form = LGEntryForm def get_queryset(self, request): test_model_qs = super(EntryAdmin, self).get_queryset(request) test_model_qs = test_model_qs.prefetch_related('related').prefetch_related('books') return test_model_qs 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) elif db_field.name == 'meta_description': field = forms.CharField(widget=forms.Textarea(attrs={'rows': 4, 'cols': 75})) field.required = False 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', 'related') fieldsets = ( ('Entry', { 'fields': ( 'title', 'subtitle', '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', 'related', ), '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",) }