Rencontres Django
WE du 24-25 avril 2010, #djangocong à Marseille
Premier jour
- Django 1.2: un point de nouveautés par Nicolas Ferrari (excellency/alwaysdata)
Nouvelle gestion des bases de données multiples
Nouvelle façon de faire des requêtes directes (ouverture de cursor -> passage dans l'ORM)
Amélioration du système de message
Extension des validator au niveau du model pour étendre la validation hors formulaire
Simplification de la syndication rss, r12338 (changeset)
Meilleure protection CSRF (Cross Site Request Forgery), protection par decorateur (comme l'identification)
Extension du IF dans les templates (enfin un IN pour les listes !!!)
Mise en cache des templates (limitation les I/O)
Amélioration au niveau de l'internationalisation (voir conférence dimance après-midi de Benoît Bryon)
Ouverture du backend mail SMTP -> SMTP, memoire, console, etc.
jQuery pour l'admin
Mise en place de la base pour gérer des permissions niveaux objets (cf djangoadvent pour un exemple d'implémentation)
L'autocomplétion en bash, super utile !
- Django pour les fainéants par Mathieu Agopian
"Les paresseux pensent beaucoup pour faire moins, les fainéants, c'est les cafards" (rangzen)
Vive le fainéantisme !
L'utilisation des éditeurs avancés avec les raccourcis est un vrai truc de fainéant.
Automatisation le processus de démarrage de projet en créant son "boiler code".
Utilisation possible d'un gestionnaire de version, il suffira de cloner le dépôt pour démarrer un nouveau projet (exemple : configuration par hébergeur).
Utiliser au maximum les décorateurs
Les vues génériques : gestion des vue de base (liste ...)
Utiliser au maximum les apps fournies (django.contrib)
Tags sémantique : header, nav, aside, footer, section, article, etc. en remplacement des div id=header, etc.
Le HTML 5 est avant tout un lnagage qui décrit le fond, les nouveaux tags sont là pour ça (utilisation de CSS générique)
Nouveaux élements des formulaires :
- Les nouveaux types d'input
- Validation automatique
- Autofocus
- Contenu qui peut disparaître cf. le tag placeholder (comme fait en javascript actuellement)
- Boîte à outils Django par Eric Veiras Galisson
- Gestion des environnements
Utilisation du fichier local_settings.py (ne pas le versionner !).
Utiliser le nom de l'host settings_serveur1.py, machine3_settings.py, etc.
- Applications Django utiles
Django-debug-toolbar ( très semblable à la symfony debug toolbar) mais remplace la contenu de la page.
Django-command-extensions ajoute des fonctionnallités à la ligne de commande (autocomplétion ?). Terminal intégré à la page web.
- Environnement Python virtuels
easy_install virtualenv
Permet d'avoir plusieurs versions d'environnement Python en même temps
Très très utile quand on est simple utilisateur d'un ordinateur.
- Installation de bilbiothèques
pip installs package (remplacement de easy_install)
Très intéressant pip, permet l'utilisation de dépôt svn, git, mercurial ?
pip freeze > requirements.txt (Liste la liste des version installés)
pip -r requirments.txt (Installe la liste des applications dans les versions données)
fabric, gestionnaire de déploiement
distribute, leadé par Tarek le messie français
- Cours de GéoDjango par Samuel Adam
Intro sur les projections, représentations de la planète
Model de dimension spatial
Manipulation de donnée GIS (librairie GDAL, lien OpenMAP ?)
EN GIS, on travaille souvent sur des données préexistantes
OpenLayer
Buildout, préparation d'environnement avec librairie externe non python (cmmi = ./Configure make make install :) )
Création de l'association en cours.
Orientation perso ou pro ?
Traduction. Beaucoup de chose faites par le Canada.
Pause du midi
- Une authentification pour tous les contrôler par Olivier Meunier
Limite du stockage du mot de passe
Plusieurs solutions pour étendre les infos mais en les laissant dans Django
Refaire tout n'est pas une solution, on perd 90% des apps
Alternative utilisée : surcharge du User après chargement
- Tester son projet Django par Bruno Renié
Déjà des tests par défaut python manage.py test
Test fait sur une base créée pour les tests
unittest / doctest : priviligé les unittest
Pythn fournit un client de test. En plus du HTML, des cookies, etc. on récupère les templates utilisés et
Possibilité de loader des fixtures
reverse()
Commit = code + test + doc
TEST_DATABASE_NAME = ":memory:" (sqlite)
Au minimum, tester les vues et les corrections de bug
- Les dessous d'AlwaysData (excellency) par Cyril Baŷ
Passage d'un apache / vhost à un proxy maison en Python qui gère un apache par client
Pas de gestion de fichier de configuration, interraction avec la base de donnée de l'entreprise
Possibilité à terme de chosir son démon http
Traduction de la partie admin par les utilisateurs
Utiliser easy_install/pip (virtual env en option) pour ne pas dépendre de l'installation et des mises à jour des libs par l'hébergeur
- Django pour les développeurs Symfony par Nicolas Perriault
Cf. les slides pour le tableau exact des différences et des nombreuses similitudes
Licence : Beerware et WTFPL (What The Fuck Public License)
slides : jehaisleprintemps.net/blog/fr/2010/04/25/beeroverip-djangocong/
Deuxième jour
- Django et XMPP par Jean-Michel Armand
Ne pas utiliser XMPP pour comm inter-process
Librairies :
- Twisted words
- Wokkel
- jabber.py
- Xmmpppy
- PyXMPP *(Peu de doc)
- SleekXMPP *
- XMPPony
Utilisations :
Envoyer status à travers son client de messagerie instantanée.
Dialogue entre django et xmpp.
Créer un chat "irc", décentralisé.
Utilisation de Django comme client XMPP : les vues DPP
- Gunicorn, Django et WSGI par Benoît Chesneau
twod.wsgi, intégration d'app Django en wsgi.
Pour l'OpenID, préférer les middlewares WSGI
Gunicorn, serveur WSGI multi threadé
- Des lapins et des poneys, quand AMQP rencontre Django par Olivier Meunier
Envoi de commande asynchrone
RabbitMQ (broker en erlang, pas de conf)
amqplib (lib python pour les clients)
Toujours un sens dans une queue donc il faut une queue par sens si on veut un retour
Implémenté pour la gestion des domaines
- Hommage pour en mémoire du PHP. Une minute de silence.
- Django et GNOME, Bureau / Cloud. Beaucoup de système cloud sont proprio. Faire des applis web libre. Snowy service de synchro pour TomBoy http://live.gnome.org/Snowy
- Rechercher par Sébastien Fievet, http://haystacksearch.org, déportation de la recherche sur un système spécialisé (lucene, etc.)
- Cloud, guerre économique. Les données d'espionnage industriel
- Django et le e-commerce / Une admin en lecture - Sébastien Fievet
Pause du midi
- Introduction à Pinax par David Paccoud
Template d'application.
- tin cong, Django speaks Marseillais ! par Stéphane Raimbault
ugettext_lazy
ungettext pour les formes plurielles
javascript catalog
pas de contexte en django, bug dans l'implémentation de gettext
poedit
Transifex (turbogears maintenant en django)
damned-lies récrit en django (très orienté gnome)
- Internationalisation de contenu avec Django par Benoît Bryon
django pas satisfaisant à 100%
possible de s'en passer si pas de multilingue, différentes versions en fonction des langues, séparation des applications
prévoir tout de suite en multilingue, la transition mono vers multi est couteuse
Conseil : multilangual, transmetta ou à la main
- CouchDB et Django, l'utilisation de CouchDBKit par Benoît Chesneau
CouchDB : Orientée document, interprète le json, Map/Reduce, interface d'admin en ligne
CouchDBKit : very nice ! Chaque action est sauvée. Charge IO mais pas de perte en cas de crash. Inno fenêtre de quelques secondes et json proprio.
- Les limites de Django par David Larlet
Pas de doc enter noob et expert
Vues pas si génériques que ça
Patterns de vues (exemple des vues json)
Sortir les contribs en app réutilisable
Retours blogs
Photos