Fantomas’side

Weblog open-source

Un CMS en Django ?

Depuis la sortie 1.0 de Django, nombre d'applications plus ou moins complètes ont vu le jour. Mais il manquait encore une application de type CMS qui soit vraiment complète et professionnelle.

Les fonctionnalités principales d'un CMS seraient de pouvoir créer facilement une arborescence, l'intégration des principaux DublinCore et surtout d'avoir un support pour l'internationalisation notamment au niveau des urls.

Après plusieurs recherches et tests des différentes applications destinées à ce but, un projet sort du lot. Son nom, Django-CMS, dont la page du projet se situe ici.

Django-CMS avec son interface en Javascript pour organiser les pages en Drag and drop et l'implémentation de toutes les fonctionnalités précèdemment citées font de lui un sérieux concurrent dans le monde des CMS en Django. Je décide donc de le tester et d'en faire ces quelques retours.

Points Positifs

Gestion la localisation des URL/IRI, en effet il est possible d'attribuer une IRI sur une page. Très pratique pour pouvoir gérer du contenu dans plusieurs langues.

Intégration avec TInyMCE basé sur le projet Django-TinyMCE ce qui vous permettra d'ajouter facilement un WYSIWYG à l'édition de vos pages.

Intégration avec Django-FileBrowser. FileBrowser est une application Django qui permet d'envoyer et d'administrer des fichiers depuis l'interface d'administration. Une application très pratique, surtout qu'elle fournit un binding pour l'envoi de fichier avec TinyMCE.

L'administration du CMS est classe et parfaitement bien intégrée dans le module d'administration de Django. La gestion de l'arborescence en Javascript est agréable et bien penser tout comme la gestion des pages.

Des tags pour faciliter l'intégration, l'application contient en effet une liste de TemplateTags permettant d'intégrer un breadcrumbs, ou les pages relatives à la navigation.

Personnalisations des pages, on peut choisir le template associé à la page et même y passer des Context Processors pour y injecter du contenu personnalisé. Par contre, après les premières joies, je me suis confronté à quelques problèmes.

Points Negatifs

Pas ou peu de docs. La seule documentation disponible se trouve sur le Wiki ou dans le README du paquet. On nous y explique comment installer le projet, mais peu d'explications sur les outils ou le fonctionnement.

Pas de possibilités de contribuer, j'ai chercher je n'ai pas trouvé, plutôt frustrant.

Pas de réactivités des développeurs, cela rejoint le point précèdent, même sur l'IRC du projet, on ne peut pas contacter les développeurs.

Certaines parties du code sont conçues avec les pieds. Je citerais juste le système de publication dans les différents formats comme le MarkDown ou le ReST, qui est interprété à chaque appel de la page. C'est triste.

Pas de localisation en français. Je voulais la fournir mais n'ayant pas la possibilité de contribuer, elle restera aux oubliettes je pense. Mais regardez à la fin de l'article pour la télécharger.

L'intégration avec d'autres applications, trop faible. De mon point de vue, il n'est pas facile d'intégrer Django-CMS directement avec d'autres applications. Ne serait-ce qu'au niveau de la navigation, les outils fournis perdent toutes leur pertinence.

Pas de notions de pages virtuelles, pourtant cela résoudrait le problème précèdent. Ces pages pourrais contenir directement l'insertion de modules ou faire une pseudo redirection vers une autre url du site.

Conclusions

Même si Django-CMS possède beaucoup de qualités, ses points négatifs m'empêchent de penser qu'il peut révolutionner les CMS en Django. Il peut être parfait pour créer un site dédié à l'édition de contenu, mais son architecture et son fonctionnement peuvent l'empêcher de pouvoir se déployer à grande échelle en se faisant intégré avec d'autres applications.

De plus la réactivités des développeurs est plutôt inquiétante, je n'ai en effet pas pu proposer ma traduction française à l'équipe. Mais une version 2 est dans les cartons.

Un projet à tester tout de même, pour vous faire votre idée et surtout à surveiller.