20120517¶
Ha, das war lustig!
lino.ui.extjs3.ext_ui.ExtUI.build_site_cache()
generiert die lino*.js-Dateien jetzt korrekt so,
dass unnötige Elemente gar nicht erst drin stehen.
Und gestern schrieb ich ja:
It would be theoretically more “logical” to also use
lino.core.actors.Actor.get_permission()
for deciding whether a menu command should be created or not. Lino doesn’t currently do this because it feels more “sane” to do these decicions in the setup_XXX_menu functions.
Aber jetzt wo auch das Menü schon einmalig beim Server-Start generiert werden kann statt bei jedem request (tut es zwar noch nicht, aber das ist jetzt möglich), revidiere ich meine gestrige Meinung. Habe z.B. begonnen, dass der Demo-Benutzer Caroline die Quicklinks “Meine Klienten”, “Meine VSE” und “Meine Art-60-7-Konventionen” nicht mehr sieht. Die lino_caroline_*.js sind dadurch schon von 2 auf 1,5 MB geschrumpft.
Bevor ich jetzt noch die Test-Suite aufräume, mach ich ein Checkin: http://code.google.com/p/lino/source/detail?r=7ab4496fb3d9.
Für die Test-Suite gibt es noch ein Detail zu beachten: Lokale Fixtures dürfen zum Testen eigentlich nicht geladen werden. Wie könnte ich das automatisch abstellen? Momentan sehe ich noch keine Lösung. En addendant gilt: falls lokale fixtures existieren sollte man das Verzeichnis kurzfristig umbenennen oder sonstwie deaktivieren, wenn man manage.py test startet.
Folgende Demo-Benutzer sollten in lino.apps.pcsw existieren:
Der bisherige Benutzer “user” kommt raus.
root : Experte für alle Module
luc : profile=’root’
melanie : Manager integ
hubert : Einfacher Benutzer integ
alicia : profile=’hubert’
caroline : Einfacher Benutzer newcomers
kerstin : Einfacher Benutzer debts
Oder anders:
lino.modlib.users.fixtures.demo
macht die Benutzer root und luclino.modlib.newcomers.fixtures.demo
macht den Benutzer carolinelino.modlib.debts.fixtures.demo
macht den Benutzer kerstinlino.apps.pcsw.fixtures.demo
macht die Benutzer melanie , hubert und alicia.
Das ist gut. Benutzer kerstin, root und luc sehen einen Reiter “Budgets” im Detail einer Person, die anderen nicht.
Jetzt haben wir noch ein “kleines” Problem: der Reiter “Verträge”
enthält zwei GridPanels, die nur für integ-Benutzer sichtbar sind,
also nicht z.B. für kerstin. Und somit ist dieser Reiter bei kerstin jetzt leer.
Er sollte aber nicht nur leer sein, sondern ganz verschwinden.
Und zwar automatisch.
Ein Container, der nichts Sichtbares enthält, soll ebenfalls unsichtbar werden.
Provisorische Lösung: lino.ui.extjs3.ext_elems.Panel.get_view_permission()
macht einen Vorschau-Loop durch seine Elemente. Wenn kein einziges sichtbar
ist, wird auch das Panel selbst unsichtbar.
Das ist ein bischen Ressourcenverschwendung, aber immerhin nur beim Generieren
der lino*.js
.
Cool. Funktioniert sogar.
Optimaler wäre wahrscheinlich, dass (1) ext_store aus dem UI rauskommt und (2) die LayoutHandles und TableHandles gar nicht mehr aufbewahrt werden, sondern pro Benutzerprofil instanziert und nach dem Generieren weggeworfen werden: die sind nämlich gar nicht nötig während des laufenden Betriebs. Zu überprüfen. Nicht so dringend.
Auch der Reiter “Stellenanfragen”
(der lediglich lino.modlib.jobs.models.CandidaturesByPerson
enthält)
ist bei Kerstin jetzt verschwunden.
Einfach nur, indem ich lino.modlib.jobs.models.Candidatures
jetzt von lino.apps.pcsw.models.IntegTable
erben lasse.
Dann noch etwas, das mir zwischendurch auffiel:
lino.modlib.debts.models.Actor
braucht ein Feld partner,
damit man bei der manuellen Eingabe der Akteure eines Budgets
zunächst eine Person auswählen kann.
Was noch fehlt, ist eine Möglichkeit, um in der (normalerweise leeren)
Auswahlliste für Actor.sub_budget dann ein leeres Budget erstellen zu
können.
Unter lino.modlib.debts.models.BudgetDetail
habe ich mal ein paar Screenshots platziert.
http://code.google.com/p/lino/source/detail?r=54bbbb071079.
Abends kam mir dann noch die spontane Erkenntnis, dass unsere geniale, super-flexible Struktur mit den verschachtelbaren Budgets für die Benutzer zumindest momentan noch nicht gut ist. Die Leute sind gewohnt, die Beträge der Aktoren in zwei Kolonnen nebeneinander zu haben. Und zwar auch schon bei der Eingabe. Ich glaube nicht, dass die sich mit der momentanen Methode anfreunden werden.
Also die Version von heute nachmittag in die lino.sandbox rein und die neue Idee ausprobiert. Und nach nur anderthalb Stunden funktioniert es! Oder zumindest fast: Am Ausdruck und der Zusammenfassung muss ich noch was spielen. Aber jetzt gehe ich erstmal schlafen.