Accueil » Tutoriels Zope » MinimalContent pour Zope3

MinimalContent pour Zope3

Document Actions

Par gawel le 22/04/2005 00:18

Ce tutoriel décrit comment créer un type de contenu minimal en ce basant sur les schémas de Zope3. Il n'est écrit que pour vous donner une première approche de la philosophie Zope3.

Catégories : Zope3

Stucture du package

Notre package auras la structure suivante

  • minimalcontent/
    • __init__.py
    • interfaces.py
    • classe.py
    • browser.py
    • minimalview.pt
    • configure.zcml

__init__.py

Dans Z3 le __init__ est la pour la déco ;) En fait, juste pour faire de notre répertoire un package.

'''__init__ pour faire du dossier un package '''

interfaces.py

Une classe qui représente le schéma de notre contenu (son interface)


from zope.interface import Interface
from zope.schema import Text, TextLine, Bool

class IMinimalContent(Interface):
    
u'''A minimal content'''

    
# un champ text
    
textline = TextLine(title=u'Text Line')

    
# un text area
    
text = Text(title=u'Text')

    
# un case a cocher
    
boolean = Bool(title=u'Boolean')

classe.py

L'objet en lui meme. La ou seront stockés les attributs


import persistent
from zope.interface import implements
from interfaces import IMinimalContent

# on veut que notre objet soit persistent
class MinimalContent(persistent.Persistent):
    
u'''A minimal content'''

    
# il implemente son interface (pour un contenu c'est suffisant)
    
implements(IMinimalContent)

    
# Un init des plus simple n'est ce pas ?
    
def __init__(self,title='',description='', text=''):
        
self.title = title
        
self.description = description
        
self.text = text

browser.py

C'est la vue du contenu


import zope.interface
from interfaces import IMinimalContent

# une class de vue pour le contenu avec un context et un request
class MinimalContentView:

    
# interface pour laquelle on utilise la vue
    
__used_for__ = IMinimalContent

    
def __init__(self, context, request):
        
self.context = context
        
self.request = request

minimalview.pt

Une template d'affichage. Si vous connaissez les zpt vous ne serez pas perdu.


<html metal:use-macro="context/@@standard_macros/page">
    
<body>
        
<div metal:fill-slot="body">
            
<div class="row">
                
<label>Text Line</label>
                
<div tal:content="context/textline">Text Line</div>
            
</div>
            
<div class="row">
                
<label>Text</label>
                
<div tal:content="context/text">Text</div>
            
</div>
            
<div class="row">
                
<label>Bool</label>
                
<div tal:content="context/boolean">True</div>
            
</div>
        
</div>
    
</body>
</html>

configure.zcml

C'est ici que l'on déclare nos classes, interfaces et vues ainsi que les permissions qui leurs sont associés

< configure
xmlns="http://namespaces.zope.org/zope"
xmlns:browser="http://namespaces.zope.org/browser"
xmlns:global_translation="http://namespaces.zope.org/gts"
>

< !-- description de la classe -->
< content class=".classe.MinimalContent">

< !-- ce quelle implemente -->
< implements interface=".interfaces.IMinimalContent" />
< implements
interface="zope.app.annotation.IAttributeAnnotatable"
/>

< !-- la permission zope.View est requise pour accéder au contenu -->
< require permission="zope.View"
interface=".interfaces.IMinimalContent" />

< !-- la permission zope.ManageContent est requise pour modifier le schema -->
< require permission="zope.ManageContent"
set_schema=".interfaces.IMinimalContent" />
< /content>

< !-- la vue du contenu
notez que le nom qui lui est associer n'est pas le même que le nom du fichier .pt
-->
< browser:page
for=".interfaces.IMinimalContent"
name="index.html"
template="minimalview.pt"
permission="zope.View"
class=".browser.MinimalContentView"
/>


< !-- le formulaire d'edit du schema -->
< browser:editform
schema=".interfaces.IMinimalContent"
label="Change Bookmark Information"
name="edit.html"
menu="zmi_views" title="Edit"
permission="zope.ManageContent"
/>

< !-- le formulaire d'ajout -->
< browser:addform
schema=".interfaces.IMinimalContent"
label="Add a minimal content"
content_factory=".classe.MinimalContent"
name="AddMinimalContent.html"
permission="zope.ManageContent"
/>

< !-- un menu pour pouvoir ajouter notre contenu -->
< browser:addMenuItem
class=".classe.MinimalContent"
title="Minimal Content"
description="A minimal content."
permission="zope.ManageContent"
view="AddMinimalContent.html"
/>

< /configure>

Note pour plus tard:

  • Expliquer l'i18n
  • Débuger la coloration syntaxique qui oblige à mettre un espace après les < dans un fichier xml. N'oubliez pas de les enlever !

doc sur la création des produit sous Zope3

Posté par wahid le 30/03/2006 19:29
svp
Je cherche un tutorial sur la création des produit sous zope3 ou zope2

Zcml :(

Posté par Jah le 25/04/2007 18:22
Pourriez-vous expliquer plus en details le fichier ZCML s'il vous plaît.

Mais ou peut on bien mettre tout cela??? ;-)

Posté par lezardo le 28/07/2007 16:45
Très clair tes explications, un grand merci pour ce tuto!

Par contre, j'ai juste une petite question, on construit tout cela dans la ZMI? Ou dans un éditeur de texte puis sauvé dans un répertoire spécifique? Quelle est alors la procédure pour que zope le reconnaisse?

D'avance un grand merci pour la réponse, je débute dans zope et c'est pas toujours facile facile... :-)

Simon
Aidez l'AfPy

Rechercher
Dernières news AFPY
Les 6 dernières news
PyCon FR - 17-18 mai - Paris
07/05/2008 07:05
AFPyro d'Avril
24/04/2008 00:00