summaryrefslogtreecommitdiff
path: root/chimere/widgets.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@proxience.com>2015-02-14 21:42:27 +0100
committerÉtienne Loks <etienne.loks@proxience.com>2015-02-14 21:42:27 +0100
commit660ce29ac2cf781c8e9607a837b9832e1692e156 (patch)
treedfc74f2056cfc9a1ce12eb17adf8bc3771510495 /chimere/widgets.py
parent3daa945c334f719e7edb086021bfcc93880eb7f7 (diff)
parent57bbba43a75a72eeacd44f1ce5fcd6f203dc321c (diff)
downloadChimère-660ce29ac2cf781c8e9607a837b9832e1692e156.tar.bz2
Chimère-660ce29ac2cf781c8e9607a837b9832e1692e156.zip
Merge branch 'master' into nef
Conflicts: chimere/admin.py chimere/forms.py chimere/models.py chimere/settings.sample.py chimere/static/chimere/js/jquery.chimere-ol.js chimere/templates/chimere/base.html chimere/templates/chimere/blocks/head_chimere.html chimere/templates/chimere/blocks/map.html chimere/templates/chimere/main_map.html chimere/templatetags/chimere_tags.py chimere/tests.py chimere/urls.py chimere/views.py chimere/widgets.py
Diffstat (limited to 'chimere/widgets.py')
-rw-r--r--chimere/widgets.py29
1 files changed, 22 insertions, 7 deletions
diff --git a/chimere/widgets.py b/chimere/widgets.py
index d5e502e..e357268 100644
--- a/chimere/widgets.py
+++ b/chimere/widgets.py
@@ -243,11 +243,11 @@ class PointChooserWidget(forms.TextInput):
js = list(settings.JQUERY_JS_URLS) + \
settings.MAP_JS_URLS[settings.CHIMERE_EDIT_RENDERER]
- def render(self, name, value, attrs=None, map_name=''):
+ def render(self, name, value, attrs=None, area_name='', initialized=True):
'''
Render a map and latitude, longitude information field
'''
- val = '0'
+ val = ''
value_x, value_y = 0, 0
if value:
val = str(value)
@@ -275,6 +275,7 @@ class PointChooserWidget(forms.TextInput):
'value_x': value_x,
'name': name,
'val': val,
+ 'initialized': initialized,
'isvalue': bool(value),
'default_map': "true" if default_map else "false",
}) % \
@@ -288,12 +289,26 @@ class PointChooserWidget(forms.TextInput):
)
)
+class HiddenPointChooserWidget(PointChooserWidget):
+ """
+ OpenLayers doesn't initialize well on an hidden field so specific JS
+ must be loaded.
+ """
+ def render(self, *args, **kwargs):
+ kwargs['initialized'] = False
+ return super(HiddenPointChooserWidget, self).render(*args, **kwargs)
+
class PointField(models.PointField):
'''
Set the widget for the form field
'''
+ def __init__(self, *args, **kwargs):
+ self.widget = kwargs.pop('widget') if 'widget' in kwargs \
+ else PointChooserWidget
+ return super(PointField, self).__init__(*args, **kwargs)
+
def formfield(self, **keys):
- defaults = {'widget': PointChooserWidget}
+ defaults = {'widget': self.widget}
keys.update(defaults)
return super(PointField, self).formfield(**keys)
@@ -504,19 +519,19 @@ class AreaWidget(forms.TextInput):
help_msg = _(u"Hold CTRL, click and drag to select area on the map")
tpl += u"<p class='help-osm'>%s</p>\n" % help_msg
tpl += u"<script type='text/javascript'>\n"
- tpl += u"function init_map_form (){\ninit();\n"
+ tpl += u"function init_map_form (){\ninit('map_edit_area');\n"
if value:
tpl += u"var extent = new OpenLayers.Bounds(%f, %f, %f, %f);\n"\
u"extent.transform(epsg_display_projection, epsg_projection);\n"\
u"updateForm(extent);\n"\
- u"map.zoomToExtent(extent, true);\n"\
- u"map.zoomOut();" % (upper_left_lon, upper_left_lat,
+ u"area_map.zoomToExtent(extent, true);\n"\
+ u"area_map.zoomOut();" % (upper_left_lon, upper_left_lat,
lower_right_lon, lower_right_lat)
tpl += u"}\n"
if initialized:
tpl += u"$(document).ready(function($) {init_map_form()});\n"
tpl += u"</script>\n"
- tpl += u"<div id='map_edit'>\n"
+ tpl += u"<div id='map_edit_area'>\n"
return mark_safe(tpl)
def value_from_datadict(self, data, files, name):