20110723

(a) Endspurt vor dem Release

Die Testsuite habe ich aktualisiert, also python manage.py test meldet keine Fehler mehr.

Beim Arbeiten mit /dsbe/testlauf einen weiteren Bug in appy.pod entdeckt und gemeldet.

(b) Übersetzungen

Die deutschen Sprachdateien wurden aktualisiert.

(c) Proberelease auf Jana

Also erstmal ein neues Dump vom Kunden nehmen. Da muss jetzt manuell nur noch folgendes geändert werden:

  • In create_contacts_companytype den Parameter contract_type_id ignorieren:

    def create_contacts_companytype(id, name, abbr, name_fr, name_en, abbr_fr, abbr_en, contract_type_id):
        # return CompanyType(id=id,name=name,abbr=abbr,name_fr=name_fr,name_en=name_en,abbr_fr=abbr_fr,abbr_en=abbr_en,contract_type_id=contract_type_id)
        return CompanyType(id=id,name=name,abbr=abbr,name_fr=name_fr,name_en=name_en,abbr_fr=abbr_fr,abbr_en=abbr_en)
    
  • At the end, uncomment the automagic migration:

    from lino.apps.dsbe.migrate import install
    install(globals())
    

(d) Release beim Kunden

Tests auf Jana sind positiv. Heute ist Samstag, also beim Kunden arbeitet niemand. Los gehts. Vorher noch notieren, welche Version momentan läuft:

$ cd /var/snapshots/lino
$ hg sum
parent: 1668:0617446de660 tip
 20110623
branch: default
commit: (clean)
update: (current)

Aber ein Sprung zurück ist nicht nötig: scheint alles zu klappen. Also hiermit erkläre ich Lino /releases/2011/0723 als losgelassen (released). Kann aber sein, dass morgen noch Nachträge kommen.

(e) Aktive Felder

Das Detail-Fensters eines Vertrags (Zusammenarbeit der drei Felder Stelle, Stellenanbieter und Vertreten durch) funktionierte noch nicht: da waren erstens ein paar kleine Bugs, und zweitens hätte ich Mühe gehabt, den Endbenutzern zu erklären, dass Lino leider noch keine “active fields” kennt. Da war es weniger Arbeit, dieses lang ersehnte Feature zu implementieren:

  1. Server-side field-level validation. Beim Start sucht Lino in den Modellen nach Methoden on_FIELD_change, deren Parameter ähnlich wie choosers analysiert werden. “Active fields” : wenn die sich ändern, macht der Client ein GET für diesen Record, wobei er aber auch alle anderen geänderten und noch nicht gespeicherten Felder mit übergibt. Der Server macht darauf dann full_clean aber speichert nicht ab, sondern gibt das nur zurück. So kann ich serverseitige field-level validation machen. Auch für disabled_fields wäre das wichtig: je nach Vertragsart soll Feld Contract.refund_rate disabled sein (und das soll sich nicht erst nach dem submit ändern). GET /api/contacts/Persons/17?fmt=json&query=foo

Die Implementierung war allerdings noch etwas einfacher als ich mir das damals gedacht hatte: statt eines neuen “non-storing PUT” macht er einfach ein submit des kompletten Formulars.

Also man kann in einem Report nun eine Liste von “aktiven” Feldern lino.reports.Report.active_fields angeben. Ein aktives Feld bewirkt ein save (d.h. submit und refresh) des Eingabefensters, wenn man es bearbeitet hat und zum nächsten Feld springt.

Damit individuelles Spielen mit den disabled_fields effizienter ist, enthält lino.reports.Report.fields_list jetzt keine Feld-Instanzen mehr, sondern nur noch die Feldnamen. (lino.reports.fields_list() und lino.ui.extjs3.ext_store.DisabledFieldsStoreField())

Das Feld “Stellenanbieter” eines Vertrags ist bis auf weiteres noch da, obschon es vielleicht raus kann, weil die Drittorganisation in der Stelle definiert wird. Die Frage ist, ob es Stellen gibt, bei denen der Stellenanbieter von Vertrag zu Vertrag ändern kann. Eine andere Frage ist, ob interne Verträge ihr Feld Stellenanbieter leer haben sollen, oder ob dort das ausstellende ÖSHZ stehen soll. Logisch wäre eigentlich, dass das Feld leer ist. Lino hat das bisher jedoch nicht nachgeprüft und in den bestehenden Daten habe die internen Verträge dieses Feld dann auch prompt mal leer und mal das ÖSHZ drinstehen.

(f) Slave-Grids und HtmlFields im Insert-Fenster

Das folgende Ticket ging auch recht schnell und kommt also noch in die neue Version mit rein:

  1. Slave-Grids und HtmlFields im Insert-Fenster sind jetzt zwar disabled, aber sie machen trotzdem noch ein load “ihrer” Daten. Das ist manchmal irritierend.