Friday, February 26, 2016¶
I started to write documentation for the new module
lino_xl.lib.invoicing
.
A first problem is that this plugin is not used by
lino_cosi.projects.std
, so autosummary fails to import it:
WARNING: [autosummary] failed to import u'lino_xl.lib.invoicing.models': no module named lino_xl.lib.invoicing.models
Since autosummary itself does not show me the error. In order to see this message I had to simulate what autosummary does:
>>> from lino import startup
>>> startup('lino_cosi.projects.std.settings.doctests')
>>> import lino_xl.lib.invoicing.models
Traceback (most recent call last):
...
AttributeError: AttrDict instance has no key 'invoicing' (keys are ...)
So the failure was caused by this code:
invoice = models.ForeignKey(
dd.plugins.invoicing.voucher_model, null=True, blank=True)
Yes, this is a common problem when using Sphinx autodoc to generate
API documentation for a Django models.py
file. These modules
are (often) not importable by a process which has activated Django
using a settings module that does not include the module in its
INSTALLED_APPS
.
A quick workaround is to add lino_xl.lib.invoicing
to the
get_installed_plugins
of
lino_cosi.projects.std
.
This solution has the disadvantage (or advantage?) that every
Lino Così site will have these two tables (invoicing.Plan
and invoicing.Item
) in their database, even if
they don’t use the automatic invoicing feature.