Kolekti > Architecture Kolekti

Architecture MVC

Principes généraux

Lorsqu'une requête http est traitée par le serveur, celui-ci détermine les modèles, contrôleurs et vues à l'aide du processus de routage.
Les contrôleurs, vues et modèles déterminés par le routage sont instanciés par kolekti. Une méthode du controlleur correspondant à la méthode de la requête http (GET, POST, PROPFIND...) est alors appelée.

Le contrôleur et la vue peut utiliser les services du modèle instancié à travers un formalisme de collection/ressource/propriétés.

Le contrôleur fait un appel explicite à la méthode format de la vue.

Routage des requêtes

Le rôle du routage est de déterminer quels controleur, modele et vue sont instanciés en fonction des parametres de la requete http:
  • Methode HTTP
  • Chemin
  • Parametre
  • En-tête HTTP
  • Variable du profil utilisateur

La configuration du routage est décrit par le fichier XML kolekti_routing.xml.

Contrôleurs

Les contrôleurs héritent de la classe controller/Controller.py, Chaque contrôleur implémente les méthodes ctrMETHOD ou METHOD correspond à la méthode http de la requete.
Les objets controleur ont les attributs suivants:
  • http : contexte de la requête http
  • model : modele instancié par le routage
  • view : vue instanciée par le routage

Les controleurs peuvent surcharger la méthode checkPrecondition qui est appelée systématiquement avant l'appel de la méthode de traitement ctrMETHOD.
Cette méthode permet d'implémenter des droits d'accès particuliers, et/ou de gérer le mécanisme IfMatch du protocole http de façon particulière.

Modèles

Les modèles implémentent l'accès aux ressources, collections et propriétés, ils dérivent de la classe model/Model.py et de la classe model/Properties.py

Définitions

id : identifiant d'une ressource ou d'une collection : partie de chemin de l'url suivant le nom du projet, ex :/modules/guide/fr/introduction.xht
ressource : element de stockage d'une information (fichier)
collection : regroupement de ressources et collections (dossier)
xml : instance d'Element lxml

Interface

Sur les ressources et collections

exists(id):boolean
delete(id):None
move(id,newid):None
copy(id,newid):None
isResource(id):boolean
isCollection(id):boolean

getproplist(id):xml
getpropval(id,propname,ns):xml
proppatch(id,propname,ns,data):None

lock(id):None
unlock(id,token):None

Sur les resources :

getResource(id):object
createResource(id):None
putResource(id,data):None

Sur les collections :

createCollection(id):None
getCollection(id):list

Vues

Interface :
format() : méthode appelée par le controleur
error() : méthode appelée par le moteur web pour la présentation des erreurs.

Also available in: HTML TXT