1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
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)
|