You are not logged in Log in Join
You are here: Home » Members » ghuo » A complete introduction to Zope in French / Une complete introduction a Zope en Francais

Log in
Name

Password

 

A complete introduction to Zope in French / Une complete introduction a Zope en Francais


I. Présentation générale II. Les classes Zope III. Environnement de développement IV. Product & ZClass V. Le langage DTML

I. Présentation générale

  • Zope est une plateforme objet de développement de sites Web, développé en Python et open-source
  • Zope permet donc de créer des sites web traditionnels mais aussi des sites web dynamiques, des applications Intranet, en manipulant des objets Zope prédéfinis ou dérivés
Architecture de la plateforme Zope


Particularités

  • Zope possède sa propre base de données orientée objet (ZODB) pour stocker les objets Zope. Cela signifie, le site étant créé à l'aide de ces objets, qu'aucun fichier ne figure sur le disque dur du serveur; Si nous ne le souhaitons, tout fichier - HTML, image,... - est stocké dans sa base de données par défaut (var / data.fs)
  • Il intègre une gestion de la sécurité très performante. A partir des paramètres de la plateforme Zope, il est facile de spécifier quelles sont les protections que l'on veut apporter au site en général, mais aussi à chaque élément du site. Par exemple, restriction de l'accès FTP...
  • Il est particulièrement adapté pour faire de la maintenance de site :
  • il permet de détacher facilement l'information de sa présentation
  • via un navigateur web, il est facile d'apporter des modifications aux instances d'objets Zope représentant la (ou les) application(s) web
  • Il intègre une gestion des utilisateurs très performante :
  • Chaque utilisateur peut se voir attribuer un r�le lui donnant plus ou moins de pouvoir dans la maintenance des objects Zope
  • Pour chaque objet Zope Folder, nous avons la possibilité de spécifier un certain nombre d'utilisateurs pouvant intervenir dessus, avec des r�les différents
  • Un utilisateur qui a des droits sur un objet donné, peut intervenir sur tous les objets Folder descendants de celui-ci, et les autres objets qu'ils contiennent
  • Ainsi, la maintenance du site peut-�tre déléguée naturellement et facilement à plusieurs personnes
  • La notion de contexte : chaque objet possède un contexte qui lui est propre. Le contexte d'un objet Folder est composé de ses propriétés et des autres objets Zope qu'il contient. Un objet Zope hérite du contexte de son conteneur. L'objet Folder mgmt contenu dans l'objet Folder intranet a accès au contexte de son conteneur...



II. Les classes Zope

  • Les propriétés des classes Zope sont en fait représentées par une classe Zope particulière : la classe Property
  • Les classes Zope prédéfinies détiennent un certain nombre de propriétés et de méthodes. La documentation actuelle ne permet pas de les retrouver facilement ni de savoir comment les utiliser au mieux...
  • Toute classe Zope possède une méthode particulière manage_main permettant d'accéder à la gestion des instances de la classe (en fonction des droits d'accès bien entendu)



Les principales classes Zope

Folder Cette classe représente un répertoire, tel que l'on peut le trouver sur un disque dur. Cet objet peut donc contenir d'autres objets de toute sorte...
DTML Method & DTML Document Ces classes sont quelque peut similaire puisqu'elles ont la m�me structure. L'attribut __read__ de ces classes peut accepter du code HTML et DTML.

L'objet DTML Document possède une petite différence. Il peut �tre lié à des objets Property alors que l'objet DTML Method ne peut pas...

L'objet DTML Method est utilisé pour agir dynamiquement sur les objets Zope. Ainsi, manage_main est une méthode affichant le contexte des objets Zope. Dans un navigateur, pour afficher le contexte de l'objet mgmt, on tapera l'adresse "mgmt / manage_main"

Image Cette classe représente une image
File Cette classe représente un fichier de tout type
User Folder, User & Role La classe User Folder peut �tre associée à un répertoire. Il peut contenir une liste d'objets User, soit une liste d'utilisateurs

Un objet User est défini par un nom de login, un mot de passe et possède un ou plusieurs objet Role associés

Un objet Role possède une appellation et pour chaque objet Security, il peut avoir un certain nombre de permissions associées...

Version Un objet Version permet de créer une image de l'état de la plateforme Zope. On peut donc créer une version et faire évoluer l'image sans modifier la plateforme. Il est ensuite possible de prendre en compte la version gr�ce au gestionnaire de versions

