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, EntryAside, PostImage, HomepageCurrator class EntryAsideInline(admin.TabularInline): model = EntryAside extra = 1 class EntryAsideAdmin(admin.ModelAdmin): pass class EntryAdmin(OSMGeoAdmin): form = LGEntryForm inlines = [EntryAsideInline] 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', 'region', 'location', 'photo_gallery') search_fields = ['title', 'body_markdown'] prepopulated_fields = {"slug": ('title',)} list_filter = ('pub_date', 'enable_comments', 'status', 'location__state__country__lux_region') fieldsets = ( ('Entry', { 'fields': ( 'title', 'body_markdown', ('pub_date', 'status'), 'slug', 'point' ), 'classes': ( 'show', 'extrapretty', 'wide' ) } ), ('Formatting data', { 'fields': ( 'dek', 'meta_description', ('image', 'thumbnail'), 'template_name', 'enable_comments', ), }), ) # 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' class PostImageAdmin(admin.ModelAdmin): list_display = ('title', 'post_image') class HomepageCurratorAdmin(admin.ModelAdmin): filter_horizontal = ('entry_list',) pass admin.site.register(PostImage, PostImageAdmin) admin.site.register(EntryAside, EntryAsideAdmin) admin.site.register(Entry, EntryAdmin) admin.site.register(HomepageCurrator, HomepageCurratorAdmin)