Thursday, September 18, 2014

Cool: I finally fixed a bug in linoweb.js which has caused already quite some irritation: Lino.HtmlBoxPanels failed to automatically refresh after certain actions. The reason was: Lino.FormPanel.get_status() must not store the whole data_record (only the record_id) because that would prevent the form from actually reloading when set_status() is called after a child window closed.

Opened ticket docs/tickets/125. … and in the evening also did it for Lino and Lino Welfare.

The Emacs manual explains who to do a replace operation across more than one file. Summary:

  • M-x find-name-dired to assemble a list of files

  • t (toggle selection)

  • Q to start a query-replace-regexp session on the selected files

  • Y to accept all replacements in all files.


Continued to work on docs/tickets/124.

  • Added a clickable checkbox indicating the primary household in the summary view of ml.households.MembersByPerson.

  • : verbose_name is now “Agent” instead of “Responsible user”

lino.modlib.reception now adds two new states “excused” and “absent” to

Added dd.AbstractTable.variable_row_height to ml.reception.AppointmentsByPartner. Before and after:

../../_images/0918a.png ../../_images/0918b.png

(Also tried whether it makes a difference when in lino.css I change the white-space property of lino-auto-height class from normal to wrap.)

The lino_welfare.projects.chatelet variant now has a completely redesigned module (currently in It is functionally almost equivalent to which I plan to deprecate since it uses


  • I moved HowWell and DoYouLike from lino.dd back to properties, because I don’t want these choicelists in the global dd module.

    This also has the advantage that I don’t need a conversion during data migration (remember that properties stores their app_label).

    And then I use their copy in the new module.

  • A DummyField is now a FakeField and may be used to explicitly ignore its name in a layout specification. This subtle new feature is used by chatelet’s cv app to solve the fact that SiteConfig.detail_layout contains three fields propgroup_skills, propgroup_softskills and propgroup_obstacles which are needed in eupen but not in chatelet. Declaring them as a DummyField