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.
--
Ticket URL: <https://code.djangoproject.com/ticket/28105>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* 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>
* owner: nobody => Dylan Verheul
* status: new => assigned
Comment:
I'll see what I can do to fix it myself.
--
Ticket URL: <https://code.djangoproject.com/ticket/28105#comment:2>
* owner: Dylan Verheul => (none)
* status: assigned => new
* easy: 0 => 1
Comment:
The test suite keeps getting stuck on my Mac. Seems like this is easy
pickings so I'll hope someone else picks it up.
--
Ticket URL: <https://code.djangoproject.com/ticket/28105#comment:3>
Comment (by Tim Graham):
You likely wouldn't need to run the entire test suite (see
[https://docs.djangoproject.com/en/dev/internals/contributing/writing-code
/unit-tests/#running-only-some-of-the-tests Running only some of the
tests]). Running `gis_tests` should be enough -- the pull request tester
runs the entire suite.
--
Ticket URL: <https://code.djangoproject.com/ticket/28105#comment:4>
Comment (by Dylan Verheul):
I'm no stranger to pyenv, virtualenv, git and unit tests. I have followed
https://docs.djangoproject.com/en/dev/internals/contributing/writing-code
/working-with-git/ and
https://docs.djangoproject.com/en/dev/internals/contributing/new-
contributors/ and
https://docs.djangoproject.com/en/dev/intro/contributing/.
Unfortunately the instructions for running the test suite end up in either
a stuck test (have to abort it after several hours), essential tests
skipped (because of sqlite instead of postgis I presume). I've sent quite
a few hours because I really want to contribute, but it seems that it just
does not work on my MacBook. A co-worker did get the test suite to run on
his ubuntu machine. So, it's probably me.
I'm giving it a final try now. It's bothering me because the error is
blatantly obvious.
--
Ticket URL: <https://code.djangoproject.com/ticket/28105#comment:5>
Comment (by Tim Graham):
If you copy `tests/test_sqlite.py` to `tests/test_spatialite.py` and
change the `'ENGINE'` in that file to
`'django.contrib.gis.db.backends.spatialite'`, you should be able to run
`./runtests.py --settings=test_spatialite gis_tests.test_geoforms`. Ping
me (timograham) in the #django-dev IRC channel if I can help further.
--
Ticket URL: <https://code.djangoproject.com/ticket/28105#comment:6>
Comment (by Dylan Verheul):
Perseverance paid of. Got the tests to work as well as I could, enough to
make a testable PR
--
Ticket URL: <https://code.djangoproject.com/ticket/28105#comment:7>
* owner: (none) => Dylan Verheul
* status: new => assigned
--
Ticket URL: <https://code.djangoproject.com/ticket/28105#comment:8>
Comment (by Dylan Verheul):
Pull request is https://github.com/django/django/pull/8439
--
Ticket URL: <https://code.djangoproject.com/ticket/28105#comment:9>
Comment (by Dylan Verheul):
Is there anything else for me to do now that the Pull Request has been
committed?
--
Ticket URL: <https://code.djangoproject.com/ticket/28105#comment:10>
* status: assigned => closed
* resolution: => fixed
Comment:
In [changeset:"75aeebebfe3df3ea46b8e12dd5e7719f98664d3a" 75aeebeb]:
{{{
#!CommitTicketReference repository=""
revision="75aeebebfe3df3ea46b8e12dd5e7719f98664d3a"
Fixed #28105 -- Fixed crash in BaseGeometryWidget.get_context() when
overriding existing attrs.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/28105#comment:11>
Comment (by Claude Paroz):
Was the backport to 1.11 omitted?
--
Ticket URL: <https://code.djangoproject.com/ticket/28105#comment:12>
Comment (by Tim Graham <timograham@…>):
In [changeset:"b1aea89dee4598857aaa3847f996e7cd03316a10" b1aea89]:
{{{
#!CommitTicketReference repository=""
revision="b1aea89dee4598857aaa3847f996e7cd03316a10"
[1.11.x] Fixed #28105 -- Fixed crash in BaseGeometryWidget.get_context()
when overriding existing attrs.
Backport of 75aeebebfe3df3ea46b8e12dd5e7719f98664d3a from master
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/28105#comment:13>