#11353 closed (worksforme)
use sphinx autodoc directives on geodjango application
Reported by: | yml | Owned by: | nobody |
---|---|---|---|
Component: | GIS | Version: | 1.0 |
Severity: | Keywords: | ||
Cc: | Triage Stage: | Accepted | |
Has patch: | yes | Needs documentation: | |
Needs tests: | Patch needs improvement: | ||
Easy pickings: | no | UI/UX: | no |
Description
I am trying to generate the API documentation of django-geotagging
[1]. django-geotagging is a django application. I would like to add to
the existing documentation rst files some "automatically" generated API documentation.
In order to do this I have added a file called : api.rst which look
like this : http://dpaste.com/58306/
when I run the this command:
sphinx-build -a -b html . _build
I get this error message :
Exception occurred:[ 20%] api File "/usr/lib/python2.6/django/contrib/gis/db/models/proxy.py", line 27, in __get__ geom_value = obj.__dict__[self._field.attname] AttributeError: 'NoneType' object has no attribute '__dict__' The full traceback has been saved in /tmp/sphinx-err-k0o7j2.log, if you want to report the issue to the author.
Changing the line 27 from :
geom_value = obj.__dict__[self._field.attname]
to :
try: geom_value = obj.__dict__[self._field.attname] except: geom_value = None
seems to fix this issue. After this modification I can use autodoc however I am not sure if this is not breaking something else or only hiding the problem.
ps : I have described this behavior on this post [2]
[1] https://code.launchpad.net/~yml/django-geotagging/geotags/+merges
[2]http://groups.google.com/group/sphinx-dev/browse_thread/thread/7f0e83b3a2775d4
Change History (6)
comment:2 by , 15 years ago
comment:3 by , 15 years ago
Component: | Uncategorized → GIS |
---|---|
Has patch: | set |
Triage Stage: | Unreviewed → Accepted |
The 'if obj is None' approach suggested by Tobu looks like the right approach here, and is consistent with the way the descriptor protocol is handled for related fields.
comment:4 by , 15 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:5 by , 15 years ago
follow-up: 7 comment:6 by , 15 years ago
Resolution: | fixed |
---|---|
Status: | closed → reopened |
This patch has introduced an error for me when doing a query on a Point field:
Traceback: File "c:\development\workspace\django\src\django-trunk\django\core\handlers\base.py" in get_response 100. response = callback(request, *callback_args, **callback_kwargs) File "C:\Development\workspace\django\crossfitfind\apps\locator\sites.py" in index 148. self.geo_latlng: False} File "c:\development\workspace\django\src\django-trunk\django\db\models\manager.py" in filter 141. return self.get_query_set().filter(*args, **kwargs) File "c:\development\workspace\django\src\django-trunk\django\db\models\query.py" in filter 545. return self._filter_or_exclude(False, *args, **kwargs) File "c:\development\workspace\django\src\django-trunk\django\db\models\query.py" in _filter_or_exclude 563. clone.query.add_q(Q(*args, **kwargs)) File "c:\development\workspace\django\src\django-trunk\django\db\models\sql\query.py" in add_q 1100. can_reuse=used_aliases) File "c:\development\workspace\django\src\django-trunk\django\db\models\sql\query.py" in add_filter 995. negate=negate, process_extras=process_extras) File "c:\development\workspace\django\src\django-trunk\django\db\models\sql\query.py" in setup_joins 1163. "Choices are: %s" % (name, ", ".join(names))) Exception Type: FieldError at / Exception Value: Cannot resolve keyword '<django.contrib.gis.db.models.proxy.GeometryProxy object at 0x03E98410>' into field.
Changing the conditional to return None instead of self seems to solve the problem:
if obj is None: # Accessed on a class, not an instance return None
comment:7 by , 15 years ago
Resolution: | → worksforme |
---|---|
Status: | reopened → closed |
Replying to ungenio:
This patch has introduced an error for me when doing a query on a Point field:
What does the query look like? Providing a traceback without context on how to reproduce is not enough to open this ticket. Please provide an example model, data, and queryset invocation that makes it possible for others to recreate the error on their own -- until then, I'm closing as works for me.
This is the descriptor protocol, documented at http://docs.python.org/reference/datamodel.html#descriptors .
The bug in the current implementation is that it only works on instance access, and not class access.
This is easy to fix, add this to the beginning of the get method: