[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.