L'intér�t d'une version est de permettre à plusieurs développeurs de travailler sur la m�me plateforme, de manière sécurisée

External Method Cette classe permet de faire référence à une fonction écrite en Python et résidant sur le disque dur du serveur hébergeant Zope. Ainsi, on peut l'utiliser directement depuis la plateforme Zope. La fonction doit résider dans un script python (fichier d'extension py), dans le dossier Extensions de Zope
ZSQL Method Cette classe permet d'écrire des requ�tes SQL et de récupérer le résultat sous Zope. Une instance de la classe doit �tre toujours associée à un objet de type DB Connection. Le résultat de l'éxécution d'une telle méthode est une liste ou chaque élément est une ligne de la table résultat
Mail Host Pour permettre à Zope d'envoyer des messages électroniques - lorsqu'il trouve une balise dans un script DTML par exemple - il faut lui spécifier les serveurs à utiliser. Cette classe représente un serveur smtp
ZCatalog & Z Search Interface Ces deux classes permettent d'effectuer des recherches dans les objets Zope

La première permet d'indexer certains objets (il est possible de spécifier le type des objets à indexer), ainsi que leur propriétés associées

La deuxième permet de générer automatiquement une page de saisie des paramètres de recherche, à partir d'objets de type ZCatalog et de leur configuration. Elle génère aussi une page de présentation des résultats de la recherche...

Z Gadfly Conection Permet de créer un objet connexion à une base de données relationnelle. La création de cet objet est nécessaire pour pouvoir utiliser la classe Z SQL Method

Classes Zope particulières

Property Certains objets peuvent �tre liés à une ou plusieurs instances de cette classe. Un objet Property peut �tre de tout type. Bien entendu, il est possible de supprimer celui-ci, de lui attribuer une valeur et de la modifier
Security Presque tous les objets ont un objet Security associé. Il permet, à partir d'une liste de permissions d'accès (représentées par un objet Zope particuliers), de sélectionner celles qui requièrent une autorisation et de sélectionner quels types d'utilisateurs ont la permission
Proxy Parfois, un utilisateur essaie, par l'intermédiaire d'un document ou une méthode DTML, d'accéder à une ressource pour laquelle il n'est pas autorisé d'accès. Pour les besoins de l'application, l'utilisateur doit pouvoir accéder tout de m�me à la ressource mais uniquement par le biais de ce document. Un objet Proxy permet d'attribuer la permission


III. Environnement de développement

  • L'environnement de développement est une application Intranet. Nous devons donc passé par un navigateur pour y accéder
  • L'accès à la plateforme se fait par identification (login et mot de passe). Seul le superuser et les personnes enregistrées ont le droit d'accès, avec néanmoins le r�le qui leur a été attribué.


Les Views ou les pages de gestion des objets

  • Dans l'environnement Zope, nous accédons à ces pages de gestion (ou méthodes) par l'intermédiaire de liens hypertextes situés le plus souvent en haut de la frame de droite. Elles n'apparaissent que si l'utilisateur a le droit d'y accéder...
  • Lorsque nous créons nos propres classes Zope (voir ZClass), il est possible de surdéfinir les méthodes de gestion proposées par Zope voire de créer nos propres pages de gestion
Contents Ce lien n'appara�t que pour les objets de type Folder. Il présente les objets qu'il contient et les opérations qu'il est possible d'effectuer (Rename, Cut, Copy, Delete, Export,...)
Edit Ce lien appara�t pour les objets de type DTML Method, DTML Document. Il permet d'editer le corps de la méthode et d'effectuer certaines opérations...
View Donne un aperçu de ce que le navigateur voit lorsqu'il se situe au niveau courant
Import / Export Permet d'importer ou d'exporter tout type d'objet Zope
Undo Contient un historique des dernières opérations effectuées et permet ainsi d'annuler une ou plusieurs transactions.

Il est possible ici, d'annuler une transaction ancienne sans annuler les transactions qui ont eu lieu après...

Find Permet de rechercher un objet donné sur la plateforme
Upload Permet de remplacer le corps d'un objet DTML Method ou DTML Document, par un fichier situé sur un disque dur. Ce lien existe aussi pour les objets Image et Fichier


