mirror of
https://github.com/django/django.git
synced 2025-05-06 06:56:30 +00:00
[1.11.x] Fixed #28105 -- Fixed crash in BaseGeometryWidget.get_context() when overriding existing attrs.
Backport of 75aeebebfe3df3ea46b8e12dd5e7719f98664d3a from master
This commit is contained in:
parent
a2975cb083
commit
b1aea89dee
@ -65,15 +65,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…
x
Reference in New Issue
Block a user