20130812 (Monday, 12 August 2013)

Avoid a globally available module called settings.py

Puah, gestern und gerade habe ich zwei Stunden lang nach einem saudoofen Bug gesucht.

Symptom war, dass seit einiger Zeit die Lino-API nicht mehr generiert werden konnte. Da kamen lauter ImportError-Meldungen. Was üblicherweise daher kommt, dass autodoc zum Generieren der Seiten unterhalb von /api/lino all diese Module importieren muss, was ja bekanntlich nicht einfach ist. Weshalb es ja eine fiktive Lino-Anwendung gibt (“Lino Docs” heißt sie seit heute), die “sozusagen alle” modlib-apps installiert. Deren settings.py ist nicht z.B. als lino.projects.docs.settings definiert, sondern lediglich in docs/settings.py. Weil sie in lino.projects eher stören würde.

Ursache war, dass ich versehentlich mit pip ein lokales Verzeichnis im Python-Path hatte, das ein settings.py enthielt.

Damit das in Zukunft schneller auffällt, habe ich jetzt in der docs/conf.py stehen:

import settings
if Path(settings.__file__).parent != Path(__file__).parent :
    raise Exception("""
Oops: `import settings` finds a settings module in %s.
See `blog/2013/0812.rst` and clean up your Python path!""" % Path(settings.__file__).parent)

Documentation for power users

Started a new section of the general Lino documentation: /user/index.

The second body template

Added the second body template for Lino Welfare: lino_welfare/config/notes/Note/anw.body.html.

Which shows that we are going to also use template inheritance.

Minor changes in lino.modlib.events

My crazy breaking-a-fly-on-the-wheel project of using a Lino application to generate the http://www.vor-cycling.be/ website required some expertise because they asked me to add a simple external link for one event. Inspect the diffs for lino/modlib/events/fixtures/vor.py and lino/modlib/events/models.py to discover how “simple” this was…

Yes this is overkill, but it’s a nice challenge and a good exercise for Lino and me. And (at least my feeling says so:) I now need less time for maintaining this site! Se non è vero, è ben trovato;-)