Le Control Panel

  • Donne accès à des pages de gestion de la plateforme Zope
  • Depuis cette interface, il est possible de :
  • arr�ter le serveur ou de le redémarrer
  • accéder au système de gestion de la base de données Zope pour la paramétrer
  • accéder au système de gestion des versions pour prendre en compte une version ou l'annuler...
  • accéder au système de gestion des objets Product et donc aux classes Zope personnelles


IV. Product & ZClass

  • Tous les objets Product sont stockés dans le "Control_Panel", dans un dossier appelé "Products". Il n'est pas possible d'en rajouter ailleurs...

  • Un objet Product se présente sous la forme d'un répertoire pouvant contenir toute sorte d'objets Zope. Mais certains de ces objets sont indispensables car ils ont une fonction particulière...


Premier cas d'utilisation d'un objet Product :
duplication d'un objet existant

  • D'abord, cette classe peut �tre utilisée pour dupliquer un objet Zope existant et dans un état particuliers. Par exemple, l'objet Product peut contenir un objet Folder avec des propriétés particulières et contenant d'autres objets.
  • L'objet Product, en plus de ce dossier, contient deux méthodes Designer et Builder, permettant de saisir les caractéristiques du nouveau dossier et l'autre le dupliquant.


Deuxième cas d'utilisation : création d'une nouvelle classe Zope

  • L'autre cas d'utilisation consiste en la création d'une nouvelle classe... L'objet Product contient alors la nouvelle classe (BNClass), et le constructeur de la classe (BNClass_addForm, BNClass_add)...
  • La super-classe ZClass permet donc de créer une nouvelle classe Zope, fille d'au moins une classe Zope existante...
  • A partir du nouvel objet ZClass (la nouvelle classe), il est possible de spécifier ses attributs et ses méthodes...


Nouvelles Classes Zope rencontrés ici



Zope Factory Cette classe permet de donner accès aux fonctionnalités du produit (constructeur de la classe ou script de duplication) du produit, depuis les pages de gestion de Zope...
PropertySheet Cette classe permet d'associer un ensemble de propriétés à la nouvelle classe


V. Le langage de développement



  • Un langage de script, basé sur le langage python, a été créé pour l'écriture de pages dynamiques : le langage DTML
  • Pour obtenir plus de détails ou de l'aide sur ce langage, vous trouverez sur le site officiel www.zope.org des pages consacrées à ce langage. Vous trouverez aussi un document présenté au format PDF qui introduit ce langage mais la bible du parfait développeur Zope est sans aucun doute le Zope Quick Reference...



  • Les balises de contr�le

    • Chaque balise peut avoir une ou plusieurs options
    • Elles vont permettre de manipuler les objets Zope
    dtml-var Balise qui permet d'afficher comme du texte, le contenu de n'importe quelle variable ou objet Zope
    dtml-if...dtml-elif...dtml-else.../dtml-if Contr�le de test
    dtml-with.../dtml-with Permet de considérer le contexte de l'objet Zope spécifié dans la balise, et non l'objet courant
    dtml-call.../dtml-call Appel d'une fonction d'environement ou d'une méthode d'un objet, sans attente de retour ou d'erreur
    dtml-let.../dtml-let Permet de créer et d'initialiser des variables
    dtml-in...dtml-else.../dtml-in Permet le parcours de liste
    dtml-raise.../dtml-raise Permet de spécifier l'envoie d'un message particuliers lors d'une erreur
    dtml-try.../dtml-try Le script imbriqué dans cette balise générera une erreur si l'interprétation échoue
    dtml-comment.../dtml-comment Les lignes de script imbriquées dans cette balise ne seront pas interprétées, ce qui permet l'insertion de commentaire dans les scripts DTML
    dtml-tree.../dtml-tree Cette balise est très intéressante puisqu'elle permet de présenter joliment et surtout automatiquement, l'arborescence d'objets Zope, objets pouvant contenir d'autres objets ou non...
    dtml-sendmail.../dtml-sendmail Permet d'envoyer un mail
    dtml-sqlvar...dtml-sqltest...dtml-sqlgroup sqlvar permet d'afficher les parametres des Z SQL Methods en spécifiant leur type d'un point de vue sql.


    Les variables et fonctions d'environnement

    • Dans le langage DTML, nous avons accès à la plupart des variables et fonctions d'environnement accessibles sous Python
    • On trouve les variables et fonctions d'environnement traditionnelles comme les fonctions mathématiques, les variables REQUEST RESPONSE...