makinacorpus / django-geojson

django-geojson is a collection of helpers to (de)serialize (Geo)Django objects into GeoJSON.
GNU Lesser General Public License v3.0
258 stars 70 forks source link

Cannot initialize on empty sequence. #77

Closed birish2 closed 8 years ago

birish2 commented 8 years ago

I have a geo object with no coordinates yet. When I try to read an empty geo, I thought it would return an empty geojson feature or no feature for that object, but i get the following stack trace:

Internal Server Error: /geodata Traceback (most recent call last): File "/home/me/Desktop/projects/testproject/env/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 149, in get_response response = self.process_exception_by_middleware(e, request) File "/home/me/Desktop/projects/testproject/env/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 147, in get_response response = wrapped_callback(request, _callback_args, _callback_kwargs) File "/home/me/Desktop/projects/testproject/env/local/lib/python2.7/site-packages/django/views/generic/base.py", line 68, in view return self.dispatch(request, _args, _kwargs) File "/home/me/Desktop/projects/testproject/env/local/lib/python2.7/site-packages/django/utils/decorators.py", line 67, in _wrapper return bound_func(_args, _kwargs) File "/home/me/Desktop/projects/testproject/env/local/lib/python2.7/site-packages/django/utils/decorators.py", line 149, in _wrapped_view response = view_func(request, _args, _kwargs) File "/home/me/Desktop/projects/testproject/env/local/lib/python2.7/site-packages/django/utils/decorators.py", line 63, in bound_func return func.get(self, type(self))(_args2, _kwargs2) File "/home/me/Desktop/projects/testproject/mysite/maptacs/views.py", line 53, in dispatch return super(GeoJSONLayerView, self).dispatch(_args, _kwargs) File "/home/me/Desktop/projects/testproject/env/local/lib/python2.7/site-packages/django/views/generic/base.py", line 88, in dispatch return handler(request, _args, *_kwargs) File "/home/me/Desktop/projects/testproject/mysite/maptacs/views.py", line 87, in post options) File "/home/me/Desktop/projects/testproject/env/local/lib/python2.7/site-packages/djgeojson/serializers.py", line 379, in serialize self.serialize_queryset(queryset) File "/home/me/Desktop/projects/testproject/env/local/lib/python2.7/site-packages/djgeojson/serializers.py", line 320, in serialize_queryset self.handle_field(obj, self.geometry_field) File "/home/me/Desktop/projects/testproject/env/local/lib/python2.7/site-packages/djgeojson/serializers.py", line 212, in handle_field value = getattr(obj, field_name) File "/home/me/Desktop/projects/testproject/mysite/maptacs/models.py", line 81, in geom return LineString(allpoints) File "/home/me/Desktop/projects/testproject/env/local/lib/python2.7/site-packages/django/contrib/gis/geos/linestring.py", line 42, in init** raise TypeError('Cannot initialize on empty sequence.') TypeError: Cannot initialize on empty sequence.

Looks like this is in the serializer.serialize function.

birish2 commented 8 years ago

It was my error. I had built a custom geom property in my model that did not check for an empty array on the return.