Django-minipub: un 'model mixin' pour facilement controller la publication d'objets

Tag:Django

Django-minipub est un 'model mixin' pour controller la publication d'objets. J'ai écris cet app en 2013/2014, et utilisé sur plusieurs projets... Cependant, je n'ai jamais eu le temps d'en parler! Cet article corrige cet oubli.

Expliquons minipub par un exemple: votre projet Django a une appli 'news', avec un model qui s'appelle 'Article'. Dans l'interface admin, minipub ajoutera ce fieldset:

NB: vous remarquerez certainement que minipub est en Anglais. Une traduction en Français est à l'étude ;-)

Tous les Articles auront alors 3 champs:

  • status: draft ou published.
  • start: date de début de publication.
  • end: date de fin de publication; champ optionel.

Les articles seront visibles dans la partie publique de votre site seulement si leur statut est publishedet si la date d'aujourd'hui est entre les dates de début et de fin de publication.

De plus, nous avons un fieldset pour suivre les dates de création et de modification de l'Article:

Et c'est tout... Minipub, c'est quelques champs sur un Mixin pour vos Models, et du code - models, views, admin et sitemaps - pour en tirer le maximum.

Et ça peut servir à quoi?

Voici quelques examples de sites web utilisant Minipub:

Alternatives

Il existe plusieurs autres projets qui proposent des approches différentes, en général avec une gestion plus riche (et plus complexe) de la publication. Une alternative populaire est django-reversion.

Conclusion

Minipub est une application simple, mais qui fonctionne bien sur plusieurs sites web en production. Je voulais trouver un bon compromis entre une application trop basique pour être utile, ou à l'inverse trop complexe pour être comprise par ses utilisateurs. J'éspère y être arrivé.

Liens utiles

Le project Minipub sur Github

La documentation sur ReadTheDocs