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 (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

  • 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 lino.core.actors.Actor.hide_sums wird benutzt in AvailableCoachesByClient, die jetzt auch lino.core.actors.Actor.slave_grid_format auf html hat.

Ein cooler Bug

Weil AvailableCoachesByClient jetzt mit 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 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: slave_as_html_meth gibt jetzt immer einen expliziten param_values={} mit, und 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 slave_grid_format html zeigen jetzt den no_data_text korrekt an.

Danach habe ich das 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 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)