Cyrille Leroux a écrit :
Bonjour et merci pour la réponse,
Il y a toujours quelque chose qui m'échappe. En regardant dans le
fichier __init__.py du répertoire principal, je trouve un import vers
un fichier qui ressemble beaucoup aux ExtendedWidgets.py, puisqu'il
contient des :
- meta_type =...
- def render(self, mode, datastructure, **kw):
- InitializeClass(...
- widgetRegistry.register(...
Par contre pas de :
- def prepare(self, datastructure, **kw):
- def validate(self, datastructure, **kw):
Qui pourtant ont l'air importants d'après
CPSSchemas/doc/HOWTO_write_a_widget.txt.
Plus concrètement, j'ai un bout de code dans le script d'installation
install.py :
wtool = self.portal.portal_widget_types
for id, info in widgets.items():
(...)
widget = wtool.manage_addCPSWidgetType(id, info['type'])
widget.manage_changeProperties(**info['data'])
sachant que widgets contient quelque chose qui ressemble à :
widgets = {
'clef1': {
'type': 'clef1 type',
'data': {},
},
'clef2': {
'type': 'clef2 type',
'data': {},
},
'clef3': {
'type': 'clef3 type',
'data': {},
},
}
Mes questions :
- Si je supprime les appels vers ce bout de code, je perds quoi
exactement? (vu que portal_widget_types n'existe plus).
Avec CPS 3.4: plus rien, le registre persistent n'est plus utilisé. Les imports
dans le __init__.py suffisent désormais.
L'appel widgetRegistry.register() remplace ce registre persistent.
- Si j'ai bien compris, les widgets doivent être recréés à chaque
démarrage de Zope et ne sont pas persistants... du coup, et si c'est
toujours utile, où faut-il mettre le contenu du widgets= {...} ?
Le meta_type de la classe widget elle-même suffit. Le contenu de ce dictionnaire
peut donc être supprimé.
- Vais-je devoir ajouter les méthodes "prepare" et "validate"?
Quand on écrit un widget, on dérive souvent une classe existante qui implémente
les trois methodes prepare, validate et render. Si les implémentations de la
classe parent suffisent, il n'est pas nécessaire de les surcharger.
--
Olivier
_______________________________________________
cps-users-fr
Adresse de la liste : [email protected]
Gestion de l'abonnement : <http://lists.nuxeo.com/mailman/listinfo/cps-users-fr>