from django.contrib import admin from django.contrib.gis.admin import GISModelAdmin from django import forms from django.contrib.contenttypes.admin import GenericStackedInline from utils.widgets import AdminImageWidget, LGEntryForm from .models import Post, Trip, Guide from media.models import LuxImage from utils.util import get_latlon @admin.register(Post) class PostAdmin(GISModelAdmin): 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', 'post_topic', 'pub_date', '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', 'subtitle'), 'body_markdown', ('featured_image', 'pub_date'), ('dek', 'meta_description'), ('status', 'post_type', 'post_topic'), ('slug', "template_name", 'enable_comments'), 'point', ('related'), ('site', 'trip'), ), '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() gis_widget_kwargs = { "attrs": { "default_lon": lon, "default_lat": lat, "default_zoom": 6, "map_width": 700, "map_height": 425, } } class Media: js = ('image-loader.js', 'next-prev-links.js') #'product-loader.js', css = { "all": ("my_styles.css",) } @admin.register(Trip) class TripAdmin(admin.ModelAdmin): 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",) } @admin.register(Guide) class GuideAdmin(admin.ModelAdmin): form = LGEntryForm list_display = ('title', 'is_featured', 'slug' ) prepopulated_fields = {'slug': ('title',)} search_fields = ('title',) filter_horizontal = ('posts',) fieldsets = ( ('', { 'fields': ( 'title', 'subtitle', 'seo_title', 'body_markdown', 'posts', ('slug', 'status'), 'dek', 'meta_description', 'featured_image', ('is_featured', 'related') ), 'classes': ( 'show', 'extrapretty' ) }), ) class Media: js = ('image-loader.js', 'next-prev-links.js') css = { "all": ("my_styles.css",) }