Solution pour modifier un module existant ?
#3
Quelques petites précisions au post de mon collègue.

Nous sommes évidemment ravis à l'idée de recevoir des contributions externes ; n'hésitez donc pas à venir en parler comme vous l'avez fait.

Comme dit plus haut, la façon la plus propre de faire vos modifications spécifiques est de le faire depuis votre propre app que vous aurez créée. Pour cela vous disposez d'un certain nombre d'outils :
  • La modification de modèle, lorsqu'elle ne peut pas se faire via les CustomFields, peut se faire via contribute_to_model() comme expliqué ici.
  • Les formulaires Creme peuvent être hookés (voir les méthodes add_post_clean_callback(), add_post_init_callback() et add_post_save_callback()).
  • Django propose un système de signaux qui sont appelés quand une instance de modèle est construite/sauvée/supprimée par exemple.
  • Django permet de surcharger les templates existants.
  • Vous pouvez créer vos propres types de bloc et les placer sur la detailview des modèles existants.
  • Python permet lui-même de faire des choses intéressantes comme ajouter des méthodes à des classes existantes, voire faire du monkey patching (même si c'est à éviter si possible).
  • ...

À côté de ça, je ne peux que vous encourager à écrire des tests unitaires pour votre code (inspirez vous des tests présents dans les apps Creme) ; ils vous seront particulièrement utiles lorsque vous mettrez à jour la version de Creme sur laquelle vous vous basez.

Et si vous êtes seul à travailler sur votre code, je vous encourage aussi à utilisez une queue de patch mercurial (extension 'mq') ; si vous êtes plusieurs leur utilisation est plus délicate et les avis sont partagés dans l'équipe Smile. Cela vous permettra de facilement garder votre code séparé du code Creme trunk (quand bien même les méthodes indiquées plus haut n'auraient pas suffit et que nous ayez modifié le code trunk directement), et ce même lorsque vous mettrez à jour la version de Creme.

À bientôt j'espère.
  Répondre


Messages dans ce sujet

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)