Wednesday, September 7, 2016

Oops, Travis build #33 of The Lino Book failed because I didn’t even run the test suite before checking in.

Tonight I watched a video on YouTube which Hamza recommened. It is made by an Italian couple. I also watched YouTube’s suggestion thereafter and started to watch La Tunisie est bel et bien est un pays à part du monde arabe . :)

Tunisia is exciting, but yesterday I had a 90 minutes meeting with Annalisa which generated yet another series of ideas for #1128 which I should implement ASAP:


  • Should we add a new ticket state “dropped” or “withdrawn” (“Verworfen”, “Widerrufen”) to indicate that the reporter decided to cancel their plea? This is different from “refused”. –> Solution seems to rename “refused” to “cancelled” because this is a more general term.

  • When opening text editor in own window, there are no TinyMCE buttons at all. That was because I forget to update tiny_mce_popup.js.

  • Cannot create new users using the web interface.

    AttributeError: 'SiteConfig' object has no attribute :'site_company' in lino_xl.lib.countries.mixins.AddressLocation.

    I fixed this by moving the definition of the site_company field from lino_xl.lib.contacts (where it was defined using inject_field) to lino.modlib.system.models. Note that I left the definition of next_partner_id field in lino_xl.lib.contacts because this field would be really nonsense for somebody who does not have the lino_xl.lib.contacts plugin installed.

  • Adapt Ticket.rate wording

  • When there are notifications, display them directly as welcome messages (including a checkbox for each of them to mark them as seen)


  • I changed the general behaviour of get_admin_main_items() slightly: when a table contains no items, Lino no longer displays the title and the “No data to display”, it just skips that table.
  • New symbol 🗗 for opening an admin_main_item in its own window.
  • no longer spawns a new request when it receives a BaseRequest instance as first parameter. A usage for this new feature is in admin_main_base.html where we create a request sar, call its get_total_count() method (which triggers a first database request), and then (if there is data) we forward it to Without the new behaviour, Lino would do an additional SQL query for every item of the main page. This change required me to adapt some tested documents (e.g. Debts mediation) which still were using the deprectated form.
  • I fixed a bug in linoweb.js which caused Lino to not automatically refresh the screen when toggling between ☆ and ★. The refresh_all by the action was being ignored when the action had been called from the main screen.


  • The window created by the detail_layout of lino_noi.lib.users.models.OtherUsers doesn’t yet look well:


    At least the comboboxes should be plain fields because the trigger buttons make no sense in a readonly form.

    The idea of such a a non editable detail_layout is that we abuse the ExtJS form layout machinery for displaying read-only information. I started to work on this, but interrupted without success so far. An alternative would be use a template or manually constructed xmlgen.html element tree, but that would be less Lino-like.

  • Simple users may not edit the assigned_to field of a ticket

  • Simple users may not see AvailableWorkers of a ticket

  • Tickets should be duplicable

  • The ✉ button on a user (send welcome message) must be only for SiteAdmin .

  • The ✉ button on a user should open a dialog window in order to send a message to that user. That is, we might extend lino.modlib.notify to become an instant messaging system. An exciting idea. I added already a field Notification.from_user.

  • Add an action for AnonymousUser to register as a new user. Probably we will then also need a field User.state (requested, rejected, accepted, confirmed, deactivated, banned, …)

  • User story : two simple users A and B. A writes a plea #1. B clicks AssignToMe, but then does not no what he promised. When A decides to no longer wait for B, she should rate plea #1, giving it the lowest rate, then duplicate it to submit the same text as a new plea.