20121025 ======== TODO: - Nicht "Status" und nicht "Aktenzustand", sondern "Bearbeitungszustand". - "Komplette Akte" ersetzen durch "primäre Begleitung" - In "Neue Klienten" steht noch "Altfälle" - warum wurde kein Chronik-Eintrag erstellt bei aliber (23132)? DONE: - workflow Klienten: Ehemalig -> Neuantrag - Im Insert-Fenster gibt es ja jetzt zwei Buttons "Erstellen" und "Erstellen und Bearbeiten". Sehr unklar. Zumindest bessere Bezeichnungen: "Erstellen und Speichern" / "Erstellen und Bearbeiten" - "Im Schnellsuche-Feld braucht man jetzt nicht mehr TAB zu drücken, um die Suche zu starten." Von wegen "Arbeitsaufwand 30 Minuten": Es war doch recht störend, dass das Feld dann auch den Tastaturfokus verlor. Zwei weitere halbe Stunden. - Auch [Parameters] hat jetzt ein Icon und einen tooltip - Reihenfolge Aktionen: Insert kommt jetzt an erster Stelle (:attr:`sort_index ` 10), noch vor Detail, weil die ja fast noch eher eine Listenaktion als eine RowAction ist. - Icon für outbox.Mail.send, postings.Posting.print - :class:`lino_welfare.modlib.newcomers.models.AvailableCoachesByClient`: Feld "Quote" ersetzt durch "Belastung" ("Workload"). Und die Liste ist jetzt nach diesem Wert sortiert: der am wenigsten belastete verfügbare Begleiter steht zuerst. - Neues Attribut :attr:`lino.core.actors.Actor.hide_sums` wird benutzt in AvailableCoachesByClient, die jetzt auch :attr:`lino.core.actors.Actor.slave_grid_format` auf `html` hat. Ein cooler Bug -------------- Weil AvailableCoachesByClient jetzt mit :attr:`slave_grid_format ` `html` angezeigt wird, kam ein weiterer subtiler Bug zum Vorschein. Symptom war: :menuselection`Kontakte --> Klienten` und dann Doppelklick oder Enter. Dann kam auf dem Server:: Exception Expected a list of 2 values, but got [u'', u'', u'', u'false', u'', u'', u'', u'false', u''] TRACEBACK: File "l:\snapshots\django\django\core\handlers\base.py", line 111, in get_response response = callback(request, *callback_args, **callback_kwargs) File "l:\snapshots\django\django\views\generic\base.py", line 58, in view return self.dispatch(request, *args, **kwargs) File "l:\snapshots\django\django\views\generic\base.py", line 79, in dispatch return handler(request, *args, **kwargs) File "t:\hgwork\lino\lino\ui\extjs3\views.py", line 723, in get datarec = elem2rec_detailed(ar,elem) File "t:\hgwork\lino\lino\ui\extjs3\views.py", line 170, in elem2rec_detailed rec = elem2rec1(ar,rh,elem,**rec) File "t:\hgwork\lino\lino\ui\extjs3\views.py", line 122, in elem2rec1 rec.update(data=rh.store.row2dict(ar,elem)) File "t:\hgwork\lino\lino\ui\extjs3\ext_store.py", line 1248, in row2dict v = fld.full_value_from_object(row,ar) File "t:\hgwork\lino\lino\ui\extjs3\ext_store.py", line 783, in full_value_from_object return unbound_meth(obj,request) File "t:\hgwork\lino\lino\core\tables.py", line 892, in meth master_instance=master) File "t:\hgwork\lino\lino\core\dbtables.py", line 473, in request return TableRequest(ui,self,request,action,**kw) File "t:\hgwork\lino\lino\core\tables.py", line 169, in __init__ actions.ActionRequest.__init__(self,ui,actor,request,action,**kw) File "t:\hgwork\lino\lino\core\actions.py", line 962, in __init__ pv.update(self.actor.params_layout.params_store.parse_params(request)) File "t:\hgwork\lino\lino\ui\extjs3\ext_store.py", line 997, in parse_params raise Exception("Expected a list of %d values, but got %s" % (len(self.param_fields),pv)) Erklärung: weil die AvailableCoachesByClient außerdem :attr:`parameters ` hat, versuchte sie in diesem Fall, die Parameterwerte aus dem ActionRequest rauszuholen. Die Master Tabelle hat deren auch. Aber die sind ja für den Master und nicht für den Slave gedacht. Wenn eine parametrierte Slave-Tabelle im Detail eines Masters angezeigt wird, muss sie dies mit den Default-Serte ihrer Parameter tun. Implementierung: :meth:`slave_as_html_meth ` gibt jetzt immer einen expliziten `param_values={}` mit, und :class:`ActionRequest` meckert jetzt nicht mehr falls die Tabelle keine Parameter hat ("Cannot request param_values on ") *und* parst den `request` für Parameterwerte jetzt nur noch, wenn dieses `param_values` None ist. Noch was Neues: Slave-Tabellen im :attr:`slave_grid_format ` `html` zeigen jetzt den `no_data_text` korrekt an. Danach habe ich das :attr:`slave_grid_format ` `html` der Tabelle "Verfügbare Benutzer" allerdings doch wieder abgeschaltet, weil es da noch ein anderes Problem gibt: die Aktionen (Zuweisen) werden im plain html-Modus dann nicht korrekt gerendert. Und noch ein Bug: - Nach erfolgreicher Zuweisung eines Klienten springt er ohne viele Worte auf den nächsten Klienten. Stattdessen alert_msg. Oder in die Grid zurück? Die Aktion war korrekt programmiert (dass sie eine abschließende Meldung in einer alert-Box anzeigen soll), aber das Problem war, dass die Box nicht kam. Das war ein trivialer Bug in :meth:`lino.ui.base.UI.success_response`. Checkin wegen Feierabend. Nachtsitzung ------------ Ich war schon im Bett und wollte einschlafen, da kam Lino mit der Idee, wie ich die eventuellen Fehlermeldungen "No handler soundo" abfangen kann, die beim Ausdruck von manchen Tx25 möglicherweise kommen und von den Benutzern dann nicht unbedingt gemeldet werden. Also Optimierung des Fehlerreporting-Systems in solchen Fällen. Was zu drei neuen Beispielen in meiner privaten Fehlersammlung führte (privat, weil ich natürlich keine echten Resultate einer Tx25 ins Lino-Repository stellen darf): - Tx25 # 74 : NameType instance has no attribute 'FirstName' - Tx25 # 20 : No handler for Pseudonyms (Pseudonyms) - Tx25 # 4 : No handler for Aliases (Aliases)