Un Electron Libre...

Aller au contenu | Aller au menu | Aller à la recherche

jeudi 27 mars 2008

En vrac (très teinté django quand même)

  • Le changset 7370 permet de générer une doc au format HTML notamment via Sphinx et le rendu est assez sympatique. C'est assez simple à faire :
cd django/django-svn/docs
make html

Le résultat est dans un sous répertoire _build et la jolie table des matières est disponible /_build/html/index.html

Pour le reste, c'est dans mon flux del.icio.us ;-)

Edit du 31 : Le programme de Pycon FR est disponible.

jeudi 20 mars 2008

En Vrac

lundi 18 février 2008

MvMo 0.4 "Job wanted"

Ma recherche d'emploi aura au moins eu le mérite de faire avancer MvMo un peu plus vite que prévu ;-)

Au programme de la 0.4 :

  • Support du microformat hresume,
  • Ajout d'un champ "rôle" dans le modèle "Association"
  • Remaniement des modèles "Userskill", "Skill" et "Domainskill" pour que le domaine soit géré au niveau de "Skill" et non plus au niveau de "Userskill".
  • Les templates propres à MvMo sont dans mvmo/templates
  • Plein de petites corrections & améliorations
  • Sans oublier l'instance de démo MvMo

Le CHANGELOG complet est disponible.

Pour les utilisateurs (j'en connais au moins un), attention à bien lire le contenu de MIGRATIONS.txt et README.txt.

mardi 12 février 2008

MvMo - Instance de démo en attendant la 0.4

La version 0.4, qui apporte son lot de nouveautés dont les microformats (hresume), ne devrait pas tarder à pointer le bout de son nez si j'arrive à tordre le nez à une petite jointure qui fait de la résistance...

Bref, en attendant cet événement, une instance de démo demandée depuis la sortie de la 0.1 a été mis en place (enfin !) :

Je n'ai pas encore mis en place la tâche cron qui réinitialise les contenus mais cela devrait être fait bientôt...

Au passage, il m'a fallu passer le serveur d'une version 0.96 à une version svn. Cela s'est fait sans trop de soucis, par contre, il me faudra faire quelques modifis pour Steinmetz.fr, il y a quelques warnings lié à la dépréciation de certaines syntaxes.

Bien entendu, je suis ouvert à toutes vos remarques / suggestions !

Edit du 13/02 : La jointure a été vaincue - l'instance de démo a été mis à jour, cela devrait être la 0.4 à quelques nettoyages près...

vendredi 18 janvier 2008

Lecture : The Definitive Guide to Django: Web Development Done Right

Je viens de terminer la lecture du livre "The Definitive Guide to Django: Web Development Done Right",écrit par les développeurs principaux du framework python Django, à savoir Jacob Kaplan-Moss et Adrian Holovaty.

Le livre est décomposé en trois grandes parties :

  • Partie 1 : Présentation de l'outil
  • Partie 2 : Dans les entrailles de Django : présentation des modules et "sous-frameworks"
  • Partie 3 : Annexes avec des témoignages et de la documentation

On peut dire qu'à l'issue de la partie 1, vous êtes en mesure de jouer avec Django pour construire une application de démo, simple et sans prétention. A l'issue de la partie 2, vous l'avez bien enrichit et même déployer en production. Si vous avez réussi à intégrer/mémoriser la partie 3, vous êtes un expert Django ;-)

Ce que j'ai bien aimé :

  • Le livre se veut plus un guide qu'une documentation : le livre ne va pas présenter dans le détail tous les aspects de Django. Il va en présenter suffisamment pour s'en faire une idée, voir l'intérêt de tel ou tel module mais pas détailler l'option X du module Y. La documentation de référence reste celle en ligne et du coup, ils sont à voir comme étant complémentaires et non comme une version papier de la documentation officielle.
  • De nombreuses "bonnes pratiques" tant au niveau de Django que du développement web en général sont données au fur et à mesure du livre. J'ai plié un gros nombre de pages pour me rappeler d'intégrer plein de petits trucs dans mes projets actuels.
  • Si on connait rien en python, les auteurs fournissent suffisamment d'information pour comprendre la logique de l'ensemble. Globalement je trouve le livre très pédagogique.
  • J'ai appris plein de choses que je n'avais pas vu en parcourant la documentation officielle.

Ce que j'ai moins aimé :

  • La partie déploiement est un peu légère à mon goût, je m'attendais à un truc un peu plus solide - pour le coup, c'est pas top évident de déployer une appli django la première fois - surtout quand on vient des applis PHP qui sont "upload & play".

Même si certains choses du livre ont un peu bougé, je pense que ça vaut le coup de l'acheter si on veut se familiariser avec Django. Le livre est également lisible en ligne sur le site djangobook.com. Il paraitrait même que des gens ont proposé de le traduire en français :-)

lundi 17 décembre 2007

De la lecture en perspective...

Lecture...

Voir la photo

De quoi envisager des vacances loin de tout ordinateur et connexion internet :-)

mardi 11 décembre 2007

Djangoseries du moment

Y a eu pas mal de choses d'intéressant ces derniers temps sur Django, c'était un "morceau choisi". Tout le reste est sur mon tag "django" sur del.icio.us...

vendredi 30 novembre 2007

MvMo 0.3 - "I hate microbs"

Nouvelle version de MvMo, mon application de gestion de cv multi-utilisateurs basée sur Django.

