@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/