20130228¶
Lino und der neue Präsident (Fortsetzung)¶
Noch kleine technische Überraschungen:
Die Standardwerte der Felder signer1 und signer2
sollten in der SiteConfig gespeichert sein.
Diese Felder haben
die gleichen Auswahllisten-Methoden (chooser) wie die,
die für die Verträge gelten.
Also wollen wir das nicht doppelt schreiben,
sondern wiederverwertbar machen.
Die kleinen Unterschiede (blank, null, default)
sind ja dank dd.update_field kein Problem.
Klarer Fall für ein Mixin:
lino_welfare.modlib.isip.models.Signers
.
Jetzt muss die ui.SiteConfig aber
in lino.Lino.override_modlib_models
stehen
und wir machen unsere eigene
lino_welfare.modlib.pcsw.models.SiteConfig
mit diesem Mixin:
class SiteConfig(ui.SiteConfig,isip.Signers):
pass
Hier musste ich einige Aufrufe von
dd.inject_field
,
die bisher direkt die Klasse SiteConfig angaben,
ändern nach “ui.SiteConfig”.
Hat was mit Djangos model cache loading order zu tun:
dd.inject_field
funktioniert natürlich nicht, wenn die Unterklasse
des abstrakten Modells schon geladen ist.
Für gut sollte Lino dann eine Fehlermeldung machen,
aber ich habe noch nicht erkannt, wie ich das kontrollieren kann.
En attendat Fausregel: immer einfach die
Modellnamen als string angeben statt das Klassenobjekt.
Miscellaneous¶
lino_welfare.modlib.cbss.tx25
: Added handler for RetirementCertificates.Fixed a UnicodeEncodeError caused by wrongly calling
lino.ui.Lino.site_header()
in certain appy.pod document templates.
TODO:
contacts.QuickTest fails when called for a Lino-Welfare site.