20110406

Qooxdoo muss warten

Es sieht nun leider ziemlich klar danach aus, dass docs/tickets/37 eine Weile lang warten muss. Weil ich zwei Anfragen von Kunden vorliegen habe, denen das ExtJS-Interface genügt. Eine oder gar zwei weitere Anwendungen halte ich momentan für wichtiger als ein weiteres UI.

Drei Bugs weniger im ExtJS-UI

  1. Beim Drücken auf “Speichern” (Person) nach der Eingabe einer neuen Sprache in “Sprachkenntnisse” kommt eine Fehlermitteilung Server-side failure: {‘language’: [u”Wert u’fij’ ist keine gxfcltige Option.”]}

    Die Problemmeldung war eher unscheinbar, aber ich habe 3 Stunden danach gesucht! Ticket docs/tickets/38. Der Bug ist wahrscheinlich schon immer dagewesen und fand immer dann statt, wenn in einem Slave und seinem Master gleichnamige Felder existierten. Also z.B. auch wenn man in Person‣Detail‣Sprachen‣Kursanfragen‣Bemerkung etwas geändert hatte.

  2. Wenn man auf einem importierten Partner ‘Speichern’ klickte, dann wurden alle inaktiven Checkboxen (disabled_fields) auf False gesetzt.

  3. Wenn man Kursanbieter ankreuzt, kam auf dem Server:

    Traceback (most recent call last):
      File "l:\snapshots\django\django\core\servers\basehttp.py", line 283, in run
        self.result = application(self.environ, self.start_response)
      File "l:\snapshots\django\django\contrib\staticfiles\handlers.py", line 68, in __call__
        return self.application(environ, start_response)
      File "l:\snapshots\django\django\core\handlers\wsgi.py", line 273, in __call__
        response = self.get_response(request)
      File "l:\snapshots\django\django\core\handlers\base.py", line 169, in get_response
        response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
      File "l:\snapshots\django\django\core\handlers\base.py", line 111, in get_response
        response = callback(request, *callback_args, **callback_kwargs)
      File "t:\hgwork\lino\lino\ui\extjs\ext_ui.py", line 1001, in api_element_view
        return self.form2obj_and_save(request,ah,data,elem,False) # force_update=True)
      File "t:\hgwork\lino\lino\ui\extjs\ext_ui.py", line 747, in form2obj_and_save
        rh.store.form2obj(request,data,elem,is_new)
      File "t:\hgwork\lino\lino\ui\extjs\ext_store.py", line 538, in form2obj
        f.form2obj(instance,form_values,is_new)
      File "t:\hgwork\lino\lino\ui\extjs\ext_store.py", line 264, in form2obj
        v = getattr(obj,self.field.name)
    AttributeError: 'NoneType' object has no attribute 'is_courseprovider'
    

Aber ach, nachdem ich diese Bugs behoben hatte, sah ich, dass es noch einen gibt: wenn man eine Firma speichert, dann wird is_active auf False gesetzt, weil dieses Feld gar nicht im Detail angezeigt wird. Nee, jetzt ist Schluss! Das eigentliche Problem ist ja die “Design Decision” von ExtJS, dass sie HTML-Formulare auf die historische Art submitten. Um alle Probleme auf einmal zu lösen, sollte ich es wahrscheinlich wie Daniel Haas machen: How to submit Ext forms the right way