Tuesday, June 17, 2014

Release to PyPI?

Before starting to work on docs/tickets/110 I’d like to do an official release on PyPI of the current version of Lino, Lino Welfare, Lino Così & Co. And also Renamed “Lino Faggio” to “Lino Voga”. Before this it would be good to do an upgrade for Roger who will soon reactivate.

This upgrade needs a decision: (1) convert Renamed “Lino Faggio” to “Lino Voga” to use lino.modlib.excerpts or (2) convert lino.modlib.excerpts to be optional?

The lino.modlib.excerpts module seems a great concept which will be of wide use. But (1) Roger did not ask for it, (2) it is annoying for that I must now care about database migration.

I must care about database migration because lino.modlib.cal and lino.modlib.notes did convert to use lino.modlib.excerpts. It is a bit suboptimal for the Renamed “Lino Faggio” to “Lino Voga” users when lino.modlib.courses does not use it.

The (2) alternative above means that I see a strategic injustice: two modules (lino.modlib.cal and lino.modlib.notes) force an application (Renamed “Lino Faggio” to “Lino Voga”) to use a given new module (lino.modlib.excerpts). While this is okay in the given case (for Faggio it is anyway a good thing), this is fundamentally wrong. I don’t yet see a solution for it. It comes because the choice of using lino.modlib.excerpts is done per app and not per application: All “printable” objects must inherit either from lino.modlib.excerpts.Certifiable or from lino.mixins.printable.BasePrintable Resolution: this conversion can wait. It is not such a big catastrophe that ml.courses.Topic ml.courses.Course and ml.courses.Enrolment are still printable instead of certifiable.

But I must still fix at least one problem in Renamed “Lino Faggio” to “Lino Voga” which comes because I stopped to inject a course field into ml.cal.Event.

In fact there are more than one of these little problems in Renamed “Lino Faggio” to “Lino Voga”. And then I had several phone calls which changed my priorities: no, I won’t do an official release today. Because nobody asked for it, and because customers are asking for other things!


  • ‘module’ object has no attribute ‘PendingCourseRequests’ This message appeared in welfare.integ.CompareRequestsTable (part of welfare.integ.ActivityReport). And only in the Chatelet version. Because Chatelet replaces lino_welfare.modlib.courses by lino.modlib.courses.
  • Excerpts should never get created manually. So I set lino.core.actors.Actor.allow_create to False on lino.modlib.excerpts.Excerpts.

Social aids

Gerd and I finally reached the welfare.aids module. And hit some first problems.

  • Error message coercing to Unicode: need string or buffer, list found came when trying to select a lino.modlib.excerpts.ExcerptType.body_template.
  • The insert_layout of welfare.aids.AidsByClient was too minimal, the amount was missing in detail_layout, …

An important point is yet to do: make the templates editable through the web interface:

  • Replace the current EditTemplate action by a virtual html box with action buttons to both the template and the body_template.
  • For html templates, don’t redirect to a webdav url but open a text editor.