0001-misc-add-settings-for-default-map-zoom-level-27154.patch
tests/admin_pages/test_settings.py | ||
---|---|---|
752 | 752 |
def test_settings_geolocation(pub): |
753 | 753 |
create_superuser(pub) |
754 | 754 |
app = login(get_app(pub)) |
755 | ||
756 |
assert pub.get_default_zoom_level() == '13' |
|
757 | ||
755 | 758 |
resp = app.get('/backoffice/settings/') |
756 | 759 |
resp = resp.click('Geolocation') |
757 | 760 |
resp.form['default-position$latlng'].value = '1.234;-1.234' |
... | ... | |
765 | 768 |
pub.reload_cfg() |
766 | 769 |
assert pub.cfg['misc']['default-position'] == '1.234;-1.234' |
767 | 770 | |
771 |
assert pub.cfg['misc']['default-zoom-level'] == '13' |
|
772 |
resp = resp.click('Geolocation') |
|
773 |
resp.form['default-zoom-level'] = '16' |
|
774 |
resp = resp.form.submit().follow() |
|
775 |
assert pub.cfg['misc']['default-zoom-level'] == '16' |
|
776 | ||
768 | 777 | |
769 | 778 |
def test_settings_permissions(pub): |
770 | 779 |
create_superuser(pub) |
tests/form_pages/test_all.py | ||
---|---|---|
3589 | 3589 |
assert data.data == {'1': 'bla', '0': '1.234;-1.234'} |
3590 | 3590 | |
3591 | 3591 | |
3592 |
def test_form_map_initial_zoom_level(pub): |
|
3593 |
formdef = create_formdef() |
|
3594 |
formdef.fields = [ |
|
3595 |
fields.MapField(id='0', label='map'), |
|
3596 |
] |
|
3597 |
formdef.store() |
|
3598 |
resp = get_app(pub).get('/test/') |
|
3599 |
assert 'data-initial_zoom="13"' in resp.text |
|
3600 |
pub.cfg['misc']['default-zoom-level'] = '16' |
|
3601 |
pub.write_cfg() |
|
3602 |
resp = get_app(pub).get('/test/') |
|
3603 |
assert 'data-initial_zoom="16"' in resp.text |
|
3604 | ||
3605 |
formdef.fields[0].initial_zoom = '11' |
|
3606 |
formdef.store() |
|
3607 |
resp = get_app(pub).get('/test/') |
|
3608 |
assert 'data-initial_zoom="11"' in resp.text |
|
3609 | ||
3610 | ||
3592 | 3611 |
def test_form_map_geolocation_text_field(pub): |
3593 | 3612 |
formdef = create_formdef() |
3594 | 3613 |
formdef.fields = [ |
wcs/admin/settings.py | ||
---|---|---|
36 | 36 |
from wcs.blocks import BlockDef |
37 | 37 |
from wcs.carddef import CardDef |
38 | 38 |
from wcs.data_sources import NamedDataSource |
39 |
from wcs.fields import MapOptionsMixin |
|
39 | 40 |
from wcs.formdef import FormDef |
40 | 41 |
from wcs.qommon import _, errors, get_cfg, ident, misc, template |
41 | 42 |
from wcs.qommon.admin.cfg import cfg_submit |
... | ... | |
1332 | 1333 |
default_zoom='9', |
1333 | 1334 |
required=False, |
1334 | 1335 |
) |
1336 |
zoom_levels = [(x[0], x[1], x[0]) for x in MapOptionsMixin.get_zoom_levels()] |
|
1337 |
form.add( |
|
1338 |
SingleSelectWidget, |
|
1339 |
'default-zoom-level', |
|
1340 |
title=_('Default zoom level'), |
|
1341 |
value=get_publisher().get_default_zoom_level(), |
|
1342 |
options=zoom_levels, |
|
1343 |
required=False, |
|
1344 |
) |
|
1345 | ||
1335 | 1346 |
form.add_submit('submit', _('Submit')) |
1336 | 1347 |
form.add_submit('cancel', _('Cancel')) |
1337 | 1348 | |
... | ... | |
1339 | 1350 |
return redirect('.') |
1340 | 1351 | |
1341 | 1352 |
if form.is_submitted() and not form.has_errors(): |
1342 |
cfg_submit(form, 'misc', ['default-position']) |
|
1353 |
cfg_submit(form, 'misc', ['default-position', 'default-zoom-level'])
|
|
1343 | 1354 |
return redirect('.') |
1344 | 1355 | |
1345 | 1356 |
get_response().breadcrumb.append(('geolocation', _('Geolocation Settings'))) |
... | ... | |
1347 | 1358 |
r = TemplateIO(html=True) |
1348 | 1359 |
r += htmltext('<h2>%s</h2>') % _('Geolocation Settings') |
1349 | 1360 |
r += form.render() |
1361 |
r += htmltext( |
|
1362 |
'''<script> |
|
1363 |
$('#form_default-zoom-level').on('change', function() { |
|
1364 |
var map = $('.qommon-map')[0].leaflet_map; |
|
1365 |
var new_zoom = parseInt($(this).val()); |
|
1366 |
if (! isNaN(new_zoom)) { |
|
1367 |
map.setZoom(parseInt($(this).val())); |
|
1368 |
} |
|
1369 |
}); |
|
1370 |
</script>''' |
|
1371 |
) |
|
1350 | 1372 |
return r.getvalue() |
1351 | 1373 | |
1352 | 1374 |
def user_templates(self): |
wcs/fields.py | ||
---|---|---|
1708 | 1708 |
min_zoom = None |
1709 | 1709 |
max_zoom = None |
1710 | 1710 | |
1711 |
def fill_zoom_admin_form(self, form, **kwargs):
|
|
1712 |
# 0: whole world, 9: wide area, 11: area, 13: town, 16: small road
|
|
1711 |
@classmethod
|
|
1712 |
def get_zoom_levels(cls):
|
|
1713 | 1713 |
zoom_levels = [ |
1714 | 1714 |
(None, '---'), |
1715 | 1715 |
('0', _('Whole world')), |
... | ... | |
1721 | 1721 |
('18', _('Neighbourhood')), |
1722 | 1722 |
('19', _('Ant')), |
1723 | 1723 |
] |
1724 |
return zoom_levels |
|
1725 | ||
1726 |
def fill_zoom_admin_form(self, form, **kwargs): |
|
1727 |
zoom_levels = self.get_zoom_levels() |
|
1728 |
zoom_levels_dict = dict(zoom_levels) |
|
1729 |
default_zoom_level = get_publisher().get_default_zoom_level() |
|
1730 |
initial_zoom_levels = zoom_levels[:] |
|
1731 |
initial_zoom_levels[0] = (None, _('Default (%s)') % zoom_levels_dict[default_zoom_level]) |
|
1724 | 1732 |
form.add( |
1725 | 1733 |
SingleSelectWidget, |
1726 | 1734 |
'initial_zoom', |
1727 | 1735 |
title=_('Initial zoom level'), |
1728 |
value=self.initial_zoom or '13',
|
|
1729 |
options=zoom_levels, |
|
1736 |
value=self.initial_zoom, |
|
1737 |
options=initial_zoom_levels,
|
|
1730 | 1738 |
**kwargs, |
1731 | 1739 |
) |
1732 | 1740 |
form.add( |
wcs/qommon/form.py | ||
---|---|---|
2676 | 2676 |
self.map_attributes = {} |
2677 | 2677 |
self.map_attributes.update(get_publisher().get_map_attributes()) |
2678 | 2678 |
self.sync_map_and_address_fields = get_publisher().has_site_option('sync-map-and-address-fields') |
2679 |
if kwargs.get('initial_zoom') is None: |
|
2680 |
kwargs['initial_zoom'] = get_publisher().get_default_zoom_level() |
|
2679 | 2681 |
for attribute in ('initial_zoom', 'min_zoom', 'max_zoom', 'init_with_geoloc'): |
2680 | 2682 |
if attribute in kwargs: |
2681 | 2683 |
self.map_attributes['data-' + attribute] = kwargs.pop(attribute) |
wcs/qommon/publisher.py | ||
---|---|---|
803 | 803 |
default_position = '50.84;4.36' |
804 | 804 |
return default_position |
805 | 805 | |
806 |
def get_default_zoom_level(self): |
|
807 |
return self.cfg.get('misc', {}).get('default-zoom-level', '13') |
|
808 | ||
806 | 809 |
def get_map_attributes(self): |
807 | 810 |
attrs = {} |
808 | 811 |
attrs['data-def-lat'], attrs['data-def-lng'] = self.get_default_position().split(';') |
809 |
- |