20120203

Der erste Punkt von gestern ist noch komplexer als gedacht:

  • Klick auf “Neue Klienten” zeigt alle. Also der Filter steht nicht im Klick drin. Das liegt daran, dass die param_values eines ActionRequest noch nicht in die URL übergeben und noch nicht vom Panel übernommen werden.

Ich muss das ParameterPanel mit einer BaseForm definieren und die param_values nicht als sequentielles array sondern wie einen Detail-Record übergeben. Sonst machen z.B. Comboboxen einen zusätzlichen request. Die kriegt momentan nur coached_by=103 gesetzt und macht dann brav einen AJAX-call um rauszufinden, dass der dazugehörige Text “root” ist. Problem ist, dass ihr setValue dadurch deferred wird und im gleich darauf stattfindenden load des GridStores leer ist.

Checkin um 10 Uhr, um diesen Stand der Dinge zu archivieren.

Checkin um 13.15 Uhr: Es war wirklich nicht leicht (sh. changeset), aber ich habs geschafft!

Die folgenden Punkte gingen nun relativ schnell:

  • Anzahl Zeilen pro Seite einer Grid dynamisch in Funktion der Fenstergröße ermitteln.
  • Neue virtuelle Kolonnen mit Anfangs- und Enddatum des aktuellen Vertrags in MyClients.

Checkin um 17 Uhr wegen Feierabend. Bleibt zu tun:

  • Konfigurierung Fachbereiche: Wenn man ‘name’ editiert, ist das Feld blau.
  • Fachbereiche Feld “body” kann weg
  • Neuzugänge: hier muss noch ein Button bzw eine Prozedur her für den Akt der Zuweisung.

17.50 Uhr Oho, da war ja noch ein kleiner Bug: Um zu entscheiden, um api_list_view eine phantom-Zeile dranhängt oder nicht, kann es nicht fragen, ob die Tabelle eine Aktion SubmitInsert hat, denn gerade in Tabellen ohne Detail braucht man ja eine PhantomRow. Lösung: get_permission() kriegt jetzt immer drei statt bisher zwei Parameter. Der dritte Parameter ist entweder None oder eine Tabellenzeile (model instance). Infolgedessen kann get_permission jetzt doch nicht auf dem Model definiert werden. Falls das mal nötig werden sollte, muss ich mir was einfallen lassen…

api_list_view fragt jetzt nach submit_action (die auch dann existiert, wenn es kein Detail gibt) und mit None, und User.get_permission ist wie folgt definiert:

@classmethod
def get_permission(cls,action,user,obj):
    if user.is_superuser: return True
    if action.readonly: return True
    if user is not None and user == obj: return True
    return False

Resultat: in Users haben nur Superuser eine phantom-Zeile. Und in Fachbereiche (wo keine war) ist sie wieder da.

Checkin um 18.20 Uhr

Oho, zumindest auf Jana funktioniert der [pdf]-Ausdruck dann doch nicht. Er macht zwar ein Dokument, aber das ist bis auf den Titel leer. In der .odt-Version steht dann:

Error while evaluating the expression "xhtml(table_body)" defined in the "from" part of a statement.
File "<string>", line 1, in <module>
File "/var/snapshots/appy/appy/pod/renderer.py", line 244, in renderXhtml
stylesMapping, ns).run()
File "/var/snapshots/appy/appy/pod/xhtml2odt.py", line 497, in run
self.xhtmlParser.parse(self.xhtmlString)
File "/var/snapshots/appy/appy/shared/xml_parser.py", line 193, in parse
self.parser.parse(inputSource)
File "/usr/lib/python2.6/xml/sax/expatreader.py", line 107, in parse
xmlreader.IncrementalParser.parse(self, source)
File "/usr/lib/python2.6/xml/sax/xmlreader.py", line 123, in parse
self.feed(buffer)
File "/usr/lib/python2.6/xml/sax/expatreader.py", line 211, in feed
self._err_handler.fatalError(exc)
File "/usr/lib/python2.6/xml/sax/handler.py", line 38, in fatalError
raise exception
<class 'xml.sax._exceptions.SAXParseException'>: <unknown>:1:1: not well-formed (invalid token)

Oder (wenn ich ein encode('utf-8') mache):

Error while evaluating the expression "xhtml(table_body)" defined in the "from" part of a statement.
File "<string>", line 1, in <module>
File "/var/snapshots/appy/appy/pod/renderer.py", line 244, in renderXhtml
stylesMapping, ns).run()
File "/var/snapshots/appy/appy/pod/xhtml2odt.py", line 497, in run
self.xhtmlParser.parse(self.xhtmlString)
File "/var/snapshots/appy/appy/shared/xml_parser.py", line 193, in parse
self.parser.parse(inputSource)
File "/usr/lib/python2.6/xml/sax/expatreader.py", line 107, in parse
xmlreader.IncrementalParser.parse(self, source)
File "/usr/lib/python2.6/xml/sax/xmlreader.py", line 123, in parse
self.feed(buffer)
File "/usr/lib/python2.6/xml/sax/expatreader.py", line 211, in feed
self._err_handler.fatalError(exc)
File "/usr/lib/python2.6/xml/sax/handler.py", line 38, in fatalError
raise exception
<class 'xml.sax._exceptions.SAXParseException'>: <unknown>:1:7999: undefined entity