20120220

Rosenmontag. Während die Jecken in Eupen sich zum Rosenmontagszug sammeln, liege ich bequem unterm Computer und gehe meiner Lieblingsbeschäftigung nach. “Du legst mir größere Freude ins Herz, als andere haben bei Korn und Wein in Fülle.” (Ps 4,7f)

Endspurt vor dem Release

Ein paar Bugs waren noch drin:

  • Das Detail einer Note war versehentlich wieder nur Ext.Container statt Ext.Panel
  • In lino.About würde ich ja gerne auch die Ext.version anzeigen. Über eine Stunde Wurstelei… und das vorläufige Resultat ist noch immer nicht wirklich zufriedenstellend.
  • Wenn man in “Termine von Annette Arens” auf einem Termin doppelklickte und dann das Detail-Fenster speicherte, dann stimmte der Fenstertitel nicht mehr (lautet “Termine von None » Termin #18”). parse_req() hat jetzt einen neuen Parameter rqdata, der meistens dem request.REQUEST entspricht, außer bei PUT-Methoden wo Django das leider nicht überträgt und Lino es deshalb selber tut.

Mails verschicken

Die folgenden Gedanken müssen warten bis nach dem Release /releases/1.4.0

Ich glaube erkannt zu haben, dass Notizen das Gleiche wie die momentanen “ausgehenden Mails” sind.

Eine Notiz ist doch schon jetzt ein Dokument, das zu einem bestimmten Zeitpunkt von einem bestimmten Benutzer erstellt wurde, das normalerweise eine bestimmte Person (Projekt) betrifft, und das normalerweise entweder ausgedruckt oder per E-Mail verschickt wird. Der Sonderfall von internen Notizen ist vergleichbar mit einer Mail im Drafts-Folder eines Mail-Clients, die keine Empfänger hat und nie verschickt wurde. Und das einzige, was Lino mit den Notizen noch nicht kann, ist sie als E-Mail zu verschicken.

Und incoming mails? Das sind ebenfalls Notizen.

Konsequenzen für die Benutzer:

  • Jede Notiz kann höchstens einmal verschickt werden.
  • Neben “Druckdatum” kommen zwei weitere Felder “gesendet am” und “empfangen am”
  • Die Slave-Tabelle “Drittpartner” heißt jetzt “Empfänger”. In dieser Tabelle kommt eine neue Kolonne “Empfänger-Art”, die enthält ob es to:, cc: oder bcc: ist. Bei bisherigen Drittpartnern ist das Feld leer.

Im Code werden folgende Änderungen kommen:

  • Mailable kommt raus
  • Mail wird abstrakt, und pro Site muss es ein Model geben, das Mail erbt und konkretisiert.
  • notes.Note erbt nun Mail und nicht mehr Mailable
  • notes.Note erbt nun nicht mehr AutoUser. Der Inhalt des bisherigen Feldes user (FK nach User) kommt nach sender (FK nach Contact). Bei eingehenden Mails ist der Absender ja nicht unbedingt ein User. Statt sender würde es vielleicht besser author heißen, weil Notizen ja nicht unbedingt verschickt werden.
  • Neue Konfig-Option mail_model, or rather automatic detection since there must be exactly one model that implements Mail.
  • thirds kommt raus
  • data migration : - what to do with existing thirds? - Note.user renamed to Mail.sender

Actors and their actions

Auch der folgende Schönheitsfehler wird noch ein paar interne Änderungen brauchen:

  • User Detail has UpdateReminders as first button. Das kommt dadurch, dass diese Aktion in der site_setup() von modlib.cal erstellt wird, was vor dem setup() der Tabellen geschieht.

Vielleicht kriege ich das bis Aschermittwoch fertig, dann käme es noch mit in die /releases/1.4.0 rein. Aber vorher ein Checkin und ein inoffizielles pre-release. Upps, das hat er gleich auch nach PyPI <http://pypi.python.org/pypi/lino/1.4.0> gepostet, also weniger inoffiziell als ich es ursprünglich dachte…

Noch Kleinkram vor dem Release

  • Zwei selten benutzte Menübefehle Konfigurierung ‣ Kontakte ‣ Funktionen und Explorer ‣ Drittpartner fehlten.
  • lino.modlib.newcomers.models.UsersByNewcomer hatte kein Detail weil es nicht von users.Users erbte.
  • lino.apps.pcsw.migrate.migrate_from_1_3_9()

Automatic refresh when user changes table parameters

Wenn man in den Parametern einer Tabelle etwas ändert, braucht man jetzt nicht mehr den Refresh-Button zu klicken. Diese Feature könnte aber auch lästig sein in langsamen Listen. Zu beobachten.

Kann man auf PyPI ein Release überschreiben?

Mal probieren: ich mache einfach make sdist html upload, und dann:

Submitting docs/dist\lino-1.4.0.tar.gz to http://pypi.python.org/pypi
Upload failed (400): A file named "lino-1.4.0.tar.gz" already exists for  lino-1.4.0. To fix problems with that file you should create a new release.
Submitting docs/dist\lino-1.4.0.zip to http://pypi.python.org/pypi
Upload failed (400): A file named "lino-1.4.0.zip" already exists for  lino-1.4.0. To fix problems with that file you should create a new release.

Aha. Und wenn ich übers Web-Interface zuerst die Dateien lösche? Ja, dann geht es. Dort kann ich auch sehen, dass dort “0 downloads” stand.

Also alle heutigen Änderungen kommen noch mit in die /releases/1.4.0 rein.