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 classecontroller/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.