Friday, August 25, 2017

“Your Reference” vs “External Reference”

It took me more than three hours to fix that stupid failure which I discovered yesterday in the welfare test suite. It was just a problem with string translation, not in the Lino kernel. The lino_xl.lib.finan.FinancialVoucherItem mixin defines a field named remark whose verbose_name was “External reference”. And that string was being translated to German (a) by “Ihr Zeichen” in XL and (b) by “Externe Referenz” in Welfare. Now it is “Your reference” (Ihr Zeichen) in XL and “External reference” (Externe Referenz) in Welfare. It’s understandable that Lino didn’t work as expected.

Missing help_text for Client.has_esf

Another failure was in Statistiques pour le Fonds Social Européen:

$ go welfare
$ python setup.py test -s tests.SpecsTests.test_esf
...
File ".../welfare/docs/specs/esf.rst", line 237, in esf.rst
Failed example:
    show_fields(rt.models.pcsw.Client, 'has_esf')
Expected:
    =============== ============== =========================================================
     Internal name   Verbose name   Help text
    --------------- -------------- ---------------------------------------------------------
     has_esf         ESF data       Whether Lino should make ESF summaries for this client.
    =============== ============== =========================================================
Got:
    =============== ============== ===========
     Internal name   Verbose name   Help text
    --------------- -------------- -----------
     has_esf         ESF data
    =============== ============== ===========

This one was simply caused by ticket #2016. I had to run inv clean and inv bd because the Welfare help_exts.py files on my machine had not yet been re-generated with the new simplified keys. You need to run inv clean bd in all related projects for this.

Advancing in Avanti

I finally found time and worked on a series of tickets for Lino Avanti project. Here is (in German) the list of requested changes:

  • Anmahnungen : wenn ein Klient 2x unentschuldigt oder mehr als 10% der Gesamtstundenzahl gefehlt hat, dann soll Lino dem Begleiter das mitteilen. Es muss auch einen Workflow geben, wo der Begleiter notiert, was er mit dem Klient besprochen hat. Wenn die Abmahnung erledigt ist (z.B. durch ein Telefongespräch), dann sollte Lino für eine gewisse Zeitlang Ruhe geben (also nicht z.B: schon bei einer einzigen weiteren Abwesenheit wieder Alarm schlagen). Pro Klient sollte Lino eine Liste aller Anmahnungen zeigen. Wie ich das genau implementiere, muss ich mir noch überlegen. Wahrscheinlich zwei Tabellen “Abmahnungen” und “Mahngrade” sowie eine scheduled background task.
  • Einschreibe-Optionen : pro Einschreibung muss es 4 neue Ankreuzfelder geben “Kinderbetreuung”, “Schulzeiten”, “Auf Bus angewiesen”, “Abendkurs”. Momentan werden diese Infos als Bemerkung erfasst, aber dann lässt sich das nicht weiterverwerten. Neue choicelist EnrolmentOptions (also wenn irgendwann noch weitere Optionen hinzu kommen, lässt sich das über Nacht leicht erledigen)
  • Übersichtsliste “Kursplanung” : Liste aller Kurse im Status “Entwurf”, gruppiert pro Gemeinde, mit diversen Angaben : Anzahl Kandidaten (Männlich, Weiblich, insgesamt sowie pro Einschreibe-Option ventiliert). Diese Liste sollte ausdruckbar sein und per E-Mail ans Konsortium geschickt werden können.
  • Lino meint “Kann Befragung nicht löschen, weil x Answers darauf verweisen” –> Antworten sollen natürlich automatisch mit ihrer Befragung gelöscht werden. Dieser Bug stört, weil wir deshalb die Fake-Klienten nicht löschen können.

A side effect:

  • checkdata.CheckdataUser inherits just from UserRole, not from SiteUser because it caused an unresolved MRO when adding this role to lino_avanti.lib.avanti.user_types.