20110414 ======== Doppelklicks ------------ Nach einigen Tagen mit Fieber im Bett geht es jetzt weiter mit folgendem Punkt: #. In einer Grid, die auch ein Detail hat, wird durch Doppelklick auf einer CheckColumn gleichzeitig auch das Detail-Fenster geöffnet. Das muss behoben werden, bevor ich mit den "allgemeinen Uploads" anfangen kann. Die `processEvent` der `Ext.grid.GridView` feuert in folgender Reihenfolge: - ``grid.fireEvent('dblclick')`` - ``grid.fireEvent('celldblclick')`` (die dann `onCellDblClick` meiner `Lino.GridPanel` ruft) - ``column.processEvent`` (die im Fall einer `Lino.CheckColumn` den Wert umschaltet) - ``grid.fireEvent('rowdblclick')`` Wie kriege ich die beiden miteinander kombiniert? Oder zuerst mal: was will ich eigentlich genau? Soll ein Doppelklick auf der Zelle einer CheckColumn (in einer Grid mit Detail) (1) den Wert umschalten und nicht das Detail-Fenster öffnen? oder (2) den Wert nicht umschalten und stattdessen das Detail öffnen? oder (3) will ich das pro Report konfigurierbar machen? Spontan würde ich für Lösung (1) tendieren, aber Lösung (2) ist ganz leicht zu implementieren, und deshalb habe ich das jetzt mal so gemacht. Also in der Grid eines Reports, der ein Detail hat, können CheckColumns nicht per Doppelklick umgeschaltet werden. Doppelklick heißt in solchen Grids immer "Detail öffnen". Mir gefällt das so. Dumping CourseProviders and Companies ------------------------------------- Der folgende Punkt ist jetzt auch fertig: #. dpy.Serializer schreibt momentan in den dump eines CourseProvider alle Felder der Company nochmal rein. Er muss aber statt dieser Felder nur `company_ptr` setzen. War im Grunde ganz einfach, ich musste nur `_meta.local_fields` statt `_meta.fields` nehmen. Ich habe auch eigens einen Testcase :func:`lino.projects.dsbe.tests.dsbe_tests.test01` geschrieben, der allerdings nicht wirklich testet sondern mir beim Überlegen behilflich war. Ärgerlich auch wieder mal, dass ich den besagten Testcase nicht in autodoc rein kriege, wegen der `DJANGO_SETTINGS_MODULE`. Aber bon, das ist weniger dringend. Sorry, wenn in diesem Blog viele Links noch immer nicht funktionieren. Abends mach ich die Probe aufs Exempel: - Dump mit der alten Version - Check-in, Upgrade und Dump mit der neuen Version - Dateivergleich, ob auch wirklich nur die CourseProvider sich verändert haben. Alles klar. (Nachtrag: hier habe ich dann gar nicht daran gedacht zu testen, diesen neuen Dump dann auch einzulesen. Sh. :lino:`0415`) Date formatting --------------- #. Wenn man als Datum ``13/12/2010`` eingibt, macht er daraus ``12.01.2011``. Weil er das als ein amerikanisches Format ansieht. Der Fehler war nicht wie anfangs vermutet auf der Serverseite, sondern der Client schickte schon ``12.01.2011``. Das lag lediglich am Konfigurationsparameter `altFormats` des :extjs:`Ext.form.DateField`. Um kompakteren Code zu generieren, habe ich jetzt außerdem eine Klasse `Lino.DateField` in der :xfile`linolib.js`. Den Parameter `Report.date_format` habe ich vorläufig mal rausgeholt. Und statt ``lino.DATE_FORMAT_STRFTIME``, ``lino.DATE_FORMAT_EXTJS`` und ``lino.PARSE_DATE()`` heißt es jetzt ``settings.LINO.date_format_strftime`` usw. Denn das Datumsformat konnte man bisher überhaupt nicht konfigurieren, jetzt kann man das bis auf weiteres immerhin global pro Site. Check-in und Upgrade in Eupen.