Plongez dans mon univers
La semaine passée, j’ai refactorisé l’application de façon à ce que la création des repositories et la gestion des droits se fassent par django [en]. En fait, je me suis largement basé sur django-projectmgr [en] pour le modèle, en modifiant de façon marginale ça et là.
Actuellement la lecture se fait donc selon les droits d’accès et la création d’un nouveau repository est disponible depuis l’admin.
Dans l’ensemble, le refactoring a été simple. La seule difficulté que j’ai rencontrée se situe au niveau de la requête affichant la liste, car je voulais récupérer tous les repositories visibles par un utilisateur en une requête, contrairement à django-projectmgr. Or l’ORM de django ne m’a pas facilité la tâche. J’ai dû utiliser la méthode extra [en], pour un résultat pas très lisible. Pour faire une comparaison avec le monde PHP, je dirais que c’est mieux que Propel [en], mais moins bien que Doctrine [en].
Cette semaine, je compte m’attaquer à permettre le clonage depuis django_hg. J’ai l’impression que cela va être nettement moins simple… car jusqu’à présent, je n’ai pas trouvé grand chose. Le serveur intégré permet le clonage, mais je n’arrive pas trop à savoir où cela se passe. J’ai trouvé un fichier streamclone.py qui semble-t-il permet l’envoi du contenu d’un repository en streaming, mais pour l’instant, je ne suis pas parvenu à en tirer grand chose. La documentation de Mercurial sur HTTP est assez succinte [en].
Si vous voulez récupérer le code, c’est ici [en].