20120131¶
py2js() without global list of converters¶
Seit Sonntagabend hatte ich über sieben Stunden an einer Änderung gearbeitet, die ich dann wieder verworfen habe.
Die Idee war eigentlich ganz nobel: ich möchte gern einen subtilen Missstand beheben: die Tatsache, dass py2js() eine globale Liste von Konvertern benutzt. Das könnte unerwünschte Nebenwirkungen haben.
lino.utils.xmlgen
arbeitet jetzt nach dem Prinzip,
das ich auch für lino.utils.jsgen
fast fertig hatte.
Für jsgen habe ich es dann wieder verworfen, weil es
erstens noch mehr Änderungen erfordert hätte (u.a. ext_store.value2dict()
usw hätten ebenfalls noch konvertiert werden müssen) und zweitens
weil sich rausstellte, dass das doch sehr auf die Performance
drückte: Generieren einer lino.js
nahm 8,6 statt bisher
5,5 Sekunden.
Tabellen nach pdf drucken¶
Das funktioniert nun…. mit zwei offenen Problemen:
er nimmt immer den gleichen Namen für die temporäre Datei. Also wenn zwei Benutzer die gleiche Tabelle gleichzeitig ausdrucken, gibt es Probleme.
Tabellen wie Persons haben sehr viele Kolonnen, so dass das Resultat lustig aussieht aber nicht sehr nützlich ist. Lösungswege:
bei solchen Listen insgesamt die Kolonnenzahl reduzieren.
Pro Kolonne konfigurieren können, ob sie (1) am Bildschirm, (2) in der .csv-Datei, (3) in der .pdf-Datei erscheinen soll oder nicht.
Überschneidende Verträge¶
Oh, hier ist was Schönes:
Unhandled exception in thread started by <bound method Command.inner_run of <django.core.management.commands.runserver.Command object at 0x011373D0>>
Traceback (most recent call last):
File "l:\snapshots\django\django\core\management\commands\runserver.py", line 92, in inner_run
self.validate(display_num_errors=True)
File "l:\snapshots\django\django\core\management\base.py", line 249, in validate
num_errors = get_validation_errors(s, app)
File "l:\snapshots\django\django\core\management\validation.py", line 30, in get_validation_errors
for (app_name, error) in get_app_errors().items():
File "l:\snapshots\django\django\db\models\loading.py", line 157, in get_app_errors
self._populate()
File "l:\snapshots\django\django\db\models\loading.py", line 67, in _populate
self.load_app(app_name)
File "l:\snapshots\django\django\db\models\loading.py", line 88, in load_app
models = import_module('.models', app_name)
File "l:\snapshots\django\django\utils\importlib.py", line 35, in import_module
__import__(name)
File "t:\hgwork\lino\lino\modlib\newcomers\models.py", line 44, in <module>
from lino.apps.pcsw.models import Person, AllPersons, only_my_persons, PersonsByCoach1, MyActivePersons
File "t:\hgwork\lino\lino\apps\pcsw\models.py", line 124, in <module>
class CefLevel(ChoiceList):
File "t:\hgwork\lino\lino\utils\choicelists.py", line 91, in __new__
register_choicelist(cls)
File "t:\hgwork\lino\lino\utils\choicelists.py", line 68, in register_choicelist
(k,CHOICELISTS[k]))
Exception: ChoiceList name 'CefLevel' already defined by <class 'lino.apps.pcsw.models.CefLevel'>
So eine Fehlermeldung kann durch einen redundanten import
kommen.