#28105: BaseGeometryWidget.get_context() crashes if attrs contains the name of 
an
existing key
-------------------------------------+------------------------------------
     Reporter:  Dylan Verheul        |                    Owner:  nobody
         Type:  Bug                  |                   Status:  new
    Component:  GIS                  |                  Version:  1.11
     Severity:  Release blocker      |               Resolution:
     Keywords:  gis, forms, widgets  |             Triage Stage:  Accepted
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+------------------------------------
Changes (by Tim Graham):

 * severity:  Normal => Release blocker
 * stage:  Unreviewed => Accepted
 * component:  Forms => GIS


Old description:

> In django.contrib.forms.widgets there is this part (line 67 in corrent
> master):
>
> context = 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
>         ))
>
> If `attrs` also contains a key 'geom_type' this leads to an inevitable
> crash.
>
> This should probaly be something like:
>
> context_kwargs = attrs.copy()
> context_kwargs.upgrade(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(),
> ))
>
> Currently this causes django-bootstrap3 to fail for Django 1.11.

New description:

 In`contrib.gis.forms.widgets` there is this part (line 67 in current
 master):

 {{{
 context = 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
 ))
 }}}

 If `attrs` also contains a key 'geom_type' this leads to an inevitable
 crash.

 This should probaly be something like:

 {{{
 context_kwargs = attrs.copy()
 context_kwargs.update(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(),
 ))
 }}}
 Currently this causes django-bootstrap3 to fail for Django 1.11.

--

Comment:

 Could you explain more about the use case that causes the crash? If you
 could write a test for `tests/gis_tests/test_geoforms.py`, that would be
 ideal.

--
Ticket URL: <https://code.djangoproject.com/ticket/28105#comment:1>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/062.933449a58522941d0d8d484d18f946dc%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to