goa/doc/devmanual_fr/chap_fondements_erudi.txt
author Julien Jehannet <Julien Jehannet <julien.jehannet@logilab.fr>>
Tue, 02 Mar 2010 21:48:36 +0100
branchstable
changeset 4783 6dc34d4cf892
parent 0 b97547f5f1fa
permissions -rw-r--r--
[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'

Fondements CubicWeb
================

Concepts et vocabulaire
-----------------------

*schma*
  le schma dfinit le modle de donnes d'une application sous forme d'entits
  et de relations, grce au package `yams`_. C'est l'lment central d'une
  application. Il est initialement dfini sur le systme de fichiers et est
  stock dans la base de donnes lors de la cration d'une instance. CubicWeb 
  fournit un certain nombres de types d'entits inclus systmatiquement 
  car ncessaire au noyau CubicWeb et une librairie de composants devant tre
  inclus explicitement le cas chant.

*source*
  une source de donnes est un conteneur de donnes quelquonque (SGBD, annuaire
  LDAP...) intgr par l'entrept CubicWeb. Un entrept possde au moins une source
  dite "system" contenant le schma de l'application, l'index plein-texte et
  d'autres informations vitales au systme.

*composant*
  un composant est un modle regroupant un ou plusieurs types de donnes et/ou
  des vues afin de fournir une fonctionalit prcise, ou une application CubicWeb
  complte utilisant ventuellement d'autres composants. Les diffrents
  composants disponibles sur une machine sont installs dans
  `/usr/share/cubicweb/templates`

*result set*
  objet encaspulant les rsultats d'une requte RQL et des informations sur
  cette requte.

.. _`Python Remote Object`: http://pyro.sourceforge.net/
.. _`yams`: http://www.logilab.org/project/name/yams/


Structure gnrale d'une application LAX
----------------------------------------

Un composant complexe est structur selon le modle suivant :

::
    
  .
  |-- app.yaml
  |-- custom.py
  |-- data
  |-- cubicweb/
  |-- i18n/
  |-- logilab/
  |-- main.py
  |-- mx/
  |-- rql/
  |-- schema.py
  |-- simplejson/
  |-- tools/
  |   |-- generate_schema_img.py
  |   `-- i18ncompile.py
  |-- views.py
  |-- yams/
  `-- yapps/
        

o :

* ``schema.py`` contient la dfinition du schma
* ``views.py`` contient les dfinitions des vues
* ``i18n`` contient les catalogues de messages pour les langues supportes (cot
  serveur et interface web) 
* ``data`` contient des fichiers de donnes arbitraires servis statiquement
  (images, css, fichiers javascripts)... (cot interface web uniquement)