Restreindre les meta_types d'un ObjectManager [Tutoriel]
Pour n'afficher que certains objets dans la liste des objets disponibles, on peutsurcharger la méthode allmetatypes() de la classe ObjectManager de cette manière :
def all_meta_types (self):
"""Empeche l'ajout d'autres objets que ceux de type MyObject"""
return ({'name' : 'MyObject', 'action' : 'manage_addMyObjectForm'},)
Et ainsi, seul l'objet MyObject est disponible dans la liste des produits que l'on peut ajouter.
Zope génère une erreur avec ce code parce qu'il ne connait pas la méthode manage_addMyObjectForm. Il faut la définir en la pointant sur la méthode de la classe visée (MyObject dans ce cas) et de même avec la méthode manage_addMyObject qui créé le produit et l'ajoute dans le conteneur. Ce qui donne au final :
from MyObject import *
...
...
manage_addMyObjectForm = manage_addMyObjectForm
manage_addMyObject = manage_addMyObject
def all_meta_types (self):
"""Empeche l'ajout d'autres objets que ceux de type MyObject"""
return ({'name' : 'MyObject', 'action' : 'manage_addMyObjectForm'},)
Note : L'attribut meta_types dans une classe de type ObjectManager donne la liste des objets que l'on peut ajouter à cet ObjectManager en plus des objets visibles habituellement.
Commentaires
Re: Restreindre les meta_types d'un ObjectManager
Posted by:
PatrickCarabin
at
10/09/01
Pour éviter des effets de bord dus à l' «import» trop genereux, ne pourrait-on commencer par :
import MyObject
...
...
manage_ addMyObjectForm = MyObject.manage _addMyObjectForm
manage_ addMyObject = MyObject.manage _addMyObject
Qu'en penses-tu?
Oui, c'est vrai !
En fait, je suis encore débutant en Zope et Python, ca fait à peine 2 jours que j'ai découvert les différences subtiles qu'il y a entre les deux formulations d'import ! :)

Log in
PloneArticle
Nuxeo lance Nuxeo Collaborative Portal Server®, la solution Zope de gestion de contenu web et de travail collaboratif pour les organisations