1475 |
1475 |
_('Initial zoom level must be between minimal and maximal zoom levels.'))
|
1476 |
1476 |
|
1477 |
1477 |
|
1478 |
|
class ItemField(WidgetField, MapOptionsMixin):
|
|
1478 |
class ItemFieldMixin(object):
|
|
1479 |
def add_items_fields_admin_form(self, form):
|
|
1480 |
real_data_source = data_sources.get_real(self.data_source)
|
|
1481 |
form.add(RadiobuttonsWidget, 'data_mode',
|
|
1482 |
title=_('Data'),
|
|
1483 |
options=[('simple-list', _('Simple List'), 'simple-list'),
|
|
1484 |
('data-source', _('Data Source'), 'data-source')],
|
|
1485 |
value='data-source' if real_data_source else 'simple-list',
|
|
1486 |
attrs={'data-dynamic-display-parent': 'true'},
|
|
1487 |
extra_css_class='no-bottom-margin')
|
|
1488 |
form.add(WidgetList, 'items', element_type=StringWidget,
|
|
1489 |
value=self.items,
|
|
1490 |
required=False,
|
|
1491 |
element_kwargs={'render_br': False, 'size': 50},
|
|
1492 |
add_element_label=_('Add item'),
|
|
1493 |
attrs={'data-dynamic-display-child-of': 'data_mode',
|
|
1494 |
'data-dynamic-display-value': 'simple-list'}
|
|
1495 |
)
|
|
1496 |
form.add(data_sources.DataSourceSelectionWidget, 'data_source',
|
|
1497 |
value=self.data_source,
|
|
1498 |
required=False,
|
|
1499 |
hint=_('This will get the available items from an external source.'),
|
|
1500 |
attrs={'data-dynamic-display-child-of': 'data_mode',
|
|
1501 |
'data-dynamic-display-value': 'data-source'}
|
|
1502 |
)
|
|
1503 |
|
|
1504 |
def check_items_admin_form(self, form):
|
|
1505 |
data_mode = form.get_widget('data_mode').parse()
|
|
1506 |
if data_mode == 'simple-list':
|
|
1507 |
items = form.get_widget('items').parse()
|
|
1508 |
d = {}
|
|
1509 |
for v in (items or []):
|
|
1510 |
if v in d:
|
|
1511 |
form.set_error('items', _('Duplicated Items'))
|
|
1512 |
return
|
|
1513 |
d[v] = None
|
|
1514 |
|
|
1515 |
data_source_type = form.get_widget('data_source').get_widget('type')
|
|
1516 |
data_source_type.set_value(None)
|
|
1517 |
data_source_type.transfer_form_value(get_request())
|
|
1518 |
|
|
1519 |
|
|
1520 |
class ItemField(WidgetField, MapOptionsMixin, ItemFieldMixin):
|
1479 |
1521 |
key = 'item'
|
1480 |
1522 |
description = N_('List')
|
1481 |
1523 |
allow_complex = True
|
... | ... | |
1695 |
1737 |
options=options,
|
1696 |
1738 |
value=self.display_mode,
|
1697 |
1739 |
attrs={'data-dynamic-display-parent': 'true'})
|
1698 |
|
real_data_source = data_sources.get_real(self.data_source)
|
1699 |
|
form.add(RadiobuttonsWidget, 'data_mode',
|
1700 |
|
title=_('Data'),
|
1701 |
|
options=[('simple-list', _('Simple List'), 'simple-list'),
|
1702 |
|
('data-source', _('Data Source'), 'data-source')],
|
1703 |
|
value='data-source' if real_data_source else 'simple-list',
|
1704 |
|
attrs={'data-dynamic-display-parent': 'true'},
|
1705 |
|
extra_css_class='no-bottom-margin')
|
1706 |
|
form.add(WidgetList, 'items', element_type=StringWidget,
|
1707 |
|
value=self.items,
|
1708 |
|
required=False,
|
1709 |
|
element_kwargs={'render_br': False, 'size': 50},
|
1710 |
|
add_element_label=_('Add item'),
|
1711 |
|
attrs={'data-dynamic-display-child-of': 'data_mode',
|
1712 |
|
'data-dynamic-display-value': 'simple-list'}
|
1713 |
|
)
|
1714 |
|
form.add(data_sources.DataSourceSelectionWidget, 'data_source',
|
1715 |
|
value=self.data_source,
|
1716 |
|
required=False,
|
1717 |
|
hint=_('This will get the available items from an external source.'),
|
1718 |
|
attrs={'data-dynamic-display-child-of': 'data_mode',
|
1719 |
|
'data-dynamic-display-value': 'data-source'}
|
1720 |
|
)
|
|
1740 |
self.add_items_fields_admin_form(form)
|
1721 |
1741 |
form.add(CheckboxWidget, 'display_disabled_items',
|
1722 |
1742 |
title=_('Display disabled items'),
|
1723 |
1743 |
value=self.display_disabled_items,
|
... | ... | |
1732 |
1752 |
'display_disabled_items', 'initial_zoom', 'min_zoom', 'max_zoom']
|
1733 |
1753 |
|
1734 |
1754 |
def check_admin_form(self, form):
|
1735 |
|
data_mode = form.get_widget('data_mode').parse()
|
1736 |
|
if data_mode == 'simple-list':
|
1737 |
|
items = form.get_widget('items').parse()
|
1738 |
|
d = {}
|
1739 |
|
for v in (items or []):
|
1740 |
|
if v in d:
|
1741 |
|
form.set_error('items', _('Duplicated Items'))
|
1742 |
|
return
|
1743 |
|
d[v] = None
|
1744 |
|
|
1745 |
|
data_source_type = form.get_widget('data_source').get_widget('type')
|
1746 |
|
data_source_type.set_value(None)
|
1747 |
|
data_source_type.transfer_form_value(get_request())
|
1748 |
|
|
|
1755 |
self.check_items_admin_form(form)
|
1749 |
1756 |
self.check_zoom_admin_form(form)
|
1750 |
1757 |
|
1751 |
1758 |
def stats(self, values):
|
... | ... | |
1785 |
1792 |
register_field_class(ItemField)
|
1786 |
1793 |
|
1787 |
1794 |
|
1788 |
|
class ItemsField(WidgetField):
|
|
1795 |
class ItemsField(WidgetField, ItemFieldMixin):
|
1789 |
1796 |
key = 'items'
|
1790 |
1797 |
description = N_('Multiple choice list')
|
1791 |
1798 |
allow_complex = True
|
... | ... | |
1831 |
1838 |
WidgetField.fill_admin_form(self, form)
|
1832 |
1839 |
form.add(CheckboxWidget, 'in_filters', title=_('Display in default filters'),
|
1833 |
1840 |
value=self.in_filters, advanced=True)
|
1834 |
|
form.add(WidgetList, 'items', title = _('Items'), element_type = StringWidget,
|
1835 |
|
value = self.items, required = False,
|
1836 |
|
element_kwargs = {'render_br': False, 'size': 50},
|
1837 |
|
add_element_label = _('Add item'))
|
|
1841 |
self.add_items_fields_admin_form(form)
|
1838 |
1842 |
form.add(IntWidget, 'max_choices', title = _('Maximum number of choices'),
|
1839 |
1843 |
value = self.max_choices, required = False, size = 4)
|
1840 |
|
form.add(data_sources.DataSourceSelectionWidget, 'data_source',
|
1841 |
|
value=self.data_source,
|
1842 |
|
allow_jsonp=False,
|
1843 |
|
title=_('Data Source'),
|
1844 |
|
hint=_('This will get the available items from an external source.'),
|
1845 |
|
required=False,
|
1846 |
|
advanced=is_datasource_advanced(self.data_source))
|
1847 |
1844 |
form.add(CheckboxWidget, 'display_disabled_items',
|
1848 |
1845 |
title=_('Display disabled items'),
|
1849 |
1846 |
value=self.display_disabled_items,
|
... | ... | |
1855 |
1852 |
'display_disabled_items']
|
1856 |
1853 |
|
1857 |
1854 |
def check_admin_form(self, form):
|
1858 |
|
items = form.get_widget('items').parse()
|
1859 |
|
d = {}
|
1860 |
|
for v in (items or []):
|
1861 |
|
if v in d:
|
1862 |
|
form.set_error('items', _('Duplicated Items'))
|
1863 |
|
return
|
1864 |
|
d[v] = None
|
|
1855 |
self.check_items_admin_form(form)
|
1865 |
1856 |
|
1866 |
1857 |
def get_prefill_value(self, user=None, force_string=True):
|
1867 |
1858 |
return super(ItemsField, self).get_prefill_value(user=user, force_string=False)
|
1868 |
|
-
|