from django.contrib import admin from django import forms from blog.models import Entry, PostImage, EntryAside from blog.widgets import AdminImageWidget from django.contrib.gis.admin import OSMGeoAdmin from django.contrib.gis.maps.google import GoogleMap from django.conf import settings from models import * GMAP = GoogleMap(key=settings.GOOGLE_MAPS_API_KEY) class EntryAsideInline(admin.TabularInline): model = EntryAside extra = 1 class EntryAsideAdmin(admin.ModelAdmin): pass class BlogEntryForm(forms.ModelForm): class Meta: model = Entry widgets = { 'body_markdown': forms.Textarea(attrs={'rows':50, 'cols':100}), } def clean_point(self): try: location = Location.objects.filter(geometry__contains=self.cleaned_data['point']).get() self.location = location except Location.DoesNotExist: raise forms.ValidationError("There is no location associated with that point") return self.cleaned_data['point'] class EntryAdmin(OSMGeoAdmin): form = BlogEntryForm 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'), 'classes': ('grp-collapse grp-closed',)}), ) class Media: js = ['/media/admin/custom/model.js'] map_template = 'gis/admin/osm.html' # Default GeoDjango OpenLayers map options # Uncomment and modify as desired # To learn more about this jargon visit: # www.openlayers.org default_lon = -9314310 default_lat = 3991847 default_zoom = 6 #display_wkt = False #display_srid = False #extra_js = [] #num_zoom = 18 #max_zoom = False #min_zoom = False #units = False #max_resolution = False #max_extent = False #modifiable = True #mouse_position = True #scale_text = True #layerswitcher = True scrollable = False #admin_media_prefix = settings.ADMIN_MEDIA_PREFIX map_width = 700 map_height = 325 #map_srid = 4326 #map_template = 'gis/admin/openlayers.html' #openlayers_url = 'http://openlayers.org/api/2.6/OpenLayers.js' #wms_url = 'http://labs.metacarta.com/wms/vmap0' #wms_layer = 'basic' #wms_name = 'OpenLayers WMS' #debug = False #widget = OpenLayersWidget class PostImageAdmin(admin.ModelAdmin): list_display = ('title', 'post_image') admin.site.register(PostImage, PostImageAdmin) admin.site.register(EntryAside, EntryAsideAdmin) admin.site.register(Entry, EntryAdmin)