[F] views: fix 2 unicode errors
1. You can now use valid unicode strings in ValidationError exception.
Previously, if 'err' contains unicode, UnicodeDecodeError was raised by format_errors()
>>> templstr = '<li>%s</li>\n'
>>> e = ValidationError(None, {None: u'oué, une exception en unicode!'})
>>> templstr % e
'<li>None (None): ou\xc3\xa9, une exception en unicode!</li>\n'
>>> templstr = u'<li>%s</li>\n'
>>> templstr % e
u'<li>None (None): ou\xe9, une exception en unicode!</li>\n'
2. The message of an Exception can contains unicode. But it now properly managed by “informal” string representation.
We can easily fix the problem by using the Exception.message attribute that still contains the original message.
>>> a = AssertionError(u'séfdsdf')
>>> a.message
u's\xe9fdsdf'
>>> str(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 1: ordinal not in range(128)
>>> a = ValueError(u'fsdfsdéfsdfs')
>>> str(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 6: ordinal not in range(128)
>>> a
ValueError(u'fsdfsd\xe9fsdfs',)
>>> unicode(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 6: ordinal not in range(128)
>>> a.message
u'fsdfsd\xe9fsdfs'
Installation de cubicweb et de ses dpendances
-------------------------------------------
Tout le systme CubicWeb est prpar pour l'installation sur une machine
debian. L'installation manuelle est un peu pnible du fait des nombreuses
dpendances installer (twisted, postgres, autres paquets python...). Nous
supposerons donc ici que l'installation se fait sur une machine debian ayant
dans ses sources apt un entrept contenant les paquets pour CubicWeb.
Pour tout installer sur le systme ::
apt-get install cubicweb
On peut galement n'installer que les paquets cubicweb-server ou cubicweb-twisted pour
n'avoir que la partie serveur ou client web sur une machine.
Pour tout installer la documentation et les librairies/outils de dveloppement ::
apt-get install cubicweb-documentation cubicweb-dev
On pourra ensuite installer les paquets suivants :
* `pyro` si vous voulez que l'entrept soit accessible via Pyro ou si le client
et le serveur ne sont pas sur la mme machine (auquel cas il faut installer ce
paquet sur les machines clientes et serveur)
* `python-ldap` si vous voulez utiliser une source ldap sur le serveur
* `postgresql-8.1`, `postgresql-contrib-8.1` et `postgresql-plpython-8.1` la
machine devant hberger la base de donnes systme
Configuration de l'environnement
--------------------------------
Ajouter les lignes suivantes son `.bashrc` ou `.bash_profile` pour configurer
votre environnement de dveloppement ::
export CW_REGISTRY=~/etc/cubicweb.d/
export CW_CUBES=~/hg/
export CW_RUNTIME=/tmp/
Cela suppose que le composant cubicweb que vous dveloppez est dans un
sous-rpertoire de *~/hg/* et que vous avez cr le rpertoire *~/etc/cubicweb.d/*
pour que `cubicweb-ctl` y place vos instances de test.
Configuration Postgres
----------------------
* cration d'un super utilisateur pour la cration d'instance (**root**) ::
createuser --superuser --createdb -P pgadmin
Un mot de passe de connection pour cet utilisateur vous sera demand. Il
faudra utiliser ce login / mot de passe la cration d'instance via
`cubicweb-ctl`
* installation des extensions pour l'index plein texte ::
cat /usr/share/postgresql/8.1/contrib/tsearch2.sql | psql -U pgadmin template1
* installation du langage plpythonu par dfaut ::
createlang -U pgadmin plpythonu template1
Configuration Pyro
------------------
Si vous utilisez Pyro, il est ncessaire d'avoir un serveur de noms Pyro
tournant sur votre rseau (par dfaut celui-ci est repr par une requte
broadcast). Pour cela il faut soit :
* le lancer la main avant le dmarrage de cubicweb avec la commande `pyro-ns`
* le lancer la main avant le dmarrage de cubicweb sous forme d'un serveur avec
la commande `pyro-nsd start`
* diter le fichier */etc/default/pyro-nsd* pour que le serveur de nom pyro soit
lanc automatiquement au dmarrage de la machine