Fixed #28105 -- Fixed crash in BaseGeometryWidget.get_context() when overriding existing attrs.
This commit is contained in:
parent
1ebd295082
commit
75aeebebfe
|
@ -63,15 +63,16 @@ class BaseGeometryWidget(Widget):
|
||||||
if attrs is None:
|
if attrs is None:
|
||||||
attrs = {}
|
attrs = {}
|
||||||
|
|
||||||
context.update(self.build_attrs(self.attrs, dict(
|
build_attrs_kwargs = {
|
||||||
name=name,
|
'name': name,
|
||||||
module='geodjango_%s' % name.replace('-', '_'), # JS-safe
|
'module': 'geodjango_%s' % name.replace('-', '_'), # JS-safe
|
||||||
serialized=self.serialize(value),
|
'serialized': self.serialize(value),
|
||||||
geom_type=gdal.OGRGeomType(self.attrs['geom_type']),
|
'geom_type': gdal.OGRGeomType(self.attrs['geom_type']),
|
||||||
STATIC_URL=settings.STATIC_URL,
|
'STATIC_URL': settings.STATIC_URL,
|
||||||
LANGUAGE_BIDI=translation.get_language_bidi(),
|
'LANGUAGE_BIDI': translation.get_language_bidi(),
|
||||||
**attrs
|
}
|
||||||
)))
|
build_attrs_kwargs.update(attrs)
|
||||||
|
context.update(self.build_attrs(self.attrs, build_attrs_kwargs))
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -66,3 +66,6 @@ Bugfixes
|
||||||
|
|
||||||
* Updated the ``contrib.postgres`` ``SplitArrayWidget`` to use template-based
|
* Updated the ``contrib.postgres`` ``SplitArrayWidget`` to use template-based
|
||||||
widget rendering (:ticket:`28040`).
|
widget rendering (:ticket:`28040`).
|
||||||
|
|
||||||
|
* Fixed crash in ``BaseGeometryWidget.get_context()`` when overriding existing
|
||||||
|
``attrs`` (:ticket:`28105`).
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import re
|
import re
|
||||||
|
|
||||||
from django.contrib.gis import forms
|
from django.contrib.gis import forms
|
||||||
|
from django.contrib.gis.forms import BaseGeometryWidget
|
||||||
from django.contrib.gis.geos import GEOSGeometry
|
from django.contrib.gis.geos import GEOSGeometry
|
||||||
from django.forms import ValidationError
|
from django.forms import ValidationError
|
||||||
from django.test import SimpleTestCase, override_settings, skipUnlessDBFeature
|
from django.test import SimpleTestCase, override_settings, skipUnlessDBFeature
|
||||||
|
@ -353,6 +354,12 @@ class OSMWidgetTest(SimpleTestCase):
|
||||||
@skipUnlessDBFeature("gis_enabled")
|
@skipUnlessDBFeature("gis_enabled")
|
||||||
class GeometryWidgetTests(SimpleTestCase):
|
class GeometryWidgetTests(SimpleTestCase):
|
||||||
|
|
||||||
|
def test_get_context_attrs(self):
|
||||||
|
"""The Widget.get_context() attrs argument overrides self.attrs."""
|
||||||
|
widget = BaseGeometryWidget(attrs={'geom_type': 'POINT'})
|
||||||
|
context = widget.get_context('point', None, attrs={'geom_type': 'POINT2'})
|
||||||
|
self.assertEqual(context['geom_type'], 'POINT2')
|
||||||
|
|
||||||
def test_subwidgets(self):
|
def test_subwidgets(self):
|
||||||
widget = forms.BaseGeometryWidget()
|
widget = forms.BaseGeometryWidget()
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
|
|
Loading…
Reference in New Issue