Au programme des réjouissances :

  • Le projet est hébergé dans mon chaudron et non plus sur Google Code (trop lent, ergonomie à discuter, je préfère mercurial à subversion, etc).
  • Internationalisation de l'application (en/fr pour le moment)
  • Passage en unicode (requiert de passer sur la version de développement de Django)
  • Correction des bugs connus en 0.2

Pour ceux qui ne veulent pas sortir d'une version stable, dans models.py, il suffit de remplacer tous les :

__unicode__(self)

par :

__str__(self)

Au programme de la 0.4 :

  • Ajout des microformats hCard et hResume
  • Réorganisation des répertoires pour simplifier l'installation de l'application (en se basant sur tous les bons conseils de James Bennett et Malcolm Tredinnick pendant le mois de novembre...)

Django : activer l'autocomplétion dans votre console

Utilisant la version de développement (svn) de Django, j'ai farfouillé dans le contenu du répertoire extras de django et on y trouve un symathique fichier django_bash_completion.

Il vous suffit de placer ce fichier dans /etc/bash_completion.d/ (ou de faire un lien symbolique, ce qui peut être pratique si le fichier est mis à jour et si vous suivez régulièrement la version de développement).

Pour profiter de cette complétion suivant votre distribution GNU/Linux et où l'autocomplétion est définie :

source /etc/profile
 
et/ou :
 
source ~/.bashrc

Ensuite, à la racine de votre projet django, faites :

python manage.py [Tab] [Tab]

et toutes les options possibles vont apparaître :

$ python manage.py
adminindex        loaddata          sqlclear          startproject
createcachetable  reset             sqlcustom         syncdb
dbshell           runfcgi           sqlflush          test
diffsettings      runserver         sqlindexes        validate
dumpdata          shell             sqlreset
flush             sql               sqlsequencereset
inspectdb         sqlall            startapp

Toujours ça de pris :-)

jeudi 15 novembre 2007

Django : internationaliser vos modèles dans vos applications

La documentation sur l'internationalisation d'une application Django m'ayant laissé perplexe tant en anglais qu'en français, voici un petit résumé de ce qu'il faut faire.

Dans settings.py, il vous faut :

  • Avoir un language code correctement configuré
  • Que USE_I18N soit bien activé - c'est le cas par défaut
  • Ajouter 'django.middleware.locale.LocaleMiddleware', à la liste de vos middleware. Attention l'ordre compte - cf documentation

Exemple :

[...]
 
LANGUAGE_CODE = 'fr'
 
USE_I18N = True
 
[...]
 
MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.middleware.doc.XViewMiddleware',
)
 
[...]

Dans app/models.py :

  • Importer gettext_lazy fourni par django. gettext_lazy() s'utlise pour traduire les champs des modèles
  • Pour éviter d'écrire gettext_lazy('Single'), on peut utiliser le système d'alias pour n'écrire que : _('Single') .
  • Si vous êtes en unicode, c'est ugettext_lazy() et non gettext_lazy() bien sûr,

Exemple :

# -*- coding: utf-8 -*-
from django.db import models
from django.contrib.auth.models import User
from django.utils.translation import ugettext_lazy as _
 
"""
Profile
 
This object is used to provide some common information regarding the profile of a user.
"""
 
class Profile(models.Model):
    CIVILITY_CHOICES = (
         ('single', _('Single')),
         ('taken', _('Taken')),
    )
    who = models.ForeignKey(User, unique=True, verbose_name=_('Person'),)
    photo = models.ImageField(height_field="80", width_field="80", upload_to="photos", blank=True)
    street = models.CharField(_('Address 1'), maxlength=100)
    street_bis = models.CharField(_('Address 2'), maxlength=100, blank=True)
    zipcode = models.IntegerField(_('Zip code'), maxlength=5)
    city = models.CharField(_('City'), maxlength=100)
    phone = models.CharField(_('Phone'), maxlength=20)
    mobile = models.CharField(_('Mobile'), maxlength=20, blank=True)
    civility = models.CharField(_('Status'), maxlength=20, choices=CIVILITY_CHOICES)
    birthdate = models.DateField(_('Birth date'))
    children = models.IntegerField(_('Children'), blank=True, null=True)

Dans le répertoire de votre application, créer un répertoire "locale" :

mkdir -p /chemin/de/votre/projet/django/app/locale

Ensuite il vous faut générer votre fichier de langue .po correspondant à votre langue (ici : fr):

/usr/lib/python2.5/site-packages/django/bin/make-messages -l fr

Saisissez alors la traduction dans app/locale/<langue>/LC_MESSAGES/django.po

Exemple :

#: models.py:14
msgid "Single"
msgstr "Célibataire"

Compiler ensuite votre fichier de langue :

/usr/lib/python2.5/site-packages/django/bin/compile-messages

Vous obtenez alors un fichier app/locale/<langue>/LC_MESSAGES/django.mo

Dans votre template :

  • ajouter {% load i18n %} en tête de template

Ex :

{% extends "base.html" %}
{% load markup %}
{% load i18n %}

Si vous utilisez le serveur de développement, il faut le redémarrer pour qu'il prenne en compte les fichiers de langue compilés (idem lors d'une mise à jour des fichiers de langue).

Et voilà, savourez le travail...

Merci à benoitc et anhj de #django-fr pour m'avoir aidé à trouver mon erreur (ie avoir créer dans le répertoire de mon application une structure conf/locale au lieu de locale. La première ne s'utilise que pour l'ensemble d'un projet django).

- page 2 de 6 -