20111028¶
Connecting to the BCSS¶
I wrote a new module lino.utils.xmlgen
which I prefer over
generateDS or appy.Object for generating
the XML of BCSS requests.
This is finally how I actually enjoy writing BCSS requests!
But of course it’s possible that my fascination is due to my naiveness, since I have no serious experience with XML. So I asked Gaëtan for his opinion:
voici donc deux modules qui font en principe la même chose mais de manière différente.
test5.py est ce que nous avions commencé ensemble. Cela ne marche pas encore tout-à-fait à cause du petit problème avec ANY.
Mais indépendamment de cela, je n’aimais pas la quantité de code que je dois écrire et maintenir pour générer ma requête. Hier je me suis donc lancé dans mon idée dont tu vois le résultat dans la test6.py
Note que les deux tests appellent des services différents:
test5.py HeatingAllocation
test6.py PerformInvestigation
c’est dommage car il faut maintenant comparer des pommes à des oranges, cela vient du fait qu’entre temps Gerd et moi avons compris que PerformInvestigation est plus urgente que HeatingAllocation…
Malgré cela je trouve que l’avantage de mon xmlgen au point de vue clarté du code est bien visible.
Question pour toi: qu’en penses-tu? As-tu des exemples de XML que j’aurais difficile à générer avec mon système?
A little bug¶
Read-only checkboxes are only grey but not read-only. Seems that this is due to a bug in ExtJS. For example on the Detail of a JobProvider, if you activate the checkbox is_courseprovider and click on Save, you get:
ERROR A JobProvider cannot be parent for a CourseProvider
Traceback (most recent call last):
File "t:\hgwork\lino\lino\ui\extjs3\ext_store.py", line 651, in form2obj
f.form2obj(request,instance,form_values,is_new)
File "t:\hgwork\lino\lino\ui\extjs3\ext_store.py", line 124, in form2obj
self.set_value_in_object(request,instance,v)
File "t:\hgwork\lino\lino\utils\mti.py", line 187, in set_value_in_object
insert_child(obj,self.child_model)
File "t:\hgwork\lino\lino\utils\mti.py", line 123, in insert_child
obj.__class__.__name__,child_model.__name__))
Exception: A JobProvider cannot be parent for a CourseProvider
Changed this (in lino.utils.mti.insert_child()
) to raise a
ValidationError instead of an Exception.
Also removed the assertion assert child_model != obj.__class__
(which occurred today) because in that case we would simply not find
any parent_link_field, which would lead to the validation error
“A CourseProvider cannot be parent for a CourseProvider”
This bug