Monday, October 22, 2018

Lino Tera in final sprint

More changes for Lino Tera (#2579):

  • New field Enrolment.guest_role
  • GuestRole is now Referrable. Every PLP becomes an enrolment with a guest_role. This replaces humanlinks and household members.
  • removed plugins humanlinks and properties

How to write end-user documentation

I converted the Lino Tera user manual in German from LibreOffice to Sphinx: Das Lino Tera Benutzerhandbuch.

Advantage: - online available and referrable - it’s more efficient for me

Disadvantage: requires an author who knows how to code and compile.

Updating inherited virtual fields caused side effects

I discovered #2592: calling dd.update_field for a virtual field defined on some abstract parent of the model was updating the field for all other models which inherit from the common parent. This had especially wide influence when you did:

dd.update_field(Client, 'overview', verbose_name=None)

because the overview field is defined on lino.code.model.Model.

To avoid this, Lino now creates a copy of each virtual field, similar to what Django does for fields inherited from abstract models.

Furthermore Lino did not propagate your change to all models using this field: if the elements were already created, they retained the verbose_name from before the field was updated, causing “random” results. To avoid this, I replaced the label attribute from jsgen.VisibleComponent by a method get_label() (which continues to return any explicit label if one was given).