[Zope3-french-user] Re: Premier problème pour zblog : comment gérer les "Category"

Thierry Florac thierry.florac at onf.fr
Ven 29 Sep 10:14:42 CEST 2006


Le vendredi 29 septembre 2006 à 01:13 +0200, KLEIN Stéphane a écrit :

> 2006/9/28, KLEIN Stéphane <klein.stephane at gmail.com>:
> > Bonjour,
> >
> > pour le moment, je base mon code sur http://codespeak.net/svn/z3/zblog/trunk/
> >
> > Je souhaite ajouter la possibilité de classer les billets dans des catégories.
> >
> > Un billet peut être dans une ou plusieurs catégories.
> >
> > Pensez vous qu'il faut gérer ça avec Catalog ? de plus, créer un objet
> > Category ?
> 
> Après réflexion, dans IBlog, je pense ajouter un schema "category" du
> type IDict.
> 
> Dans IBlogEntry je vais ajouter un schema ou une annotation "category"
> du type IList. Celle-ci contiendra une ou plusieurs clé conrespondante
> au champ "category" de IBlog.
> 
> Pour le moment je ne comprends pas trop quand utiliser un schema ou
> une annotation.


Je suis parti du principe suivant concernant la différentiation que
j'effectue dans mes développements :
 - j'utilise les propriétés internes pour la gestion des propriétés
"propres" des composants
 - j'utilise les annotations pour stocker les informations fournies par
des "adapters" ; ceci permet d'apporter des compléments d'information à
un contenu sans modifier la structure interne de celui-ci
 - pour générer tous mes formulaires (via "formlib" qui est un outil
super simple et super puissant de mon point de vue), j'utilise des
schémas, que ceux-ci correspondent à l'interface d'un composant ou d'un
adapter.

Dans le cas qui nous préoccupe, j'aurais fait ainsi :
 - création d'une interface IBlogEntry, correspondant aux propriétés
"internes" du billet, hors catégorie (titre, en-tête, corps...)
 - création d'une interface ICategory, avec une propriété "category" de
type "Text", correspondant aux propriétés d'une catégorie
 - création d'une interface ICategoryList, avec une propriété
"categories" de type List, contenant des objets implémentant "ICategory"
 - création d'un adapter de IBlogEntry vers ICategoryList, stockant les
catégories sous la forme d'annotations.
 - création d'un catalogue avec un index de type "SetIndex" (dans
zc.catalog) qui va indexer la propriété "categories" des objets
implémentant l'interface ICategoryList et permettra donc de retrouver
les billets d'une catégorie donnée.
De la même façon, les commentaires apportés à un billet peuvent être
gérés via une autre interface et un autre adapter...
En fait, tout ce qui fait partie d'un "comportement" générique
potentiellement ré-applicable à d'autres composants est "extrait" dans
une interface à part et "adapté" aux différents composants qui en ont
besoin ; ceci s'applique par exemple à la gestion de la publication dans
un workflow, aux commentaires, à la gestion de pièces jointes...
Avec ce principe, le jour où l'on a un nouveau type de contenu auquel on
veut affecter des catégories, il suffit de déclarer un nouvel adapter
dans le ZCML et le tour est joué...

Dans tous les cas, je ne prétend pas que cette méthode soit
nécessairement la meilleure ; mais c'est celle que j'utilise dans mes
propres développements et je n'ai pas encore été confronté à un
quelconque blocage...
A+

  Thierry Florac
-- 
  Chef de projet intranet/internet
  Office National des Forêts - Département Informatique
  2, Avenue de Saint-Mandé
  75570 PARIS Cedex 12
  Mél : thierry.florac at onf.fr
  Tél. : +33 01.40.19.59.64
  Fax. : +33 01.40.19.59.85
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://lists.afpy.org/pipermail/zope3-french-user/attachments/20060929/d644e586/attachment.htm>


Plus d'informations sur la liste de diffusion zope3-french-user