[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'
Schmas prdfinies dans la librairie
-------------------------------------
La librairie dfinit un certain nombre de schmas d'entits ncessaires
au systme ou bien couramment utilises dans les application `cubicweb`.
Vous pouvez bien entendu tendre ces schmas au besoin.
Schmas "systmes"
``````````````````
* `CWUser`, utilisateurs du systme
* `CWGroup`, groupes d'utilisateurs
* `CWEType`, types d'entit
* `CWRType`, types de relation
* `State`, tat d'un workflow
* `Transition`, transition d'un workflow
* `TrInfo`, enregistrement d'un passage de transition pour une entit
* `EmailAddress`, adresse lectronique, utilis par le systme de notification
pour les utilisateurs et par d'autres schma optionnels
* `CWProperty`, utilis pour configurer l'application
* `CWPermission`, utilis pour configurer la scurit de l'application
* `Card`, fiche documentaire gnrique
* `Bookmark`, un type d'entit utilis pour permetter un utilisateur de
personnaliser ses liens de navigation dans l'application.
Composants de la librairie
``````````````````
Une application est construite sur la base de plusieurs composants de base.
Parmi les composants de base disponible, on trouve par exemple :
* `ecomment`, fournit le type d'entit `Comment` permettant de commenter les
entits du site
* `emailinglist`, fournit le type d'entit `Mailinglist` regroupant des
informations sur une liste de discussion
* `efile`, fournit les types d'entits `File` et `Image` utiliss pour
reprsenter des fichiers (texte ou binaire) avec quelques donnes
supplmentaires comme le type MIME ou l'encodage le cas chant ().
* `elink`, fournit le type d'entit lien internet (`Link`)
* `eblog`, fournit le type d'entit weblog (`Blog`)
* `eperson`, fournit le type d'entit personne physique (`Person`)
* `eaddressbook`, fournit les types d'entits utiliss pour reprsenter des n
de tlphone (`PhoneNumber`) et des adresses postales (`PostalAddress`)
* `eclasstags`, systme de classfication base d'tiquettes (`Tag`)
* `eclassfolders`, systme de classification base de dossiers hirarchiques
destins crer des rubriques de navigation (`Folder`)
* `eemail`, gestion d'archives de courriers lectroniques (`Email`, `Emailpart`,
`Emailthread`)
* `ebasket`, gestion de paniers (`Basket`) permettant de regrouper des entits
Pour dclarer l'utilisation d'un composant, une fois celui-ci install, ajoutez
le nom du composant la variable `__use__` du fichier `__pkginfo__.py` de
votre propre composant.