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

_______________________________________________
cps-users-fr Adresse de la liste : [email protected]
Gestion de l'abonnement : <http://lists.nuxeo.com/mailman/listinfo/cps-users-fr>

Répondre à