20110110 ======== a) job_office, Synchronisierung ------------------------------- - `Person.clean` prüft jetzt auf "Circular reference". Sonst kommt irgendwann mal ein Schlaumeier auf die Idee, einer Kontaktperson des ADG sich selbst als Kontaktperson einzutragen. `demo.dpy` tries to create a circular reference and tests whether it fails:: from django.core.exceptions import ValidationError # a circular reference: bernard is contact for company adg and also has himself as `job_office_contact` bernard = Person.objects.get(name__exact="Bodard Bernard") adg = company(name=u"Arbeitsamt der D.G.",city=eupen,country='BE') yield adg adg_dir = contact(company=adg,person=bernard,type=1) yield adg_dir try: bernard.job_office_contact = adg_dir bernard.clean() #~ bernard.save() except ValidationError: pass else: raise Exception("Expected ValidationError") Vielleicht müsste lino.dsbe eher ein neues Modell CoachedPerson(contacts.Person) definieren. Dann hätten "normale" Kontaktpersonen gar nicht die vielen Felder des DSBE. Dazu wäre ein Feld Person.type nötig. - Noch drei neue Felder in Person: =============== ========== Lino TIM =============== ========== card_type CARDTYPE card_issuer CARDISSUER noble_condition NOBLECOND =============== ========== - Statt eines Klassenattributs `job_office` im LinoSite habe ich jetzt ein FK-Feld `job_office` in SiteConfig. Dieser Parameter ist wie `site_company` auf der Grenze zwischen statischen und dynamischen Konfigurationsparametern. Eindeutig dynamisch ist bisher eigentlich nur `next_partner_id`. Aber `job_office` und `site_company` sind übers UI leichter einzugeben. - `street_box` wurde beim Synchronisieren aus TIM vergessen. - Neue Funktion :meth:`lino.Site.setup_dblogger`. Dadurch kann man nun den loglevel des dbloggers lokal verändern. b) Cache-Bug ------------ - Auf der Suche nach dem "Cache-Bug". master params sind die Parameter, die ein slave dieses Panels als base params übernehmen soll. master- und baseparams dürfen immer nur mk und mt sein. Der Fehler ist scheinbar, dass ich 'query' auch da rein speichere. Für 'query' brauche ich eine weitere variable query_params. Bug behoben. Da waren im Anschluss noch einige Nebenwirkungen mit dem refresh. Aber jetzt scheint alles zu klappen.