next up previous contents
Next: About this document ... Up: Tutorial Zope Previous: Donner des arguments à   Contents

Étendre les fonctionnalités de Zope :
les Produits

Les produits sont comme des plug-ins de Zope . Ils sont écrits en Python. On les place dans le répertoire Products de zope, généralement : /usr/lib/zope/lib/python/Products. On doit créer le fichier __init__.py qui doit importer la classe produit. On ajoute à cela une fonction d'initilisation :
import MaClasse 
def initialize(context): 
""" 
initialise MaClasse
"""
    context.registerClass(
        MonProduit.MaClasse,
        permission=[...], 
        construcors = (MaClasse.manage_addMonProduit, MaClasse.manage_addMonProduitForm),
        icon='MonIcone.png')
La classe MaClasse sera alors connue de Zope . Elle va apparaitre dans le menu Select type to add. Pour cela, dans le module MonProduit, on indique comment doit apparaître le produit :
from OFS import SimpleItem
class MaClasse(SimpleItem.Item)
"""
exemple MaClasse
"""
    # type qui apparaitra dans le select
    meta_type = 'minimal'
    # onglets de gestion
    manage_options = ({'label':'View', 'action':'index_html'},)
    # initialisation de MaClasse
    def __init__(self,id):
        "a la creation d'un objet de MaClasse"
        self.id = id
    # vue de l'objet
    def index_html(self):
        "vue par defaut"
        return '<html><body>Salut!</body></html>'
    # administration
    def manage_addMonProduit(self, id, RESPONSE=None):
        "Ajoute un objet de MonProduit dans un folder"
        self._setObject(id, MaClasse(id))
        RESPONSE.redirect('index_html')
    def manage_addMonProduitForm(self)
        "formulaire pour obtenir l'id de l'instance"
        return """<html><body>Id de l'instance ?<br>
<form name="form" action="manage_addMonProduit">
<input type="text" name="id"><br>
<input type="submit" value="creer">
</form></body></html>"""
Ici, MaClasse hérite de SimpleItem.Item. On ajoute aux options manage_options le label 'View' qui appelle index_html, lequel affiche du texte html. On trouve les deux méthodes qui vont sevir à la construction de l'objet : manage_addMonProduit et manage_addMonProduitForm qui ont été déclarées dans __init__.py. En conséquence, l'instance créée est une page html définie par index_html(self). Toute autre méthode du nouvel objet est accessible par son URL, par exemple : /MonId/MaMethode .

Benoît Rouits 2001-05-03