On 3/6/06, Olivier Grisel <[EMAIL PROTECTED]> wrote:
> Cyrille Leroux a écrit :
> >     Python 2.4.2
> >     Zope 2.9.0
> >     CPS 3.4.0beta2
> >
> > Bonjour,
> >
> > J'ai un problème de retro-compatibilité sur un produit et donc
> > j'aimerais savoir comment recréer manuellement le portal_widget_type.
>
> Pourquoi faire ? Dans CPS 3.4, les definitions de widgets ne sont plus
> persistantes (car personne ne s'en servait). Le portal_widget_type ne sert 
> donc
> que pour la compatibilité. Les types de widgets sont désormais définis
> directement dans le code et enregistrés au lancement de Zope. Pour voir des
> exemples d'enregistrement de widgets :
>
>   http://svn.nuxeo.org/trac/pub/file/CPSSchemas/trunk/ExtendedWidgets.py
>
> en particulier, les directives du type 
> "widgetRegistry.register(CPSTextWidget)"
> et le fait que ExtendedWidget est importé par le __init__.py du produit
> CPSSchemas pour initialiser tous les types de widgets au lancement de Zope.
>
> --
> Olivier
>
> _______________________________________________
> cps-users-fr
> Adresse de la liste : [email protected]
> Gestion de l'abonnement : 
> <http://lists.nuxeo.com/mailman/listinfo/cps-users-fr>
>

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

- 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= {...}  ?

- Vais-je devoir ajouter les méthodes "prepare" et "validate"?

Merci d'avance

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

Répondre à