20110720 ======== Noch weiter Endspurt: In meiner `Listings.odt` war ein doofer Bug, nach dem ich eine Stunde lang gesucht habe (checkin 20110720). Die `migrate_reminder` setzte auto_type auf 5, aber das darf ja jetzt nicht mehr sein: aus Notizen generierte Tasks haben zwar einen owner, können aber bearbeitet werden (20110720b). Kleinkram Eigenschaften ----------------------- "Property Choices" war bisher durch "Eigenschaftswerte" übersetzt, aber besser ist "Auswahlmöglichkeiten". Detail eines Eigenschafts-Datentyps zeigte bisher nur die Auswahlmöglichkeiten, jetzt auch die Eigenschaften, die diesen Datentyp verwenden. PropChoice : (1) überprüft jetzt `unique_together ['type','value']` (2) `text` wird jetzt automatisch auf value gesetzt wenn man es leer lässt. In der Liste "Auswahlmöglichkeiten" einer Eigenschaft (:class:`lino.modlib.properties.models.ChoicesByType`) ist die Kolonne "ID" jetzt ganz am Ende. Die ist beim Konfigurieren von Eigenschaften unwichtig. Wichtig ist der Wert. Siehe auch Doku zu :class:`lino.modlib.properties.models.PropChoice`. Im Detail eines Uploads fehlten noch die Aufgaben pro Upload (TasksByOwner). Und dann haben wir jetzt ein neues Feld Upload.valid_until, das eine automatische Task "Arbeitserlaubnis läuft aus" erzeugt. Außerdem wurden die Tasks eines Uploads nicht automatisch ihrer Person zugewiesen. Checkin 20110720c. Online-Dokumente direkt bearbeiten ---------------------------------- Ich habe mal weiter geforscht, wie ich es schaffe, dass die Benutzer ihre Dokumente von Lino als bearbeitbare `.rtf`-Dateien zur Verfügung gestellt bekommen, die Lino dann auch verwaltet und speichert. Wenn man ein Dokument "druckt", öffnet Lino ja momentan einfach ein neues Fenster auf einer Adresse im Stil `http://lino:/media/cache/appy/rtf/Test-1.rtf`. Vorher generiert er falls nötig das Dokument; der Button "Cache löschen" löscht ebendieses Dokument, damit es neu generiert wird. Mir ist nun klar geworden: selbst wenn wir dem Browser gesagt bekämen, dass er RTF-Dateien immer automatisch öffnen soll, wird Office oder OpenOffice nie kapieren, dass das eine schreibbare Location ist. Also es scheint, dass wir den Benutzern irgendwie ein "WebDAV-Laufwerk" konfigurieren müssen. Resultat muss jedenfalls sein, dass alle Lino-Benutzer ein neues Laufwerk (z.B. "W:") kriegen, das per WebDAV die Dateien unter `/usr/local/django/dsbe_eupen/media/webdav` zur Verfügung stellt. Scheinbar ist das z.B. mit CIFS möglich http://wiki.ubuntuusers.de/samba_client_cifs Abgesehen davon brauchen wir eine kleine Änderung in Lino: statt nach `http://lino:/media/cache/appy/rtf/Test-1.rtf` soll er das Fenster nach `file:W:///appy/rtf/Test-1.rtf` öffnen. Zwei neue Attribute :attr:`lino.Lino.webdav_root` und :attr:`lino.Lino.webdav_url`, sowie entsprechende Änderungen in :mod:`lino.mixins.printable`. Um das auf dem Entwicklungsserver zu testen, der ja kein WebDAV hat, kann ich einfach das Laufwerk W: wie folgt mit ``subst`` definieren:: subst w: T:\data\luc\lino\dsbe\media\webdav Dann mache ich in der ´settings.py`:: webdav_url = 'file:///W:/' Also wenn ich z.B. auf `http://127.0.0.1:8000/api/lino/DataControlListing/1` bin und dort Drucken klicke, erstellt er eine rtf-Datei und antwortet:: { "open_url": "file:///W:/userdocs/appyrtf/lino.DataControlListing-1.rtf", "success": true } Und der Client macht dann:: if (result.open_url) { window.open(result.open_url); } Aber dann, ätsch, passiert unter Google Chrome und Firefox nichts (bzw. ein Fenster mit "about:blank" wird geöffnet), und der IE sagt mir "Access denied". Scheinbar steht diese Methode unter dem Verdacht des `Chross Frame Scripting `_ Vor ein paar Jahren konnte ein gewisser Brian da angeblich noch mit Tricks dran vorbei: http://thecodecave.com/2006/07/20/how-to-get-around-access-is-denied-in-a-windowopen-javascript-call/ Also ich zumindest habe noch keinen Trick gefunden, um mich bzw. die Lino-Benutzer von dieser Schutzvorkehrung zu befreien... Google: - javascript window.open file access denied - Local Machine Zone Lockdown Laut diesem hier soll es im IE abschaltbar sein: http://www.wintotal.de/tipparchiv/?id=1062 Hier eine ähnliche Problemstellung im Chrome Help Forum: http://www.google.com/support/forum/p/Chrome/thread?tid=54ce24f888fb210a&hl=en :srcref:`docs/tickets/45`