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 Post, Trip from media.models import LuxImage from utils.util import get_latlon @admin.register(Post) class PostAdmin(OSMGeoAdmin): form = LGEntryForm def get_queryset(self, request): test_model_qs = super(PostAdmin, 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(PostAdmin, 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(PostAdmin, self).formfield_for_dbfield(db_field, **kwargs) return field list_display = ('title', 'site', 'post_type', 'pub_date', 'template_name', 'status',) search_fields = ['title', 'body_markdown'] prepopulated_fields = {"slug": ('title',)} list_filter = ('site', 'post_type', 'pub_date', 'enable_comments', 'status') filter_horizontal = ('related', 'books', 'field_notes') fieldsets = ( ('Entry', { 'fields': ( ('title', 'short_title'), ('subtitle', 'trip'), 'body_markdown', ('pub_date', 'status', 'post_type'), ('slug', 'enable_comments',), 'point', 'dek', 'meta_description', 'template_name', ('featured_image','related'), 'site' ), 'classes': ( 'show', 'extrapretty', 'wide' ) } ), ('Extras', { 'fields': ( 'books', 'field_notes', ('has_code', 'has_video', 'disclaimer',), 'topics', 'prologue_markdown', 'epilogue_markdown', 'originally_published_by', 'originally_published_by_url', ), 'classes': ( 'collapse', ) }), ) # 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') #'product-loader.js', css = { "all": ("my_styles.css",) } @admin.register(Trip) class TripAdmin(OSMGeoAdmin): form = LGEntryForm list_display = ('title', 'order', 'date_started' ) prepopulated_fields = {'slug': ('title',)} search_fields = ('title',) fieldsets = ( ('Region', { 'fields': ( 'title', 'order', 'subtitle', 'body_markdown', 'slug', 'date_started', 'date_ended', 'featured_image' ), 'classes': ( 'show', 'extrapretty' ) }), ) class Media: js = ('image-loader.js', 'next-prev-links.js') css = { "all": ("my_styles.css",) }