20110407

Noch Fehlerjagd

Die Methode von Daniel Haas (sh. gestern brachte dann noch eine Reihe von Nebenwirkungen (Combobox- und Date-Felder schickt sie ebenfalls “richtiger”, was ich aber nicht brauchen kann; sie schickt auch bei PUT via GET; file Uploads kann sie nicht…).

Aber JC Watsons Methode ist elegant und simpel: A “fix” for unchecked checkbox submission behaviour, ich brauchte sie lediglich für Ext 3 anzupassen.

Noch ein Bug: Checkboxen in einer Grid sind nicht editierbar. Da gefällt mir als Lösung die CheckColumn von ExtJS, die ich dank dieses Threads gefunden habe.

Ich habe sie aber in meine linolib.js kopiert und dort erweitert:

  • in render() noch eine Zeile hinzugefügt habe, damit er auf phantom records keine Checkbox anzeigt.
  • Die Originalversion von ExtJS feuerte kein afteredit-Event.
  • Nicht ein einfacher Klick, sondern ein Doppelklick löst das toggle aus.

TODO: Ein kleines Problem ist noch da: in einer Grid, die auch ein Detail hat, wird durch Doppelklick auf einer CheckColumn gleichzeitig auch das Detail-Fenster geöffnet.

Zwischenrelease

So, nun wo die schlimmsten Bugs raus sind, mach ich in Eupen ein Upgrade. Ich habe auch ein neues Dokument /dsbe/testlauf begonnen.

lino.modlib.users wird lino.modlib.users

Hier ein Bug, der offenbar schon seit Wochen drin ist und noch von niemandem bemerkt worden ist:

  1. Man kann keine neuen Benutzer anlegen. Er sagt dann “password: Dieses Feld darf nicht leer sein”. Dabei gibt es ja gar kein Passwort mehr in lino.modlib.users.

In der Tat: django.contrib.auth wird an bestimmten Stellen im Django-Code importiert, dadurch kommen diese Models auch in den Model-Pool, und dort überschreiben Sie dann das von mir in lino.modlib.users definierte Modell für User. Ohne Warnung…

Also jetzt ist das app_label nicht mehr auth, sondern users. Was im Grunde logischer ist, weil ich ja nicht Authentifizierung mache, sondern lediglich eine Benutzertabelle.

Das bedeutet aber auch, dass Djangos System mit dem app_label vielleicht gar nicht nutzbar ist, um wiederverwertbare verknüpfbare Module zu schreiben. Und oh mein Gott, die Tests von django.contrib.contentypes sind abhängig von django.contrib.auth. Die Testsuite von contenttpyes müsste für gut darauf testen, ob ein app_label names auth überhaupt installiert ist.

Na ja, also meine Idee, das auth-Modul von Django zu ersetzen, ist zwar mutig, aber vielleicht auch verrückt. Wir werden sehen. Kommt Zeit, kommt Rat. Zur Zeit funktioniert manage.py test jedenfalls mal wieder nicht.

Release 1.1.8

Wegen obigem Bug mache ich ein Release in Eupen mit DB-Migration, deshalb gönnen wir uns auch die nächste Versionsnummer.