Tuesday, May 26, 2015

I updated the docs after yesterday’s changes. Also merged some last entries from my Luc’s Linux Blog into this blog.


I started to get concrete ideas for the upcoming project “Sozialbuchhaltung”: Accounting for Lino Welfare.

Since there is a lot of injection there, I start to wonder whether we shouldn’t rather do ticket #246 (Work around inject_field) first. Also e.g. to define a choosers and validation methods for these fields. More ideas about it in Dynamic models.

Document printing slipped through the test suite

Oops, a rather urgent problem interrupted above work. We noticed that certain documents failed to print in Eupen after the upgrade.

This was caused by several changes (e.g. I had removed some old names from the default printable context returned by lino.core.site.Site.get_printable_context(), or I had removed the lino.modlib.beid.mixins.BeIdCardHolder.get_image_path() method because I believed that it was no longer used).

These failures remained undetected because the test suite has never systematically covered the rendering of all printable templates. At least Lino Welfare now does this in lino_welfare.modlib.welfare.fixtures.demo2. creates and renders one excerpt for every ExcerptType. This revealed also a series of some quite old problems.

Converted all usages of the obsolete names dtos and dtosl.

The picture of an eid card failed to print. This revealed a subtle problem: rendering templates like cv.odt and eid_content.odt require the eid card picture to be available. And if no such picture exists, they need the dummy image contacts.Person.jpg. And that file is a static file. And the development server usually doesn’t need STATIC_ROOT to be set.

So until now I didn’t need to run a collectstatic command on my development machine because these are automatically served by the development server. But now I need to. Because of that stupid dummy image contacts.Person.jpg, needed by templates like cv.odt who include images into a LibreOffice document.

Idea after one night of sleep: I might avoid the following by reading the file myself and using the content and formast clauses of appy.pod’s document function. That’s ticket :ticket`282` (Inserting images from staticfile into an appy.pod template).

But the collectstatic command collects quite some files: the ExtJS library, the Extensible library, two versions of the TinyMCE library. We don’t want a developer to have one copy of all these files for every project.

The solution is to use a common place for the staticfiles of all Lino projects. When LINO_CACHE_ROOT is set, the default value for STATIC_ROOT is no longer a subdir named static of the cache_dir, but a subdir named collectstatic of LINO_CACHE_ROOT.

Also the default value for lino.core.site.Site.default_build_method is now appyodt instead of appypdf because rendering about 100 pdf documents (1) was taking much time without bringing additional coverage and (2) even failed occasionally, appearently because the socket connection to the LibreOffice server broke.