@magopian
mathieu.agopian@gmail.com
Employé chez Novapost depuis un an
Développeur passionné, curieux
Fait néant : aime ne rien faire.
Art de feindre : feindre ... pour échapper à une tâche.
Exemple : "pour les contributeurs : make && make test"
.PHONY: develop test clean update SETTINGS = myproject.settings TEST_SETTINGS = myproject.test_settings develop: virtualenv . bin/python setup.py develop test: bin/django-admin.py test --settings=$(TEST_SETTINGS) clean: bin/django-admin.py clean_pyc --settings=$(SETTINGS) update: bin/pip install -U -r requirements.pip
Un exemple plus complet :
django-admin.py startproject --template=TEMPLATE --extension=py,rst,template --name Makefile PROJECT_NAME
TEMPLATE est un chemin ou une URL
vers un dossier ou un fichier compressé.
Plus d'information dans les release notes.
Trop fainéant pour faire ton propre template ?
Moi aussi (merci @brutasse)
Encore plus fort, le fab-bundle (merci @brutasse)
(et celui qui l'essaie et me fait un retour dessus ;)
En vrac
Trouvez votre bonheur sur django packages
Voir l'exemple de prepopulated_field.js
<script src="{% static "admin/js/jquery.js" %}"></script> <script src="{% static "admin/js/jquery.init.js" %}"></script> <script src="{% static "admin/js/urlify.js" %}"></script> <script src="{% static "admin/js/prepopulate.js" %}"></script> <script> (function($) { #### CUSTOM CODE #### })(django.jQuery); </script>
Du bonheur en barre : pep8 + pyflakes (+ mccabe)
$ flake8 .
Pour les vrais (les utilisateurs de VIM)
syntastic (du mégabonheur en mégabarres)
Parce que personne n'est parfait (même pas moi !)
Il est fourni directement en exemple
dans chaque dépôt git
.git/hooks/pre-commit.sample
À renommer ou symlink vers
.git/hooks/pre-commit
Il empêche le commit si :
Pour forcer le commit :
$ git commit -n
Fini les oublis de debug dans le code commité
# make sure there's no TODO, debugging... left errors=0 for bad in 'import pdb' 'import ipdb' 'TODO' 'print' 'assert False'; do echo ">> checking for '$bad'" res=$(git diff-index --name-only --cached $against -S"$bad" --) if test -n "$res"; then # if not empty, found some guilty files echo "ERROR, found '$bad' in files commited:" echo $res errors=$(($errors + 1)) fi done exit $errors # if errors, return an error: commit aborted
Pour tout faire en Python (parce que c'est bon) :
https://gist.github.com/1376856
Inconvénient : teste tous les fichiers du dépôt, pas seulement les modifications à commiter
https://gist.github.com/4086323
Compile la documentation Sphinx,
bloque le commit si il y a une erreur
Automatiser tout ce qui peut l'être
BANDE DE FAUX FAINÉANTS !
Lancer des commandes lors du changements de fichiers :
Créer un fichier gorun_settings.py
DIRECTORIES = ( ('vecc', 'make test'), ('docs', 'make doc'), ) IGNORE_EXTENSIONS = ('swp',)
Profit
$ gorun.py gorun_settings
Lancer tous les daemons en une seule fois :
Créer un fichier Procfile
web: django-admin.py runserver --settings=$PROJ.settings 0.0.0.0:8000 compass: compass watch tests: ./gorun.py gorun_settings.py
Profit
$ foreman start
Et pour les allergiques à ruby : gaffer de Benoît Chesneau
Merci qui ? @brutasse bien sûr !
I N D I S P E N S A B L E S
https://gist.github.com/4086398
https://gist.github.com/4086449
a déployer et configurer soi-même
magique !
gratuit
automatique sur les projets github publics
donne le statut des branches et des PRs !
Ajouter un fichier .travis.yml
language: python python: - "2.6" - "2.7" install: - pip install -r test-requirements.txt --use-mirrors - python setup.py develop script: unit2 discover -v && flake8 circus notifications: email: tarek@mozilla.com irc: "irc.freenode.org#mozilla-circus" on_success: change
Créer son compte Travis
Activer travis sur le dépôt
Installer tox : pip install tox
Ajouter un fichier tox.ini
[tox] envlist = py26,py27,docs,flake8 [testenv] deps = -r{toxinidir}/test-requirements.txt commands = python setup.py develop unit2 discover -v [testenv:docs] commands = /usr/bin/make docs [testenv:flake8] commands = flake8 circus
http://mathieu.agopian.info/presentations/2012_djangocon_toulouse/