|
1 | 1 | # -*- coding: utf-8 -*-
|
2 | 2 | from __future__ import unicode_literals
|
| 3 | +from distutils.version import LooseVersion |
3 | 4 |
|
| 5 | +from django import get_version |
4 | 6 | from django import forms
|
5 | 7 | from django.core import validators
|
6 | 8 | from django.template.defaultfilters import slugify
|
@@ -36,11 +38,9 @@ def media(self):
|
36 | 38 | def serialize(self, value):
|
37 | 39 | return value.geojson if value else ''
|
38 | 40 |
|
39 |
| - def render(self, name, value, attrs=None): |
| 41 | + def _get_attrs(self, name, attrs=None): |
40 | 42 | assert self.map_srid == 4326, 'Leaflet vectors should be decimal degrees.'
|
41 | 43 |
|
42 |
| - value = None if value in validators.EMPTY_VALUES else value |
43 |
| - |
44 | 44 | # Retrieve params from Field init (if any)
|
45 | 45 | self.geom_type = self.attrs.get('geom_type', self.geom_type)
|
46 | 46 | self.settings_overrides = self.attrs.get('settings_overrides', self.settings_overrides)
|
@@ -68,4 +68,17 @@ def render(self, name, value, attrs=None):
|
68 | 68 | settings_overrides=attrs.get('settings_overrides', getattr(self, 'settings_overrides', None)),
|
69 | 69 | geometry_field_class=attrs.get('geometry_field_class', getattr(self, 'geometry_field_class', 'L.GeometryField')),
|
70 | 70 | field_store_class=attrs.get('field_store_class', getattr(self, 'field_store_class', 'L.FieldStore')))
|
71 |
| - return super(LeafletWidget, self).render(name, value, attrs) |
| 71 | + return attrs |
| 72 | + |
| 73 | + # Django 1.11 changed how the widgets are rendered |
| 74 | + if LooseVersion(get_version()) >= LooseVersion('1.11'): |
| 75 | + def get_context(self, name, value, attrs): |
| 76 | + value = None if value in validators.EMPTY_VALUES else value |
| 77 | + context = super(LeafletWidget, self).get_context(name, value, attrs) |
| 78 | + context.update(self._get_attrs(name, attrs)) |
| 79 | + return context |
| 80 | + else: |
| 81 | + def render(self, name, value, attrs=None): |
| 82 | + attrs = self._get_attrs(name, attrs) |
| 83 | + value = None if value in validators.EMPTY_VALUES else value |
| 84 | + return super(LeafletWidget, self).render(name, value, attrs) |
0 commit comments