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:
|
||||
attrs = {}
|
||||
|
||||
context.update(self.build_attrs(self.attrs, dict(
|
||||
name=name,
|
||||
module='geodjango_%s' % name.replace('-', '_'), # JS-safe
|
||||
serialized=self.serialize(value),
|
||||
geom_type=gdal.OGRGeomType(self.attrs['geom_type']),
|
||||
STATIC_URL=settings.STATIC_URL,
|
||||
LANGUAGE_BIDI=translation.get_language_bidi(),
|
||||
**attrs
|
||||
)))
|
||||
build_attrs_kwargs = {
|
||||
'name': name,
|
||||
'module': 'geodjango_%s' % name.replace('-', '_'), # JS-safe
|
||||
'serialized': self.serialize(value),
|
||||
'geom_type': gdal.OGRGeomType(self.attrs['geom_type']),
|
||||
'STATIC_URL': settings.STATIC_URL,
|
||||
'LANGUAGE_BIDI': translation.get_language_bidi(),
|
||||
}
|
||||
build_attrs_kwargs.update(attrs)
|
||||
context.update(self.build_attrs(self.attrs, build_attrs_kwargs))
|
||||
return context
|
||||
|
||||
|
||||
|
|
|
@ -66,3 +66,6 @@ Bugfixes
|
|||
|
||||
* Updated the ``contrib.postgres`` ``SplitArrayWidget`` to use template-based
|
||||
widget rendering (:ticket:`28040`).
|
||||
|
||||
* Fixed crash in ``BaseGeometryWidget.get_context()`` when overriding existing
|
||||
``attrs`` (:ticket:`28105`).
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import re
|
||||
|
||||
from django.contrib.gis import forms
|
||||
from django.contrib.gis.forms import BaseGeometryWidget
|
||||
from django.contrib.gis.geos import GEOSGeometry
|
||||
from django.forms import ValidationError
|
||||
from django.test import SimpleTestCase, override_settings, skipUnlessDBFeature
|
||||
|
@ -353,6 +354,12 @@ class OSMWidgetTest(SimpleTestCase):
|
|||
@skipUnlessDBFeature("gis_enabled")
|
||||
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):
|
||||
widget = forms.BaseGeometryWidget()
|
||||
self.assertEqual(
|
||||
|
|
Loading…
Reference in New Issue