20110613 ======== Disable slave elements in Insert Window --------------------------------------- Hier die Problemmeldung eines Benutzers: Es ist es für den Benutzer nicht logisch, dass er keinen Drittpartner hinzufügen kann, solange er eine neue Notiz nicht mindestens einmal gespeichert hat. Ja klar. Das hatte ich schon immer geahnt und bisher lediglich noch nicht implementiert: im InsertWindow müssen natürlich alle Slave-Elemente disabled werden. Nicht nur der "Insert"-Button des HtmlPanels, sondern auch die HtmlPanels selber und alle SlaveGridPanels. Anders als bei :term:`disabled fields` brauchen diese Felder natürlich nicht eigens in der AJAX-Response genannt zu werden, sondern die sind ja automatisch bekann und immer die gleichen. Deshalb haben Lino.GridPanel und Lino.HtmlBoxPanel in der :xfile:`linolib.js` einfach ein Attribut `disabled_in_insert_window`. En passant zwei Bugs weniger: Wenn man ein Insert-Fenster per Permalink aufrief, z.B. http://127.0.0.1:8000/api/notes/MyNotes?fmt=insert&mt=1&mk=1, dann kam ein `UnboundLocalError: local variable 'params' referenced before assignment"`. Und nachdem dieser Bug behoben kam, kam außerdem nicht der richtige Titel "Einfügen nach...". Intuitiveres Bearbeiten der Drittpartner ---------------------------------------- Und noch eine Problemmeldung eines Benutzers: Beim Erstellen eines Drittpartners einer Notiz kann man eine Person UND eine Firma gleichzeitig auswählen. Eigentlich geht das aber nicht und führt zu Reaktionen, die für den Benutzer nicht nachvollziehbar sind. Es ist richtig und nötig, dass man beide Felder (Person und Firma) eines Drittpartners ausfüllen kann, und das bedeutet dann "Person X als Vertreter für Firma Y". Das wurde dann bisher im Panel allerdings als "Person / Firma" angezeigt. In der Tat nicht gerade selbsterklärend. Für die nächste Version ändere ich diese Anzeige mal nach " z.Hd. ", dann ist der Verwendungszweck wahrscheinlich intuitiv klarer. Eine andere störende Sache beim Erstellen von Drittpartnern war, dass das Insert-Fenster als solches verwirrte. Deshalb habe ich es jetzt probeweise mal rausgeschmissen. Was allerdings dazu führt, dass auch der "Einfügen"-Button verschwindet. Um Drittpartner einzufügen, muss man momentan also das Drittpartner-Panel "im eigenen Fenster öffnen". Später kommt dann das Erstellen per Drag & Drop hinzu. Check-in Revision `4bf5a5344714 `_ Lino location other than "/" ---------------------------- Um auf unserem internen Webserver (jana) mehrere Lino-Anwendungen parallel laufen lassen zu können, habe ich erstmals den Fall, dass Lino nicht auf "/" sitzt. Um das zu ermöglichen, habe ich einige Stunden gewurstelt und eine ganze Serie von Check-ins gemacht. Die momentane Lösung ist möglicherweise auch nicht definitiv, aber sie geht so: wenn Lino nicht unter ``/`` läuft, dann muss man das ebenfalls in der :xfile:`settings.py` im neuen Klassenattribut :attr:`lino.Lino.root_url` angeben. In der Apache-Konfig:: ServerAdmin webmaster@localhost DocumentRoot /usr/share/apache2/default-site Options FollowSymLinks AllowOverride None WSGIDaemonProcess example.com processes=2 threads=15 WSGIProcessGroup example.com WSGIScriptAlias /prj1 /usr/local/django/prj1/apache/django.wsgi Alias /prj1/media/ /usr/local/django/prj1/media/ SetHandler none WSGIScriptAlias /prj2 /usr/local/django/prj2/apache/django.wsgi Alias /prj2/media/ /usr/local/django/prj2/media/ ErrorLog ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined Nebenbei sind bei diesen Arbeiten auch noch einige kleine Änderungen gekommen: - :mod:`lino.modlib.countries.fixtures.ee` funktioniert noch nicht - :mod:`lino.modlib.countries.fixtures.few_cities` ist jetzt intelligenter und funktioniert auch mit `be` zusammen. Der folgende Traceback kommt noch mit Django 1.3, aber mindestens ab Revision 16392 nicht mehr:: luc@mops:/usr/local/django/igen_demo$ python manage.py test Creating test database for alias 'default'... .E.... ====================================================================== ERROR: test_shortcut_view (django.contrib.contenttypes.tests.ContentTypesTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/var/snapshots/django/django/contrib/contenttypes/tests.py", line 64, in test_shortcut_view obj = User.objects.create(username="john") File "/var/snapshots/django/django/db/models/manager.py", line 138, in create return self.get_query_set().create(**kwargs) File "/var/snapshots/django/django/db/models/query.py", line 360, in create obj.save(force_insert=True, using=self.db) File "/var/snapshots/django/django/db/models/base.py", line 460, in save self.save_base(using=using, force_insert=force_insert, force_update=force_update) File "/var/snapshots/django/django/db/models/base.py", line 553, in save_base result = manager._insert(values, return_id=update_pk, using=using) File "/var/snapshots/django/django/db/models/manager.py", line 195, in _insert return insert_query(self.model, values, **kwargs) File "/var/snapshots/django/django/db/models/query.py", line 1436, in insert_query return query.get_compiler(using=using).execute_sql(return_id) File "/var/snapshots/django/django/db/models/sql/compiler.py", line 791, in execute_sql cursor = super(SQLInsertCompiler, self).execute_sql(None) File "/var/snapshots/django/django/db/models/sql/compiler.py", line 735, in execute_sql cursor.execute(sql, params) File "/var/snapshots/django/django/db/backends/util.py", line 34, in execute return self.cursor.execute(sql, params) File "/var/snapshots/django/django/db/backends/sqlite3/base.py", line 234, in execute return Database.Cursor.execute(self, query, params) DatabaseError: no such table: auth_user ---------------------------------------------------------------------- Ran 6 tests in 13.871s FAILED (errors=1) Destroying test database for alias 'default'... Lino 1.1.16 ----------- Und die heutigen Änderungen releasen wir als :lino:`/releases/2011/0613`.