Nuxeo mailing list archives
[CPS-users-fr] Re: developpement widget
Yves Bastide
ybastide at wanadoo.fr
Jeu 16 Nov 17:48:04 CET 2006
yengui firas a écrit :
> Bonjour,
> C'est encore concernant le développement de widget,
> Dans le widget CPSDateTime on a le champs date et dans la datastructure
> on a ajouté date_hour et date_minute
> Je voulais savoir comment se fais la correspendance entre date_hour et
> date_minute dans la DS et la valeur des select widget__date_hour et
> widget__date _minute pour que les modification de ces dernier affecte
> la valeur des variable de correspendant dans la DS
Cf les méthodes prepare, render et validate d'un widget :
* prepare prend les données dans le datamodel, données identifiées par
self.fields, et les met dans la datastructure. Par exemple :
v = datamodel[self.fields[0]]
...
v, date, hour, minute = self.getDateTimeInfo(v, mode=None)
...
datastructure[widget_id + '_date'] = date
(self.fields[0] est le premier nom de champ saisi dans le layout)
* render renvoie de l'html en utilisant les données de la datastructure. En
général il délègue la génération de l'html à un ZPT. Par exemple :
render_method = 'widget_datetime_render'
meth = getattr(self, render_method, None)
...
return meth(mode=mode, datastructure=datastructure)
(les joies de l'acquisition : getattr va chercher dans portal_skins/ et le
reste du site)
* validate fait l'inverse de prepare, mettant à jour le datamodel d'après la
datastructure et faisant les contrôles d'erreur :
date = datastructure[widget_id + '_date'].strip()
...
y, m, d = date.split('-')
...
v = DateTime(int(y), int(m), int(d), int(hour), int(minute))
...
datamodel[field_id] = v
return 1
Tu « ajoutes date_hour et date_minute » -- c'est quoi exactement ? Enfin, de
toute façon, je suppose que t'as modifié prepare (et render) et le PT. Puis il
faut les utiliser dans validate...
(Et j'espère que tu ne modifies pas directement ExtendedWidgets.py :-) )
> cordialement firas
yves
This list archive provided by Nuxeo, the
leaders of open source ECM.
Check out the Nuxeo 5 open source,
standards-based ECM project.