delete-trailing-whitespace stable
authorNicolas Chauvat <nicolas.chauvat@logilab.fr>
Fri, 19 Jun 2009 20:38:32 +0200
branchstable
changeset 2172 cf8f9180e63e
parent 2125 19861294506f
child 2173 7fae9300b9f9
delete-trailing-whitespace
common/mail.py
devtools/repotest.py
doc/book/en/admin/create-instance.rst
doc/book/en/admin/gae.rst
doc/book/en/admin/instance-config.rst
doc/book/en/admin/setup.rst
doc/book/en/admin/site-config.rst
doc/book/en/annexes/cookbook.rst
doc/book/en/annexes/cubicweb-ctl.rst
doc/book/en/annexes/faq.rst
doc/book/en/annexes/index.rst
doc/book/en/annexes/mercurial.rst
doc/book/en/annexes/rql/implementation.rst
doc/book/en/annexes/rql/intro.rst
doc/book/en/annexes/rql/language.rst
doc/book/en/development/cubes/cc-newcube.rst
doc/book/en/development/datamodel/baseschema.rst
doc/book/en/development/datamodel/define-workflows.rst
doc/book/en/development/datamodel/definition.rst
doc/book/en/development/devcore/appobject.rst
doc/book/en/development/devcore/index.rst
doc/book/en/development/devcore/vreg.rst
doc/book/en/development/devrepo/hooks.rst
doc/book/en/development/devweb/form.rst
doc/book/en/development/devweb/views.rst
doc/book/en/development/entityclasses/data-as-objects.rst
doc/book/en/development/entityclasses/load-sort.rst
doc/book/en/development/migration/index.rst
doc/book/en/development/testing/index.rst
doc/book/en/development/webstdlib/autoform.rst
doc/book/en/development/webstdlib/basetemplates.rst
doc/book/en/development/webstdlib/baseviews.rst
doc/book/en/development/webstdlib/boxes.rst
doc/book/en/development/webstdlib/primary.rst
doc/book/en/development/webstdlib/urlpublish.rst
doc/book/en/index.rst
doc/book/en/intro/concepts/index.rst
doc/book/en/intro/foundations/index.rst
doc/book/en/intro/index.rst
doc/book/en/intro/tutorial/blog-less-ten-minutes.rst
doc/book/en/intro/tutorial/components.rst
doc/book/en/intro/tutorial/conclusion.rst
doc/book/en/intro/tutorial/create-cube.rst
doc/book/en/intro/tutorial/index.rst
doc/book/en/intro/tutorial/maintemplate.rst
etwist/__init__.py
goa/overrides/toolsutils.py
goa/skel/main.py
goa/test/pytestconf.py
md5crypt.py
misc/cwzope/cwzope.py
misc/migration/postcreate.py
server/__init__.py
server/schemaserial.py
web/test/unittest_form.py
web/test/unittest_views_apacherewrite.py
web/views/basecomponents.py
web/views/schema.py
--- a/common/mail.py	Fri Jun 19 09:19:27 2009 +0200
+++ b/common/mail.py	Fri Jun 19 20:38:32 2009 +0200
@@ -19,7 +19,7 @@
 def addrheader(uaddr, uname=None):
     # even if an email address should be ascii, encode it using utf8 since
     # application tests may generate non ascii email address
-    addr = uaddr.encode('UTF-8') 
+    addr = uaddr.encode('UTF-8')
     if uname:
         return '%s <%s>' % (header(uname).encode(), addr)
     return addr
--- a/devtools/repotest.py	Fri Jun 19 09:19:27 2009 +0200
+++ b/devtools/repotest.py	Fri Jun 19 20:38:32 2009 +0200
@@ -117,7 +117,7 @@
     def tearDown(self):
         ExecutionPlan._check_permissions = _orig_check_permissions
         rqlannotation._select_principal = _orig_select_principal
-        
+
     def set_debug(self, debug):
         set_debug(debug)
 
--- a/doc/book/en/admin/create-instance.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/admin/create-instance.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -7,7 +7,7 @@
 -----------------
 
 Now that we created our cube, we can create an instance to view our
-application in a web browser. To do so we will use a `all-in-one` 
+application in a web browser. To do so we will use a `all-in-one`
 configuration to simplify things ::
 
   cubicweb-ctl create -c all-in-one mycube myinstance
@@ -45,8 +45,8 @@
 The option `-D` specify the *debug mode* : the instance is not running in
 server mode and does not disconnect from the termnial, which simplifies debugging
 in case the instance is not properly launched. You can see how it looks by
-visiting the URL `http://localhost:8080` (the port number depends of your 
-configuration). To login, please use the cubicweb administrator login/psswd you 
+visiting the URL `http://localhost:8080` (the port number depends of your
+configuration). To login, please use the cubicweb administrator login/psswd you
 defined when you created the instance.
 
 To shutdown the instance, Crtl-C in the terminal window is enough.
--- a/doc/book/en/admin/gae.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/admin/gae.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -9,7 +9,7 @@
 `Google AppEngine`_ is provided with a partial port of the `Django`
 framework, but Google stated at Google IO 2008 that it would not
 support a specific Python web framework and that all
-community-supported frameworks would be more than welcome [1]_. 
+community-supported frameworks would be more than welcome [1]_.
 
 Therefore `Logilab`_ ported `CubicWeb` to run on top of `Google AppEngine`'s
 datastore.
@@ -26,7 +26,7 @@
 
 
 Please follow instructions on how to install `CubicWeb` framework
-(:ref:`CubicWebInstallation`). 
+(:ref:`CubicWebInstallation`).
 
 Installation
 ------------
@@ -37,7 +37,7 @@
    cubicweb-ctl newgapp <myapp>
 
 This will create a directory containing ::
- 
+
    `-- myapp/
        |-- app.conf
        |-- app.yaml
@@ -73,17 +73,17 @@
        |-- yams/
        `-- yapps/
 
-  
+
 This skeleton directory is a working `AppEngine` application. You will
 recognize the files ``app.yaml`` and ``main.py``. All the rest is the
-`CubicWeb` framework and its third-party libraries. You will notice that 
+`CubicWeb` framework and its third-party libraries. You will notice that
 the directory ``cubes`` is a library of reusable cubes.
 
 The main directories that you should know about are:
 
-  - ``cubes`` : this is a library of reusable yams cubes. To use 
-    those cubes you will list them in the variable 
-    `included-yams-cubes` of ``app.conf``. See also :ref:`cubes`. 
+  - ``cubes`` : this is a library of reusable yams cubes. To use
+    those cubes you will list them in the variable
+    `included-yams-cubes` of ``app.conf``. See also :ref:`cubes`.
   - [WHICH OTHER ONES SHOULD BE LISTED HERE?]
 
 Dependencies
@@ -91,7 +91,7 @@
 
 Before starting anything, please make sure the following packages are installed:
   - yaml : by default google appengine is providing yaml; make sure you can
-    import it. We recommend you create a symbolic link yaml instead of installing 
+    import it. We recommend you create a symbolic link yaml instead of installing
     and using python-yaml:
     yaml -> full/path/to/google_appengine/lib/yaml/lib/yaml/
   - gettext
@@ -99,12 +99,12 @@
 Setup
 ~~~~~
 
-Once you executed ``cubicweb-ctl newgapp <myapp>``, you can use that ``myapp/`` 
+Once you executed ``cubicweb-ctl newgapp <myapp>``, you can use that ``myapp/``
 as an application directory and do as follows.
 
 This installation directory provides a configuration for an instance of `CubicWeb`
-ported for Google App Engine. It is installed with its own command ``laxctl`` 
-which is a port of the command tool ``cubicweb-ctl`` originally developped for 
+ported for Google App Engine. It is installed with its own command ``laxctl``
+which is a port of the command tool ``cubicweb-ctl`` originally developped for
 `CubicWeb`.
 
 You can have the details of available commands by running ::
@@ -119,7 +119,7 @@
 ``myapp/i18n``. To compile the translation files, use the `gettext` tools
 or the ``laxctl`` command ::
 
-  $ python myapp/bin/laxctl i18ncube 
+  $ python myapp/bin/laxctl i18ncube
   $ python myapp/bin/laxctl i18ninstance
 
 Ignore the errors that print "No translation file found for domain
@@ -132,7 +132,7 @@
 You will never need to add new entries in the translation catalog. Instead we would
 recommand you to use ``self.req._("msgId")`` in your application code
 to flag new message id to add to the catalog, where ``_`` refers to
-xgettext that is used to collect new strings to translate. 
+xgettext that is used to collect new strings to translate.
 While running ``laxctl i18ncube``, new string will be added to the catalogs.
 
 Generating the data directory
@@ -165,7 +165,7 @@
  
   # does this application rely on google authentication service or not.
   use-google-auth=no
- 
+
 In ``app.yaml`` comment the `login: required` set by default in the handler::
 
   - url: .*
@@ -187,8 +187,8 @@
 
   $ python /path/to/google_appengine/dev_appserver.py /path/to/myapp/
 
-Once the local server is started, visit `http://MYAPP_URL/_load <http://localhost:8080/_load>`_ and sign in as administrator. 
-This will initialize the repository and enable you to log in into 
+Once the local server is started, visit `http://MYAPP_URL/_load <http://localhost:8080/_load>`_ and sign in as administrator.
+This will initialize the repository and enable you to log in into
 the application and continue the installation.
 
 You should be redirected to a page displaying a message `content initialized`.
@@ -197,7 +197,7 @@
 ~~~~~~~~~~~~~~~~~~~~~~~~
 
 You, then, want to visit  `http://MYAPP_URL/?vid=authinfo <http://localhost:8080/?vid=authinfo>`_ .
-If you selected not  to use google authentication, you will be prompted to a 
+If you selected not  to use google authentication, you will be prompted to a
 login form where you should initialize the administrator login (recommended
 to use admin/admin at first). You will then be redirected to a page providing
 you the value to provide to ``./bin/laxctl --cookie``.
@@ -212,21 +212,21 @@
    :alt: displaying the detailed view of the cookie values returned
 
 
-.. note:: In case you are not redirected to a page providing the 
-   option --cookie value, please visit one more time  
+.. note:: In case you are not redirected to a page providing the
+   option --cookie value, please visit one more time
    `http://MYAPP_URL/?vid=authinfo <http://localhost:8080/?vid=authinfo>`_ .
 
 Once, you have this value, then return to the shell and execute ::
- 
+
   $ python myapp/bin/laxctl db-init --cookie='dev_appserver_login=test@example.com:True; __session=7bbe973a6705bc5773a640f8cf4326cc' localhost:8080
 
 .. note:: In the case you are not using google authentication, the value returned
-   by `http://MYAPP_URL/?vid=authinfo <http://localhost:8080/?vid=authinfo>`_ 
+   by `http://MYAPP_URL/?vid=authinfo <http://localhost:8080/?vid=authinfo>`_
    will look like :
    --cookie='__session=2b45d1a9c36c03d2a30cedb04bc37b6d'
 
 Log out by clicking in the menu at the top right corner
-and restart browsing from `http://MYAPP_URL/ <http://localhost:8080>`_ 
+and restart browsing from `http://MYAPP_URL/ <http://localhost:8080>`_
 as a normal user.
 
 Unless you did something to change it, http://MYAPP_URL should be
--- a/doc/book/en/admin/instance-config.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/admin/instance-config.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -51,7 +51,7 @@
      RewriteCond %(REQUEST_URI) ^/demo
      RewriteRule ^/demo$ /demo/
      RewriteRule ^/demo/(.*) http://127.0.0.1:8080/$1 [L,P]
-  
+
    and for the https:::
 
      RewriteCond %(REQUEST_URI) ^/ demo
--- a/doc/book/en/admin/setup.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/admin/setup.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -35,7 +35,7 @@
 
 You can now install the required packages with the following command::
 
-  apt-get update 
+  apt-get update
   apt-get install cubicweb cubicweb-dev
 
 `cubicweb` installs the framework itself, allowing you to create
@@ -89,12 +89,12 @@
 -------------------------
 
 If you installed `CubicWeb` by cloning the Mercurial forest, then you
-will need to update the environment variable PYTHONPATH by adding  
+will need to update the environment variable PYTHONPATH by adding
 the path to the forest ``cubicweb``:
 
 Add the following lines to either `.bashrc` or `.bash_profile` to configure
 your development environment ::
-  
+
   export PYTHONPATH=/full/path/to/cubicweb-forest
 
 If you installed the debian packages, no configuration is required.
@@ -134,34 +134,34 @@
 
     $ initdb -D /path/to/pgsql
 
-  Once initialized, start the database server Postgres 
+  Once initialized, start the database server Postgres
   with the command::
-  
+
     $ postgres -D /path/to/psql
 
   If you cannot execute this command due to permission issues, please
   make sure that your username has write access on the database.
   ::
- 
+
     $ chown username /path/to/pgsql
 
 * The database authentication can be either set to `ident sameuser`
-  or `md5`. 
+  or `md5`.
   If set to `md5`, make sure to use an existing user
   of your database.
   If set to `ident sameuser`, make sure that your
   client's operating system user name has a matching user in
   the database. If not, please do as follow to create a user::
-    
+
     $ su
     $ su - postgres
     $ createuser -s -P username
 
   The option `-P` (for password prompt), will encrypt the password with
-  the method set in the configuration file ``pg_hba.conf``. 
+  the method set in the configuration file ``pg_hba.conf``.
   If you do not use this option `-P`, then the default value will be null
   and you will need to set it with::
-    
+
     $ su postgres -c "echo ALTER USER username WITH PASSWORD 'userpasswd' | psql"
 
   This login/password will be requested when you will create an
--- a/doc/book/en/admin/site-config.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/admin/site-config.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -14,12 +14,12 @@
 This menu provides you a way to adjust some navigation options depending on
 your needs, such as the number of entities to display by page of results.
 Follows the detailled list of available options :
-  
+
 * navigation.combobox-limit : maximum number of entities to display in related
   combo box (sample format: 23)
-* navigation.page-size : maximum number of objects displayed by page of results 
+* navigation.page-size : maximum number of objects displayed by page of results
   (sample format: 23)
-* navigation.related-limit : maximum number of related entities to display in 
+* navigation.related-limit : maximum number of related entities to display in
   the primary view (sample format: 23)
 * navigation.short-line-size : maximum number of characters in short description
   (sample format: 23)
@@ -47,17 +47,17 @@
 Actions
 ~~~~~~~
 This menu provides a way to configure the context in which you expect the actions
-to be displayed to the user and if you want the action to be visible or not. 
-You must have notice that when you view a list of entities, an action box is 
-available on the left column which display some actions as well as a drop-down 
-menu for more actions. 
+to be displayed to the user and if you want the action to be visible or not.
+You must have notice that when you view a list of entities, an action box is
+available on the left column which display some actions as well as a drop-down
+menu for more actions.
 
 The context available are :
 
 * mainactions : actions listed in the left box
 * moreactions : actions listed in the `more` menu of the left box
 * addrelated : add actions listed in the left box
-* useractions : actions listed in the first section of drop-down menu 
+* useractions : actions listed in the first section of drop-down menu
   accessible from the right corner user login link
 * siteactions : actions listed in the second section of drop-down menu
   accessible from the right corner user login link
@@ -65,15 +65,15 @@
 
 Boxes
 ~~~~~
-The application has already a pre-defined set of boxes you can use right away. 
+The application has already a pre-defined set of boxes you can use right away.
 This configuration section allows you to place those boxes where you want in the
-application interface to customize it. 
+application interface to customize it.
 
 The available boxes are :
 
 * actions box : box listing the applicable actions on the displayed data
 
-* boxes_blog_archives_box : box listing the blog archives 
+* boxes_blog_archives_box : box listing the blog archives
 
 * possible views box : box listing the possible views for the displayed data
 
@@ -81,7 +81,7 @@
 
 * search box : search box
 
-* startup views box : box listing the configuration options available for 
+* startup views box : box listing the configuration options available for
   the application site, such as `Preferences` and `Site Configuration`
 
 Components
--- a/doc/book/en/annexes/cookbook.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/annexes/cookbook.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -70,11 +70,11 @@
   you would not be able to use dbapi. ::
 
     from cubicweb import dbapi
-        
+
     cnx = dbapi.connection(database='instance-id', user='admin', password='admin')
     cur = cnx.cursor()
     for name in ('Personal', 'Professional', 'Computers'):
         cur.execute('INSERT Blog B: B name %s', name)
     cnx.commit()
 
-    
+
--- a/doc/book/en/annexes/cubicweb-ctl.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/annexes/cubicweb-ctl.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -28,7 +28,7 @@
 * ``newcube``, create a new cube on the file system based on the name
   given in the parameters. This command create a cube from an application
   skeleton that includes default files required for debian packaging.
-  
+
 
 Command to create an instance
 -----------------------------
@@ -75,7 +75,7 @@
 ----------------------------------
 * ``i18ncubicweb``, regenerates messages catalogs of the `CubicWeb` library
 * ``i18ncube``, regenerates the messages catalogs of a cube
-* ``i18ninstance``, recompiles the messages catalogs of an instance. 
+* ``i18ninstance``, recompiles the messages catalogs of an instance.
   This is automatically done while upgrading.
 
 See also chapter :ref:`internationalisation`.
@@ -116,7 +116,7 @@
 
 This will create a new cube in ``/path/to/forest/cubicweb/cubes/<mycube>``
 for a Mercurial forest installation, or in ``/usr/share/cubicweb/cubes``
-for a debian packages installation, and then create an instance as 
+for a debian packages installation, and then create an instance as
 explained just above.
 
 
--- a/doc/book/en/annexes/faq.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/annexes/faq.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -124,7 +124,7 @@
         """link a version to its project. A version is necessarily linked
         to one and only one project. """
         # some lines voluntarily missing
-        permissions = {'read': ('managers', 'users', 'guests',), 
+        permissions = {'read': ('managers', 'users', 'guests',),
                        'delete': ('managers', ),
                        'add': ('managers', 'logilab',
                             RRQLExpression('O require_permission P, P name "add_version",
@@ -185,10 +185,10 @@
 
   It depends on what has been modified in the schema.
 
-  * Update of an attribute permissions and properties: 
+  * Update of an attribute permissions and properties:
     ``synchronize_eschema('MyEntity')``.
 
-  * Update of a relation permissions and properties: 
+  * Update of a relation permissions and properties:
     ``synchronize_rschema('MyRelation')``.
 
   * Add an attribute: ``add_attribute('MyEntityType', 'myattr')``.
@@ -304,7 +304,7 @@
   the site configuration panel ``http://appurl/view?vid=systempropertiesform``
   and then set ``ui.date`` and/or ``ui.datetime``.
   Then in the view code, use::
-    
+
     self.format_date(entity.date_attribute)
 
 Can PostgreSQL and CubicWeb authentication work with kerberos ?
@@ -315,7 +315,7 @@
   file while leaving the password blank. It should be enough for your instance
   to connect to postgresql with a kerberos ticket.
 
-  
+
 How to load data from a script?
 -------------------------------
 
@@ -357,7 +357,7 @@
     >>> from cubicweb.server.utils import crypt_password
     >>> crypt_password('joepass')
     'qHO8282QN5Utg'
-    >>> 
+    >>>
 
   and paste it in the database::
 
--- a/doc/book/en/annexes/index.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/annexes/index.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -7,7 +7,7 @@
 --------------------
 
 The following chapters are reference material.
- 
+
 .. toctree::
    :maxdepth: 1
 
--- a/doc/book/en/annexes/mercurial.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/annexes/mercurial.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -12,7 +12,7 @@
 next, and so on). Locally, we have a repository containing revisions
 tree, and a working directory. It is possible
 to put in its working directory, one of the versions of its local repository,
-modify and then push it in its repository. 
+modify and then push it in its repository.
 It is also possible to get revisions from another repository or to export
 its own revisions from the local repository to another repository.
 
@@ -83,7 +83,7 @@
 
      hg incoming ssh://myhost//home/src/repo
 
-* See what is the revision of the local repository which has been taken out 
+* See what is the revision of the local repository which has been taken out
   from the working directory and amended::
 
      hg parent
@@ -114,8 +114,8 @@
 Installation of the forest extension
 ````````````````````````````````````
 
-Set up the forest extension by getting a copy of the sources 
-from http://hg.akoha.org/hgforest/ and adding the following 
+Set up the forest extension by getting a copy of the sources
+from http://hg.akoha.org/hgforest/ and adding the following
 lines to your ``~/.hgrc``: ::
 
    [extensions]
--- a/doc/book/en/annexes/rql/implementation.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/annexes/rql/implementation.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -53,7 +53,7 @@
 
      relation    ::= 'NOT'? VARIABLE R_TYPE COMP_OP? expression
                    | 'NOT'? R_TYPE VARIABLE 'IN' '(' expression (',' expression)* ')'
-                   
+
      expression  ::= var_or_func_or_const (MATH_OP var_or_func_or_const) *
                    | '(' expression ')'
 
@@ -83,7 +83,7 @@
 Internal representation (syntactic tree)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-The tree research does not contain the selected variables 
+The tree research does not contain the selected variables
 (e.g. there is only what follows "WHERE").
 
 The insertion tree does not contain the variables inserted or relations
@@ -156,7 +156,7 @@
 
      Document class Type <-> Document occurence_of Fiche class Type
      Sheet class Type    <-> Form collection Collection class Type
-    
+
 Therefore 1. becomes::
 
      Document X where
--- a/doc/book/en/annexes/rql/intro.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/annexes/rql/intro.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -11,7 +11,7 @@
 user should see virtually no difference between an attribute and a
 relation).
 
-RQL is inspired by SQL but is the highest level. A knowledge of the 
+RQL is inspired by SQL but is the highest level. A knowledge of the
 `CubicWeb` schema defining the application is necessary.
 
 Comparison with existing languages
@@ -21,8 +21,8 @@
 ```
 RQL builds on the features of SQL but is at a higher level
 (the current implementation of RQL generates SQL). For that it is limited
-to the way of browsing relations and introduces variables. 
-The user does not need to know the model underlying SQL, but the `CubicWeb` 
+to the way of browsing relations and introduces variables.
+The user does not need to know the model underlying SQL, but the `CubicWeb`
 schema defining the application.
 
 Versa
@@ -30,16 +30,16 @@
 We should look in more detail, but here are already some ideas for
 the moment ... Versa_ is the language most similar to what we wanted
 to do, but the model underlying data being RDF, there is some
-number of things such as namespaces or handling of the RDF types which 
+number of things such as namespaces or handling of the RDF types which
 does not interest us. On the functionality level, Versa_ is very comprehensive
 including through many functions of conversion and basic types manipulation,
-which may need to be guided at one time or another. 
+which may need to be guided at one time or another.
 Finally, the syntax is a little esoteric.
 
 Sparql
 ``````
 The query language most similar to RQL is SPARQL_, defined by the W3C to serve
-for the semantic web. 
+for the semantic web.
 
 
 The different types of queries
@@ -59,7 +59,7 @@
 Delete entities or relationship (`DELETE`)
    Remove entities or relations existing in the database.
 
-   
+
 
 
 .. _Versa: http://uche.ogbuji.net/tech/rdf/versa/
--- a/doc/book/en/annexes/rql/language.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/annexes/rql/language.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -81,7 +81,7 @@
 * The operator `=` is the default operator.
 
 * The operator `LIKE` equivalent to `~=` can be used with the
-  special character `%` in a string to indicate that the chain 
+  special character `%` in a string to indicate that the chain
   must start or finish by a prefix/suffix:
   ::
 
@@ -90,11 +90,11 @@
 
 * The operator `IN` provides a list of possible values:
   ::
-  
+
     Any X WHERE X name IN ( 'chauvat', 'fayolle', 'di mascio', 'thenault')
 
 
-XXX nico: "A trick <> 'bar'" wouldn't it be more convenient than 
+XXX nico: "A trick <> 'bar'" wouldn't it be more convenient than
 "NOT A trick 'bar'" ?
 
 .. _PriorityOperators:
@@ -130,7 +130,7 @@
    Type of selected variables.
    The special type `Any` is equivalent to not specify a type.
 :restriction:
-   list of conditions to test successively 
+   list of conditions to test successively
      `V1 relation V2 | <static value>`
 :orderterms:
    Definition of the selection order: variable or column number followed by
@@ -167,7 +167,7 @@
 Identity
 ````````
 
-You can use the special relation `identity` in a query to 
+You can use the special relation `identity` in a query to
 add an identity constraint between two variables. This is equivalent
 to ``is`` in python::
 
@@ -181,23 +181,23 @@
 Limit / offset
 ``````````````
 ::
-    
+
     Any P ORDERBY N LIMIT 5 OFFSET 10 WHERE P is Person, P firstname N
 
 Function calls
 ``````````````
 ::
-    
+
     Any UPPER(N) WHERE P firstname N
 
 Functions on string: UPPER, LOWER
-    
+
 Exists
 ``````
 ::
-    
+
     Any X ORDERBY PN,N
-    WHERE X num N, X version_of P, P name PN, 
+    WHERE X num N, X version_of P, P name PN,
           EXISTS(X in_state S, S name IN ("dev", "ready"))
           OR EXISTS(T tags X, T name "priority")
 
@@ -219,12 +219,12 @@
        Any C, P WHERE C is Card, P? documented_by C
 
     Any T,P,V WHERE T is Ticket, T concerns P, T done_in V?
-    
-    
+
+
 Having
 ``````
 ::
-    
+
     Any X GROUPBY X WHERE X knows Y HAVING COUNT(Y) > 10
 
 Subqueries
@@ -232,14 +232,14 @@
 ::
 
     (Any X WHERE X is Person) UNION (Any X WHERE X is Company)
-    
+
 
      DISTINCT Any W, REF
-        WITH W, REF BEING 
+        WITH W, REF BEING
             (
-	      (Any W, REF WHERE W is Workcase, W ref REF, 
+	      (Any W, REF WHERE W is Workcase, W ref REF,
                                  W concerned_by D, D name "Logilab")
-               UNION 
+               UNION
               (Any W, REF WHERE W is Workcase, W ref REF, '
                                 W split_into WP, WP name "WP1")
             )
@@ -317,7 +317,7 @@
 
 The restriction can define variables used in assignments.
 
-Caution, if a restriction is specified, the insertion is done for 
+Caution, if a restriction is specified, the insertion is done for
 *each line result returned by the restriction*.
 
 - *Insert a new person named 'foo'*
@@ -331,7 +331,7 @@
 
         INSERT Person X, Person Y: X name 'foo', Y name 'nice', X friend Y
 
-- *Insert a new person named 'foo' and a 'friend' relation with an existing 
+- *Insert a new person named 'foo' and a 'friend' relation with an existing
   person called 'nice'*
   ::
 
@@ -350,7 +350,7 @@
 
         SET X name 'bar', X first_name 'original' WHERE X is Person, X name 'foo'
 
-- *Insert a relation of type 'know' between objects linked by 
+- *Insert a relation of type 'know' between objects linked by
   the relation of type 'friend'*
   ::
 
--- a/doc/book/en/development/cubes/cc-newcube.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/development/cubes/cc-newcube.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -7,7 +7,7 @@
 
   cubicweb-ctl newcube mycube
 
-  # answer questions 
+  # answer questions
   hg init moncube
   cd mycube
   hg add .
@@ -31,12 +31,12 @@
     the source code of your cube:
     ``cubicweb-ctl newcube --directory=/path/to/cubes/library cube_name``
 
-    
+
 Usage of :command:`cubicweb-ctl liveserver`
 -------------------------------------------
 
 To quickly test a new cube, you can also use the `liveserver` command for cubicweb-ctl
-which allows to create an instance in memory (using an SQLite database by 
+which allows to create an instance in memory (using an SQLite database by
 default) and make it accessible through a web server ::
 
   cubicweb-ctl live-server mycube
--- a/doc/book/en/development/datamodel/baseschema.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/development/datamodel/baseschema.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -24,7 +24,7 @@
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * `State`, workflow state
 * `Transition`, workflow transition
-* `TrInfo`, record of a transition trafic for an entity 
+* `TrInfo`, record of a transition trafic for an entity
 
 Other entity types
 ~~~~~~~~~~~~~~~~~~
--- a/doc/book/en/development/datamodel/define-workflows.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/development/datamodel/define-workflows.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -8,30 +8,30 @@
 General
 -------
 
-A workflow describes how certain entities have to evolve between 
-different states. Hence we have a set of states, and a "transition graph", 
+A workflow describes how certain entities have to evolve between
+different states. Hence we have a set of states, and a "transition graph",
 i.e. a list of possible transitions from one state to another state.
 
-We will define a simple workflow for a blog, with only the following 
-two states: `submitted` and `published`. So first, we create a simple 
+We will define a simple workflow for a blog, with only the following
+two states: `submitted` and `published`. So first, we create a simple
 `CubicWeb` in ten minutes (see :ref:`BlogTenMinutes`).
 
 Set-up a workflow
 -----------------
 
-We want to create a workflow to control the quality of the BlogEntry 
+We want to create a workflow to control the quality of the BlogEntry
 submitted on your application. When a BlogEntry is created by a user
 its state should be `submitted`. To be visible to all, it has to
 be in the state `published`. To move it from `submitted` to `published`,
 we need a transition that we can call `approve_blogentry`.
 
 A BlogEntry state should not be modifiable by every user.
-So we have to define a group of users, `moderators`, and 
+So we have to define a group of users, `moderators`, and
 this group will have appropriate permissions to publish a BlogEntry.
 
 There are two ways to create a workflow: from the user interface,
-or by defining it in ``migration/postcreate.py``. 
-This script is executed each time a new ``cubicweb-ctl db-init`` is done. 
+or by defining it in ``migration/postcreate.py``.
+This script is executed each time a new ``cubicweb-ctl db-init`` is done.
 We strongly recommand to create the workflow in ``migration/postcreate.py``
 and we will now show you how. Read `Under the hood`_ to understand why.
 
@@ -66,7 +66,7 @@
 
 To define our workflow for BlogDemo, please add the following lines
 to ``migration/postcreate.py``::
-  
+
   _ = unicode
 
   moderators = add_entity('CWGroup', name=u"moderators")
@@ -88,12 +88,12 @@
   add_transition(_('approve_blogentry'), 'BlogEntry', (submitted,), published, ('moderators', 'managers'),)
 
 
-``add_transition`` expects 
+``add_transition`` expects
 
   * as the first argument the name of the
     transition, then the entity type on which the transition can be applied,
   * then the list of states on which the transition can be trigged,
-  * the target state of the transition, 
+  * the target state of the transition,
   * and the permissions
     (e.g. a list of user groups who can apply the transition; the user
     has to belong to at least one of the listed group to perform the action).
@@ -106,11 +106,11 @@
   Do not forget to add the `_()` in front of all states and transitions names while creating
   a workflow so that they will be identified by the i18n catalog scripts.
 
-In addition to the user group condition, we could have added a RQL condition. 
-In this case, the user can only perform the action if 
-the two conditions are satisfied. 
+In addition to the user group condition, we could have added a RQL condition.
+In this case, the user can only perform the action if
+the two conditions are satisfied.
 
-If we use a RQL condition on a transition, we can use the following 
+If we use a RQL condition on a transition, we can use the following
 variables:
 
 * `%(eid)s`, object's eid
@@ -123,7 +123,7 @@
 You can notice that in the action box of a BlogEntry, the state
 is now listed as well as the possible transitions defined by the workflow.
 The transitions will only be displayed for users having the right permissions.
-In our example, the transition `approve_blogentry` will only be displayed 
+In our example, the transition `approve_blogentry` will only be displayed
 for the users belonging to the group `moderators` or `managers`.
 
 
@@ -141,7 +141,7 @@
 with name 'published'. Whereas::
 
   add_transition(_('approve_blogentry'), 'BlogEntry', (submitted,), published, ('moderators', 'managers'),)
- 
+
 will create an entity of type ``Transition`` with name 'approve_blogentry' which will
 be linked to the ``State`` entities created before.
 As a consequence, we could use the administration interface to do these operations.
@@ -151,8 +151,8 @@
 
 Indeed, if you create the states and transitions through the user interface,
 next time you initialize the database
-you will have to re-create all the entities. 
-The user interface should only be a reference for you to view the states 
+you will have to re-create all the entities.
+The user interface should only be a reference for you to view the states
 and transitions, but is not the appropriate interface to define your
 application workflow.
 
--- a/doc/book/en/development/datamodel/definition.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/development/datamodel/definition.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -11,15 +11,15 @@
 
 At this point, it is important to make clear the difference between
 *relation type* and *relation definition*: a *relation type* is only a relation
-name with potentially other additionnal properties (see XXXX), whereas a 
-*relation definition* is a complete triplet 
-"<subject entity type> <relation type> <object entity type>". 
-A relation type could have been implied if none is related to a 
+name with potentially other additionnal properties (see XXXX), whereas a
+*relation definition* is a complete triplet
+"<subject entity type> <relation type> <object entity type>".
+A relation type could have been implied if none is related to a
 relation definition of the schema.
 
 
 All `CubicWeb` built-in types are available : `String`, `Int`, `Float`,
-`Decimal`, `Boolean`, `Date`, `Datetime`, `Time`, `Interval`, `Byte` 
+`Decimal`, `Boolean`, `Date`, `Datetime`, `Time`, `Interval`, `Byte`
 and `Password`.
 They are implicitely imported (as well as the special the function "_"
 for translation :ref:`internationalization`).
@@ -67,7 +67,7 @@
   RelationSchema.rproperties()
   RelationSchema.rproperty(subjtype, objtype, property name)
 
-* Optional properties for attributes and relations : 
+* Optional properties for attributes and relations :
 
   - `description` : a string describing an attribute or a relation. By default
     this string will be used in the editing form of the entity, which means
@@ -79,7 +79,7 @@
 
   - `cardinality` : a two character string which specify the cardinality of the
     relation. The first character defines the cardinality of the relation on
-    the subject, and the second on the object. When a relation can have 
+    the subject, and the second on the object. When a relation can have
     multiple subjects or objects, the cardinality applies to all,
     not on a one-to-one basis (so it must be consistent...). The possible
     values are inspired from regular expression syntax :
@@ -92,24 +92,24 @@
   - `meta` : boolean indicating that the relation is a meta-relation (false by
     default)
 
-* optional properties for attributes : 
+* optional properties for attributes :
 
   - `required` : boolean indicating if the attribute is required (false by default)
 
   - `unique` : boolean indicating if the value of the attribute has to be unique
     or not within all entities of the same type (false by default)
 
-  - `indexed` : boolean indicating if an index needs to be created for this 
+  - `indexed` : boolean indicating if an index needs to be created for this
     attribute in the database (false by default). This is useful only if
     you know that you will have to run numerous searches on the value of this
     attribute.
 
   - `default` : default value of the attribute. In case of date types, the values
     which could be used correspond to the RQL keywords `TODAY` and `NOW`.
-  
+
   - `vocabulary` : specify static possible values of an attribute
 
-* optional properties of type `String` : 
+* optional properties of type `String` :
 
   - `fulltextindexed` : boolean indicating if the attribute is part of
     the full text index (false by default) (*applicable on the type `Byte`
@@ -120,11 +120,11 @@
 
   - `maxsize` : integer providing the maximum size of the string (no limit by default)
 
-* optional properties for relations : 
+* optional properties for relations :
 
   - `composite` : string indicating that the subject (composite == 'subject')
     is composed of the objects of the relations. For the opposite case (when
-    the object is composed of the subjects of the relation), we just set 
+    the object is composed of the subjects of the relation), we just set
     'object' as value. The composition implies that when the relation
     is deleted (so when the composite is deleted), the composed are also deleted.
 
@@ -137,7 +137,7 @@
 * `SizeConstraint` : allows to specify a minimum and/or maximum size on
   string (generic case of `maxsize`)
 
-* `BoundConstraint` : allows to specify a minimum and/or maximum value on 
+* `BoundConstraint` : allows to specify a minimum and/or maximum value on
   numeric types
 
 * `UniqueConstraint` : identical to "unique=True"
@@ -146,7 +146,7 @@
 
 * `RQLConstraint` : allows to specify a RQL query that has to be satisfied
   by the subject and/or the object of the relation. In this query the variables
-  `S` and `O` are reserved for the entities subject and object of the 
+  `S` and `O` are reserved for the entities subject and object of the
   relation.
 
 * `RQLVocabularyConstraint` : similar to the previous type of constraint except
@@ -160,7 +160,7 @@
 The security model
 ~~~~~~~~~~~~~~~~~~
 
-The security model of `cubicWeb` is based on `Access Control List`. 
+The security model of `cubicWeb` is based on `Access Control List`.
 The main principles are:
 
 * users and groups of users
@@ -213,13 +213,13 @@
   This can only be used for the actions `update` and `delete` of an entity
   type.
 
-It is also possible to use specific groups if they are defined in the precreate 
+It is also possible to use specific groups if they are defined in the precreate
 of the cube (``migration/precreate.py``).
 
 
 Use of RQL expression for writing rights
 `````````````````````````````````````````
-It is possible to define RQL expression to provide update permission 
+It is possible to define RQL expression to provide update permission
 (`add`, `delete` and `update`) on relation and entity types.
 
 RQL expression for entity type permission :
@@ -232,13 +232,13 @@
   respectively on the current entity (on which the action is verified) and
   on the user who send the request
 
-* it is possible to use, in this expression, a special relation 
-  "has_<ACTION>_permission" where the subject is the user and the 
+* it is possible to use, in this expression, a special relation
+  "has_<ACTION>_permission" where the subject is the user and the
   object is a any variable, meaning that the user needs to have
   permission to execute the action <ACTION> on the entities related
-  to this variable 
+  to this variable
 
-For RQL expressions on a relation type, the principles are the same except 
+For RQL expressions on a relation type, the principles are the same except
 for the following :
 
 * you have to use the class `RQLExpression` in the case of a non-final relation
@@ -248,7 +248,7 @@
   which the action is being verified) and the user who executed the query
 
 * we can also defined rights on attributes of an entity (non-final relation),
-  knowing that : 
+  knowing that :
 
   - to defines RQL expression, we have to use the class `RQLExpression`
     in which X represents the entity the attribute belongs to
@@ -260,17 +260,17 @@
 
   Potentially, the use of an RQL expression to add an entity or a relation
   can cause problems for the user interface, because if the expression uses
-  the entity or the relation to create, then we are not able to verify the 
+  the entity or the relation to create, then we are not able to verify the
   permissions before we actually add the entity (please note that this is
   not a problem for the RQL server at all, because the permissions checks are
-  done after the creation). In such case, the permission check methods 
-  (check_perm, has_perm) can indicate that the user is not allowed to create 
-  this entity but can obtain the permission. 
+  done after the creation). In such case, the permission check methods
+  (check_perm, has_perm) can indicate that the user is not allowed to create
+  this entity but can obtain the permission.
   To compensate this problem, it is usually necessary, for such case,
   to use an action that reflects the schema permissions but which enables
   to check properly the permissions so that it would show up if necessary.
 
-  
+
 Use of RQL expression for reading rights
 ````````````````````````````````````````
 
@@ -318,17 +318,17 @@
 or the relation in `CubicWeb` application.
 
 An attribute is defined in the schema as follows::
-    
+
     attr_name = attr_type(properties*)
 
 where `attr_type` is one of the type listed above and `properties` is
 a list of  the attribute needs to statisfy (see :ref:`properties`
-for more details). 
+for more details).
 
 
 * relations can be defined by using `ObjectRelation` or `SubjectRelation`.
   The first argument of `SubjectRelation` or `ObjectRelation` gives respectively
-  the object/subject entity type of the relation. This could be :  
+  the object/subject entity type of the relation. This could be :
 
   * a string corresponding to an entity type
 
@@ -337,7 +337,7 @@
   * special string such as follows :
 
     - "**" : all types of entities
-    - "*" : all types of non-meta entities 
+    - "*" : all types of non-meta entities
     - "@" : all types of meta entities but not system entities (e.g. used for
       the basic schema description)
 
@@ -356,9 +356,9 @@
 
 A relation is defined by a Python class heriting `RelationType`. The name
 of the class corresponds to the name of the type. The class then contains
-a description of the properties of this type of relation, and could as well 
+a description of the properties of this type of relation, and could as well
 contain a string for the subject and a string for the object. This allows to create
-new definition of associated relations, (so that the class can have the 
+new definition of associated relations, (so that the class can have the
 definition properties from the relation) for example ::
 
   class locked_by(RelationType):
--- a/doc/book/en/development/devcore/appobject.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/development/devcore/appobject.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -1,5 +1,5 @@
 
-  
+
 The `AppObject` class
 ~~~~~~~~~~~~~~~~~~~~~
 
--- a/doc/book/en/development/devcore/index.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/development/devcore/index.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -10,7 +10,7 @@
    selectors.rst
    dbapi.rst
 
-   
+
 :mod:`Configuration <cubicweb.cwconfig>`
 ----------------------------------------
 
--- a/doc/book/en/development/devcore/vreg.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/development/devcore/vreg.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -16,7 +16,7 @@
 .. note::
     Once the function `registration_callback(vreg)` is implemented, all the objects
     need to be explicitly registered as it disables the automatic object registering.
-    
+
 * suppression de l'ancien système quand il ne restera plus de réference au
   module registerers dans le code des cubes existants.
 
--- a/doc/book/en/development/devrepo/hooks.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/development/devrepo/hooks.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -10,8 +10,8 @@
 *Hooks* are executed before or after updating an entity or a relation in the
 repository.
 
-Their prototypes are as follows: 
-    
+Their prototypes are as follows:
+
     * after_add_entity     (session, entity)
     * after_update_entity  (session, entity)
     * after_delete_entity  (session, eid)
@@ -23,10 +23,10 @@
     * after_delete_relation  (session, fromeid, rtype, toeid)
     * before_add_relation    (session, fromeid, rtype, toeid)
     * before_delete_relation (session, fromeid, rtype, toeid)
-    
+
     * server_startup
     * server_shutdown
-    
+
     * session_open
     * session_close
 
--- a/doc/book/en/development/devweb/form.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/development/devweb/form.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -9,9 +9,9 @@
   * `vocabulary(rtype, x='subject', limit=None)`, called by the
     editing views, it returns a list of couples (label, eid) of entities
     that could be related to the entity by the relation `rtype`
-  * `subject_relation_vocabulary(rtype, limit=None)`, called internally 
+  * `subject_relation_vocabulary(rtype, limit=None)`, called internally
     by  `vocabulary` in the case of a subject relation
-  * `object_relation_vocabulary(rtype, limit=None)`, called internally 
+  * `object_relation_vocabulary(rtype, limit=None)`, called internally
     by  `vocabulary` in the case of an object relation
   * `relation_vocabulary(rtype, targettype, x, limit=None)`, called
     internally by `subject_relation_vocabulary` and `object_relation_vocabulary`
--- a/doc/book/en/development/devweb/views.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/development/devweb/views.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -42,19 +42,19 @@
 
 * `dispatch(**context)`, render the view by calling `call` or
   `cell_call` depending on the given parameters
-* `call(**kwargs)`, call the view for a complete result set or null (default 
+* `call(**kwargs)`, call the view for a complete result set or null (default
   implementation calls `cell_call()` on each cell of the result set)
 * `cell_call(row, col, **kwargs)`, call the view for a given cell of a result set
 * `url()`, returns the URL enabling us to get the view with the current
-  result set 
-* `view(__vid, rset, __fallback_vid=None, **kwargs)`, call the view of identifier 
+  result set
+* `view(__vid, rset, __fallback_vid=None, **kwargs)`, call the view of identifier
   `__vid` on the given result set. It is possible to give a view identifier
   of fallback that will be used if the view requested is not applicable to the
   result set
-  
+
 * `wview(__vid, rset, __fallback_vid=None, **kwargs)`, similar to `view` except
   the flow is automatically passed in the parameters
-  
+
 * `html_headers()`, returns a list of HTML headers to set by the main template
 
 * `page_title()`, returns the title to use in the HTML header `title`
@@ -67,17 +67,17 @@
 
 * `EntityView`, view applying to lines or cell containing an entity (e.g. an eid)
 * `StartupView`, start view that does not require a result set to apply to
-* `AnyRsetView`, view applied to any result set 
+* `AnyRsetView`, view applied to any result set
 * `EmptyRsetView`, view applied to an empty result set
 
 
-Examples of views class 
+Examples of views class
 -----------------------
 
 - Using `templatable`, `content_type` and HTTP cache configuration
 
 .. code-block:: python
-    
+
 
     class RSSView(XMLView):
         id = 'rss'
@@ -86,13 +86,13 @@
         content_type = 'text/xml'
         http_cache_manager = MaxAgeHTTPCacheManager
         cache_max_age = 60*60*2 # stay in http cache for 2 hours by default
-    
+
 
 
 - Using custom selector
 
 .. code-block:: python
-    
+
 
     class SearchForAssociationView(EntityView):
         """view called by the edition view when the user asks
@@ -111,18 +111,18 @@
 
 We'll show you now an example of a ``primary`` view and how to customize it.
 
-If you want to change the way a ``BlogEntry`` is displayed, just override 
+If you want to change the way a ``BlogEntry`` is displayed, just override
 the method ``cell_call()`` of the view ``primary`` in ``BlogDemo/views.py`` ::
 
 .. code-block:: python
 
    from cubicweb.view import EntityView
    from cubicweb.selectors import implements
-  
+
    class BlogEntryPrimaryView(EntityView):
        id = 'primary'
        __select__ =implements('Blog')
-       
+
        def cell_call(self, row, col):
            entity = self.entity(row, col)
            self.w(u'<h1>%s</h1>' % entity.title)
@@ -131,7 +131,7 @@
            self.w(u'<p>%s</p>' % entity.text)
 
 The above source code defines a new primary view (`line 03`) for
-``BlogEntry`` (`line 05`). 
+``BlogEntry`` (`line 05`).
 
 Since views are applied to result sets which can be tables of
 data, we have to recover the entity from its (row,col)-coordinates (`line 08`).
@@ -170,9 +170,9 @@
 about the schema and infer that such entities have to be of the
 ``BlogEntry`` kind and retrieves them.
 
-The request returns a selection of data called a result set. At 
+The request returns a selection of data called a result set. At
 `line 10` the view 'primary' is applied to this result set to output
-HTML. 
+HTML.
 
 **This is to be compared to interfaces and protocols in object-oriented
 languages. Applying a given view called 'a_view' to all the entities
@@ -202,7 +202,7 @@
 
 * create view "blogentry table" with title, publish_date, category
 
-We will show that by default the view that displays 
+We will show that by default the view that displays
 "Any E,D,C WHERE E publish_date D, E category C" is the table view.
 Of course, the same can be obtained by calling
 self.wview('table',rset)
@@ -226,7 +226,7 @@
 * set, through the attribute `content_type` of the class, the MIME type generated
   by the view to `application/octet-stream`
 
-For views dedicated to binary content creation (like dynamically generated 
+For views dedicated to binary content creation (like dynamically generated
 images), we have to set the attribute `binary` of the class to `True` (which
 implies that `templatable == False`, so that the attribute `w` of the view could be
 replaced by a binary flow instead of unicode).
--- a/doc/book/en/development/entityclasses/data-as-objects.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/development/entityclasses/data-as-objects.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -19,18 +19,18 @@
 
   * `absolute_url(**kwargs)`, returns an absolute URL to access the primary view
     of an entity
-    
+
   * `rest_path()`, returns a relative REST URL to get the entity
 
   * `format(attr)`, returns the format (MIME type) of the field given un parameter
 
-  * `printable_value(attr, value=_marker, attrtype=None, format='text/html')`, 
+  * `printable_value(attr, value=_marker, attrtype=None, format='text/html')`,
     returns a string enabling the display of an attribute value in a given format
     (the value is automatically recovered if necessary)
 
 :Data handling:
 
-  * `as_rset()`, converts the entity into an equivalent result set simulating the 
+  * `as_rset()`, converts the entity into an equivalent result set simulating the
      request `Any X WHERE X eid _eid_`
 
   * `complete(skip_bytes=True)`, executes a request that recovers in one time
@@ -57,21 +57,21 @@
 
   * `delete()` allows to delete the entity
 
-  
+
 Tne :class:`AnyEntity` class
 ----------------------------
-  
+
 To provide a specific behavior for each entity, we have to define
 a class inheriting from `cubicweb.entities.AnyEntity`. In general, we
 define this class in a module of `mycube.entities` package of an application
 so that it will be available on both server and client side.
 
-The class `AnyEntity` is loaded dynamically from the class `Entity` 
+The class `AnyEntity` is loaded dynamically from the class `Entity`
 (`cubciweb.entity`). We define a sub-class to add methods or to
 specialize the handling of a given entity type
 
 The methods defined for `AnyEntity` or `Entity` are the following ones:
-  
+
 :Standard meta-data (Dublin Core):
 
   * `dc_title()`, returns a unicode string corresponding to the meta-data
@@ -81,15 +81,15 @@
   * `dc_long_title()`, same as dc_title but can return a more
     detailled title
 
-  * `dc_description(format='text/plain')`, returns a unicode string 
+  * `dc_description(format='text/plain')`, returns a unicode string
     corresponding to the meta-data `Description` (look for a description
     attribute by default)
 
-  * `dc_authors()`, returns a unicode string corresponding to the meta-data 
+  * `dc_authors()`, returns a unicode string corresponding to the meta-data
     `Authors` (owners by default)
 
-  * `dc_date(date_format=None)`, returns a unicode string corresponding to 
+  * `dc_date(date_format=None)`, returns a unicode string corresponding to
     the meta-data `Date` (update date by default)
 
-  * `dc_type(form='')`, returns a string to display the entity type by 
+  * `dc_type(form='')`, returns a string to display the entity type by
     specifying the preferred form (`plural` for a plural form)
--- a/doc/book/en/development/entityclasses/load-sort.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/development/entityclasses/load-sort.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -14,13 +14,13 @@
   `None` if we do not want to sort on the attribute given in the parameter.
   By default, the entities are sorted according to their creation date.
 
-* The class method `fetch_unrelated_order(attr, var)` is similar to the 
+* The class method `fetch_unrelated_order(attr, var)` is similar to the
   method `fetch_order` except that it is essentially used to control
-  the sorting of drop-down lists enabling relations creation in 
+  the sorting of drop-down lists enabling relations creation in
   the editing view of an entity.
 
 The function `fetch_config(fetchattrs, mainattr=None)` simplifies the
-definition of the attributes to load and the sorting by returning a 
+definition of the attributes to load and the sorting by returning a
 list of attributes to pre-load (considering automatically the attributes
 of `AnyEntity`) and a sorting function based on the main attribute
 (the second parameter if specified otherwisethe first attribute from
--- a/doc/book/en/development/migration/index.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/development/migration/index.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -23,11 +23,11 @@
 
   <version n° X.Y.Z>[_<description>]_<mode>.py
 
-in which : 
+in which :
 
 * X.Y.Z is the model version number to which the script enables to migrate.
 
-* *mode* (between the last "_" and the extension ".py") is used for 
+* *mode* (between the last "_" and the extension ".py") is used for
   distributed installation. It indicates to which part
   of the application (RQL server, web server) the script applies.
   Its value could be :
@@ -44,10 +44,10 @@
     (schema and data migration for example).
 
 Again in the directory `migration`, the file `depends.map` allows to indicate
-that for the migration to a particular model version, you always have to first 
+that for the migration to a particular model version, you always have to first
 migrate to a particular `CubicWeb` version. This file can contain comments (lines
 starting by `#`) and a dependancy is listed as follows: ::
-  
+
   <model version n° X.Y.Z> : <cubicweb version n° X.Y.Z>
 
 For example: ::
@@ -65,7 +65,7 @@
 * `config`, instance configuration
 
 * `interactive_mode`, boolean indicating that the script is executed in
-  an interactive mode or not 
+  an interactive mode or not
 
 * `appltemplversion`, application model version of the instance
 
@@ -87,7 +87,7 @@
 * `repo_schema`, instance persisting schema (e.g. instance schema of the
   current migration)
 
-* `newschema`, installed schema on the file system (e.g. schema of 
+* `newschema`, installed schema on the file system (e.g. schema of
   the updated model and cubicweb)
 
 * `sqlcursor`, SQL cursor for very rare cases where it is really
@@ -95,30 +95,30 @@
 
 * `repo`, repository object
 
-                        
+
 Schema migration
 ----------------
 The following functions for schema migration are available in `repository`
 scripts:
 
 * `add_attribute(etype, attrname, attrtype=None, commit=True)`, adds a new
-  attribute to an existing entity type. If the attribute type is not specified, 
+  attribute to an existing entity type. If the attribute type is not specified,
   then it is extracted from the updated schema.
-        
+
 * `drop_attribute(etype, attrname, commit=True)`, removes an attribute from an
   existing entity type.
 
 * `rename_attribute(etype, oldname, newname, commit=True)`, renames an attribute
-            
+
 * `add_entity_type(etype, auto=True, commit=True)`, adds a new entity type.
   If `auto` is True, all the relations using this entity type and having a known
   entity type on the other hand will automatically be added.
 
-* `drop_entity_type(etype, commit=True)`, removes an entity type and all the 
+* `drop_entity_type(etype, commit=True)`, removes an entity type and all the
   relations using it.
 
 * `rename_entity_type(oldname, newname, commit=True)`, renames an entity type
-            
+
 * `add_relation_type(rtype, addrdef=True, commit=True)`, adds a new relation
   type. If `addrdef` is True, all the relations definitions of this type will
   be added.
@@ -136,17 +136,17 @@
 
 * `synchronize_permissions(ertype, commit=True)`, synchronizes permissions on
   an entity type or relation type.
-        
+
 * `synchronize_rschema(rtype, commit=True)`, synchronizes properties and permissions
   on a relation type.
-                
+
 * `synchronize_eschema(etype, commit=True)`, synchronizes properties and persmissions
   on an entity type.
-    
+
 * `synchronize_schema(commit=True)`, synchronizes the persisting schema with the
-  updated schema (but without adding or removing new entity types, relations types 
+  updated schema (but without adding or removing new entity types, relations types
   or even relations definitions).
-        
+
 * `change_relation_props(subjtype, rtype, objtype, commit=True, **kwargs)`, changes
   properties of a relation definition by using the named parameters of the properties
   to change.
@@ -162,7 +162,7 @@
 The following functions for data migration are available in `repository` scripts:
 
 * `rql(rql, kwargs=None, cachekey=None, ask_confirm=True)`, executes an arbitrary RQL
-  query, either to interrogate or update. A result set object is returned.  
+  query, either to interrogate or update. A result set object is returned.
 
 * `add_entity(etype, *args, **kwargs)`, adds a nes entity type of the given
   type. The attribute and relation values are specified using the named and
@@ -176,8 +176,8 @@
 
 * `add_state(name, stateof, initial=False, commit=False, **kwargs)`, adds a new state
   in the workflow.
-    
-* `add_transition(name, transitionof, fromstates, tostate, requiredgroups=(), commit=False, **kwargs)`, 
+
+* `add_transition(name, transitionof, fromstates, tostate, requiredgroups=(), commit=False, **kwargs)`,
   adds a new transition in the workflow.
 
 You can find more details about workflows in the chapter :ref:`Workflow` .
@@ -185,7 +185,7 @@
 Configuration migration
 -----------------------
 
-The following functions for configuration migration are available in all 
+The following functions for configuration migration are available in all
 scripts:
 
 * `option_renamed(oldname, newname)`, indicates that an option has been renamed
@@ -200,8 +200,8 @@
 
 Others migration functions
 --------------------------
-Those functions are only used for low level operations that could not be 
-accomplished otherwise or to repair damaged databases during interactive 
+Those functions are only used for low level operations that could not be
+accomplished otherwise or to repair damaged databases during interactive
 session. They are available in `repository` scripts:
 
 * `sqlexec(sql, args=None, ask_confirm=True)`, executes an arbitrary SQL query
--- a/doc/book/en/development/testing/index.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/development/testing/index.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -28,11 +28,11 @@
 Email notifications tests
 -------------------------
 When running tests potentially generated e-mails are not really
-sent but is found in the list `MAILBOX` of module `cubicweb.devtools.apptest`. 
+sent but is found in the list `MAILBOX` of module `cubicweb.devtools.apptest`.
 This list is reset at each test *setUp* (by the setUp of classes `EnvBasedTC`
 and `RepositoryBasedTC`).
 
-	
+
 You can test your notifications by analyzing the contents of this list, which
 contains objects with two attributes:
 * `recipients`, the list of recipients
--- a/doc/book/en/development/webstdlib/autoform.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/development/webstdlib/autoform.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -2,7 +2,7 @@
 ---------------------------------------------------------------
 
 It is possible to manage attributes/relations in the simple or multiple
-editing form thanks to the following *rtags*: 
+editing form thanks to the following *rtags*:
 
 * `primary`, indicates that an attribute or a relation has to be
   inserted **in the simple or multiple editing forms**. In the case of
@@ -26,6 +26,6 @@
 * `generated`, indicates that an attribute is dynamically computed
   or other,  and that it should not be displayed in the editing form.
 
-If necessary, it is possible to overwrite the method  
+If necessary, it is possible to overwrite the method
 `relation_category(rtype, x='subject')` to dynamically compute
 a relation editing category.
--- a/doc/book/en/development/webstdlib/basetemplates.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/development/webstdlib/basetemplates.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -32,15 +32,15 @@
 Let's now move the search box in the header and remove the login form
 from the header. We'll show how to move it to the left column of the application.
 
-Let's say we do not want anymore the login menu to be in the header, but we 
+Let's say we do not want anymore the login menu to be in the header, but we
 prefer it to be in the left column just below the logo. As the left column is
-rendered by ``TheMainTemplate``, we will show how to do it in TheMainTemplate_. 
+rendered by ``TheMainTemplate``, we will show how to do it in TheMainTemplate_.
 
 First, to remove the login menu, we just need to comment out the display of the
 login component such as follows : ::
 
   class MyHTMLPageHeader(HTMLPageHeader):
-    
+
       def main_header(self, view):
           """build the top menu with authentification info and the rql box"""
           self.w(u'<table id="header"><tr>\n')
@@ -101,13 +101,13 @@
         if comp and comp.propval('visible'):
             comp.dispatch(w=self.w, view=view)
         self.w(u'</td>')
-        
+
         # logged user and help
         #self.w(u'<td>\n')
         #comp = self.vreg.select_component('loggeduserlink', self.req, self.rset)
         #comp.dispatch(w=self.w)
         #self.w(u'</td><td>')
-        
+
         # search box
         self.w(u'<td>')
         self.get_searchbox(view, 'left')
@@ -133,14 +133,14 @@
                 if box.id == 'search_box':
                     box.dispatch(w=self.w, view=view)
 
- 
+
 
 
 HTMLPageFooter
 --------------
 
 If you want to change the footer for example, look
-for HTMLPageFooter and override it in your views file as in : 
+for HTMLPageFooter and override it in your views file as in :
 ::
 
   form cubicweb.web.views.basetemplates import HTMLPageFooter
@@ -158,7 +158,7 @@
 ---------------
 .. _TheMainTemplate:
 
-TheMainTemplate is responsible for the general layout of the entire application. 
+TheMainTemplate is responsible for the general layout of the entire application.
 It defines the template of ``id = main`` that is used by the application.
 
 The default main template (`cubicweb.web.views.basetemplates.TheMainTemplate`)
@@ -168,7 +168,7 @@
 
 The rectangle containing `view.dispatch()` represents the area where the content
 view has to be displayed. The others represents sub-templates called to complete
-the page. A default implementation of those is provided in 
+the page. A default implementation of those is provided in
 `cubicweb.views.basetemplates`. You can, of course, overload those sub-templates
 to implement your own customization of the HTML page.
 
@@ -177,9 +177,9 @@
 
 * `__notemplate`, if present (whatever the value assigned), only the content view
   is returned
-* `__force_display`, if present and its value is not null, no navigation 
+* `__force_display`, if present and its value is not null, no navigation
   whatever the number of entities to display
-* `__method`, if the result set to render contains only one entity and this 
+* `__method`, if the result set to render contains only one entity and this
   parameter is set, it refers to a method to call on the entity by passing it
   the dictionary of the forms parameters, before going the classic way (through
   step 1 and 2 described juste above)
--- a/doc/book/en/development/webstdlib/baseviews.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/development/webstdlib/baseviews.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -13,26 +13,26 @@
 HTML views
 ~~~~~~~~~~
 *oneline*
-    This is a hyper linked *text* view. Similar to the `secondary` view, 
-    but called when we want the view to stand on a single line, or just 
+    This is a hyper linked *text* view. Similar to the `secondary` view,
+    but called when we want the view to stand on a single line, or just
     get a brief view. By default this view uses the
     parameter `MAX_LINE_CHAR` to control the result size.
 
 *secondary*
     This is a combinaison of an icon and a *oneline* view.
-    By default it renders the two first attributes of the entity as a 
+    By default it renders the two first attributes of the entity as a
     clickable link redirecting to the primary view.
 
 *incontext, outofcontext*
     Similar to the `secondary` view, but called when an entity is considered
-    as in or out of context. By default it respectively returns the result of 
-    `textincontext` and `textoutofcontext` wrapped in a link leading to 
+    as in or out of context. By default it respectively returns the result of
+    `textincontext` and `textoutofcontext` wrapped in a link leading to
     the primary view of the entity.
 
 List
 `````
 *list*
-    This view displays a list of entities by creating a HTML list (`<ul>`) 
+    This view displays a list of entities by creating a HTML list (`<ul>`)
     and call the view `listitem` for each entity of the result set.
 
 *listitem*
@@ -57,10 +57,10 @@
 Text views
 ~~~~~~~~~~
 *text*
-    This is the simplest text view for an entity. It displays the 
+    This is the simplest text view for an entity. It displays the
     title of an entity. It should not contain HTML.
 
 *textincontext, textoutofcontext*
     Similar to the `text` view, but called when an entity is considered out or
-    in context. By default it returns respectively the result of the 
+    in context. By default it returns respectively the result of the
     methods `.dc_title` and `.dc_long_title` of the entity.
--- a/doc/book/en/development/webstdlib/boxes.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/development/webstdlib/boxes.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -2,7 +2,7 @@
 ---------------------------------------------------------------
 
 *sidebox*
-  This view displays usually a side box of some related entities 
+  This view displays usually a side box of some related entities
   in a primary view.
 
 The action box
@@ -23,9 +23,9 @@
   to new entities and that we should display a link to create a new
   entity and link to it automatically
 
-  
+
 
-If necessary, it is possible to overwrite the method  
+If necessary, it is possible to overwrite the method
 `relation_mode(rtype, targettype, x='subject')` to dynamically
 compute a relation creation category.
 
--- a/doc/book/en/development/webstdlib/primary.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/development/webstdlib/primary.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -2,12 +2,10 @@
 ---------------------------------------------------------------
 
 The primary view of an entity is the view called by default when a single
-entity is in the result set and needs to be displayed. 
+entity is in the result set and needs to be displayed.
 
 This view is supposed to render a maximum of informations about the entity.
 
-
-
 Rendering methods and attributes for ``PrimaryView``
 ----------------------------------------------------
 
@@ -18,7 +16,7 @@
 its rendering method
 
 .. code-block:: python
-    
+
     class PrimaryView(EntityView):
         """the full view of an non final entity"""
         id = 'primary'
@@ -64,8 +62,8 @@
 
 The methods you want to modify while customizing a ``PrimaryView`` are:
 
-*render_entity_title(self, entity)* 
-    Renders the entity title based on the assumption that the method 
+*render_entity_title(self, entity)*
+    Renders the entity title based on the assumption that the method
     ``def content_title(self)`` is implemented for the given entity type.
 
 *render_entity_metadata(self, entity)*
@@ -77,7 +75,7 @@
     of type `Password` and `Bytes`.
 
 *content_navigation_components(self, context)*
-    This method is applicable only for entity type implementing the interface 
+    This method is applicable only for entity type implementing the interface
     `IPrevNext`. This interface is for entities which can be linked to a previous
     and/or next entity. This methods will render the navigation links between
     entities of this type, either at the top or at the bottom of the page
@@ -85,7 +83,7 @@
 
 *render_entity_relations(self, entity, siderelations)*
     Renders all the relations of the entity in the main section of the page.
-        
+
 *render_side_related(self, entity, siderelations)*
     Renders all the relations of the entity in a side box. This is equivalent
     to *render_entity_relations* in addition to render the relations
@@ -98,7 +96,7 @@
     Renders the attribute label next to the attribute value if set to True.
     Otherwise, does only display the attribute value.
 
-*show_rel_label* 
+*show_rel_label*
     Renders the relation label next to the relation value if set to True.
     Otherwise, does only display the relation value.
 
@@ -114,4 +112,4 @@
 overwrite ``render_entity`` as you might potentially loose the benefits of the side
 boxes handling.
 
-.. XXX talk about uicfg.rdisplay
\ No newline at end of file
+.. XXX talk about uicfg.rdisplay
--- a/doc/book/en/development/webstdlib/urlpublish.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/development/webstdlib/urlpublish.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -3,4 +3,4 @@
 ------------------------------------------------------------------------------------------------
 
 XXX feed me
-show how urls are mapped to selections and views and explain URLRewriting 
+show how urls are mapped to selections and views and explain URLRewriting
--- a/doc/book/en/index.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/index.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -13,9 +13,9 @@
 
 Its main features are:
 
-* an engine driven by the explicit :ref:`data model <DefineDataModel>` of the application, 
-* a query language name :ref:`RQL <RQL>` similar to W3C's SPARQL, 
-* a :ref:`selection+view <DefineViews>` mechanism for semi-automatic XHTML/XML/JSON/text generation, 
+* an engine driven by the explicit :ref:`data model <DefineDataModel>` of the application,
+* a query language name :ref:`RQL <RQL>` similar to W3C's SPARQL,
+* a :ref:`selection+view <DefineViews>` mechanism for semi-automatic XHTML/XML/JSON/text generation,
 * a library of reusable :ref:`components <cubes>` (data model and views) that fulfill common needs,
 * the power and flexibility of the Python_ programming language,
 * the reliability of SQL databases, LDAP directories, Subversion and Mercurial for storage backends.
--- a/doc/book/en/intro/concepts/index.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/intro/concepts/index.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -134,7 +134,7 @@
 see :ref:`yams.BASE_TYPES`
 
 Data level security is defined by setting permissions on entity and relation types.
-  
+
 A schema consist of parts detailed below.
 
 
@@ -215,7 +215,7 @@
 When no score is higher than the others, an exception is raised in development
 mode to let you know that the engine was not able to identify the view to
 apply. This error is silented in production mode and one of the objects with the
-higher score is picked. 
+higher score is picked.
 
 If no object has a positive score, ``NoSelectableObject`` exception is raised.
 
--- a/doc/book/en/intro/foundations/index.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/intro/foundations/index.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -16,18 +16,18 @@
 on how to select and how to display content. It allows to browse the knowledge
 database and to display the results with the best rendering according to
 the context.
-This interface flexibility gives back the user the control of the 
+This interface flexibility gives back the user the control of the
 rendering parameters that are usually reserved for developpers.
 
 
 We can list a couple of web applications developped with `CubicWeb`, an online
-public phone directory (see http://www.118000.fr/), a system for managing 
+public phone directory (see http://www.118000.fr/), a system for managing
 digital studies and simulations for a research lab, a tool for shared children
 babysitting (see http://garde-partagee.atoukontact.fr/), a tool to manage
 software developpment (see http://www.logilab.org), an application for
-managing museums collections (see 
+managing museums collections (see
 http://collections.musees-haute-normandie.fr/collections/), etc.
 
-In 2008, `CubicWeb` was ported for a new type of source : the datastore 
+In 2008, `CubicWeb` was ported for a new type of source : the datastore
 from `GoogleAppEngine`_.
 
--- a/doc/book/en/intro/index.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/intro/index.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -10,7 +10,7 @@
 discover the `CubicWeb` framework, provide a tutorial to get a quick
 overview of its features and list its key concepts.
 
- 
+
 .. toctree::
    :maxdepth: 2
 
--- a/doc/book/en/intro/tutorial/blog-less-ten-minutes.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/intro/tutorial/blog-less-ten-minutes.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -10,7 +10,7 @@
     cubicweb, cubicweb-dev, cubicweb-blog
 
 Creation and initialization of your application by running::
-    
+
     cubicweb-ctl create blog myblog
 
 Your application is now ready to go::
@@ -21,6 +21,6 @@
 
 As a developper, you'll want to know more about how to develop new
 cubes and cutomize the look of your application and this is what we
-talk about now. 
+talk about now.
 
 
--- a/doc/book/en/intro/tutorial/components.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/intro/tutorial/components.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -69,13 +69,13 @@
 Once you modified your data model, you need to synchronize the
 database with your model. For this purpose, `CubicWeb` provides
 a very useful command ``cubicweb-ctl shell blogdemo`` which
-launches an interactive migration Python shell. (see 
+launches an interactive migration Python shell. (see
 :ref:`cubicweb-ctl` for more details))
 As you modified a relation from the `BlogEntry` schema,
 run the following command:
 ::
 
   synchronize_rschema('BlogEntry')
-  
-You can now start your application and add comments to each 
+
+You can now start your application and add comments to each
 `BlogEntry`.
--- a/doc/book/en/intro/tutorial/conclusion.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/intro/tutorial/conclusion.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -10,8 +10,8 @@
 to your needs.
 
 More than a web application, many features are available to
-extend your application, for example: RSS channel integration 
-(:ref:`rss`), hooks (:ref:`hooks`), support of sources such as 
-Google App Engine (:ref:`gaecontents`) and lots of others to 
+extend your application, for example: RSS channel integration
+(:ref:`rss`), hooks (:ref:`hooks`), support of sources such as
+Google App Engine (:ref:`gaecontents`) and lots of others to
 discover through our book.
 
--- a/doc/book/en/intro/tutorial/create-cube.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/intro/tutorial/create-cube.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -5,7 +5,7 @@
 
 The packages ``cubicweb`` and ``cubicweb-dev`` installs a command line tool
 for `CubicWeb` called ``cubicweb-ctl``. This tool provides a wide range of
-commands described in details in :ref:`cubicweb-ctl`. 
+commands described in details in :ref:`cubicweb-ctl`.
 
 Once your `CubicWeb` development environment is set up, you can create a new
 cube::
@@ -13,7 +13,7 @@
   cubicweb-ctl newcube blog
 
 This will create in the cubes directory (``/path/to/forest/cubes`` for Mercurial
-installation, ``/usr/share/cubicweb/cubes`` for debian packages installation) 
+installation, ``/usr/share/cubicweb/cubes`` for debian packages installation)
 a directory named ``blog`` reflecting the structure described in :ref:`cubesConcepts`.
 
 .. _DefineDataModel:
@@ -36,11 +36,11 @@
     title = String(required=True, fulltextindexed=True, maxsize=256)
     publish_date = Date(default='TODAY')
     content = String(required=True, fulltextindexed=True)
-    entry_of = SubjectRelation('Blog', cardinality='?*') 
+    entry_of = SubjectRelation('Blog', cardinality='?*')
 
 
 A Blog has a title and a description. The title is a string that is
-required by the class EntityType and must be less than 50 characters. 
+required by the class EntityType and must be less than 50 characters.
 The description is a string that is not constrained.
 
 A BlogEntry has a title, a publish_date and a content. The title is a
@@ -61,7 +61,7 @@
 --------------------
 
 To use this cube as an application and create a new instance named ``blogdemo``, do::
-  
+
   cubicweb-ctl create blog blogdemo
 
 
@@ -86,12 +86,12 @@
 .. image:: ../../images/login-form.png
 
 
-Once authenticated, you can start playing with your application 
+Once authenticated, you can start playing with your application
 and create entities.
 
 .. image:: ../../images/blog-demo-first-page.png
 
-Please notice that so far, the `CubicWeb` franework managed all aspects of 
+Please notice that so far, the `CubicWeb` franework managed all aspects of
 the web application based on the schema provided at first.
 
 
@@ -142,10 +142,10 @@
 to edit the blog entry you just created, except that the form now has
 another section with a combobox titled ``add relation``. Chose
 ``entry_of`` in this menu and a second combobox appears where you pick
-``MyLife``. 
+``MyLife``.
 
 You could also have, at the time you started to fill the form for a
-new entity BlogEntry, hit ``Apply`` instead of ``Validate`` and the 
+new entity BlogEntry, hit ``Apply`` instead of ``Validate`` and the
 combobox titled ``add relation`` would have showed up.
 
 
@@ -181,11 +181,11 @@
 The view selection principle
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-A view is defined by a Python class which includes: 
-  
+A view is defined by a Python class which includes:
+
   - an identifier (all objects in `CubicWeb` are entered in a registry
     and this identifier will be used as a key)
-  
+
   - a filter to select the result sets it can be applied to
 
 A view has a set of methods complying
@@ -196,15 +196,15 @@
 
 A view is applied on a `result set` which contains a set of
 entities we are trying to display. `CubicWeb` uses a selector
-mechanism which computes for each available view a score: 
+mechanism which computes for each available view a score:
 the view with the highest score is then used to display the given `result set`.
-The standard library of selectors is in 
+The standard library of selectors is in
 ``cubicweb.common.selector`` and a library of methods used to
 compute scores is available in ``cubicweb.vregistry.vreq``.
 
 It is possible to define multiple views for the same identifier
 and to associate selectors and filters to allow the application
-to find the best way to render the data. 
+to find the best way to render the data.
 
 For example, the view named ``primary`` is the one used to display
 a single entity. We will now show you how to customize this view.
@@ -213,7 +213,7 @@
 View customization
 ~~~~~~~~~~~~~~~~~~
 
-If you wish to modify the way a `BlogEntry` is rendered, you will have to 
+If you wish to modify the way a `BlogEntry` is rendered, you will have to
 overwrite the `primary` view defined in the module ``views`` of the cube
 ``cubes/blog/views.py``.
 
@@ -244,7 +244,7 @@
         self.w(u'<h1>%s</h1>' % entity.title)
         self.w(u'<p>published on %s</p>' % entity.publish_date.strftime('%Y-%m-%d'))
         self.w(u'<p>%s</p>' % entity.content)
-        
+
         # display relations
         siderelations = []
         if self.main_related_section:
@@ -261,7 +261,7 @@
    :alt: modified primary view
 
 
-The above source code defines a new primary view for ``BlogEntry``. 
+The above source code defines a new primary view for ``BlogEntry``.
 
 Since views are applied to result sets and result sets can be tables of
 data, we have to recover the entity from its (row,col)-coordinates.
--- a/doc/book/en/intro/tutorial/index.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/intro/tutorial/index.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -9,7 +9,7 @@
 object-oriented design.
 
 A `cube` is a component that includes a model defining the data types and a set of
-views to display the data. 
+views to display the data.
 
 An application is a `cube`, but usually an application is built by assembling
 a few smaller cubes.
--- a/doc/book/en/intro/tutorial/maintemplate.rst	Fri Jun 19 09:19:27 2009 +0200
+++ b/doc/book/en/intro/tutorial/maintemplate.rst	Fri Jun 19 20:38:32 2009 +0200
@@ -11,8 +11,8 @@
 .. image:: ../../images/lax-book.06-main-template-layout.en.png
 
 In this section we will demonstrate a change in one of the main
-interesting template from the three you will look for, 
-that is to say, the HTMLPageHeader, the HTMLPageFooter 
+interesting template from the three you will look for,
+that is to say, the HTMLPageHeader, the HTMLPageFooter
 and the TheMainTemplate.
 
 
@@ -24,14 +24,14 @@
 a Python module ``blog.views.templates`` to keep it organized.
 In this module you will have to import the parent class you are
 interested as follows: ::
-  
+
   from cubicweb.web.views.basetemplates import HTMLPageHeader, \
                                     HTMLPageFooter, TheMainTemplate
 
 and then create your sub-class::
 
   class MyBlogHTMLPageHeader(HTMLPageHeader):
-      ...  
+      ...
 
 Customize header
 `````````````````
@@ -47,7 +47,7 @@
 .. code-block :: python
 
   class MyBlogHTMLPageHeader(HTMLPageHeader):
-    
+
       def main_header(self, view):
           """build the top menu with authentification info and the rql box"""
           self.w(u'<table id="header"><tr>\n')
@@ -115,10 +115,10 @@
 different cases. We are now about to go through it and cutomize entirely
 our application.
 
-TheMainTemplate is responsible for the general layout of the entire application. 
-It defines the template of ``id = main`` that is used by the application. Is 
+TheMainTemplate is responsible for the general layout of the entire application.
+It defines the template of ``id = main`` that is used by the application. Is
 also defined in ``cubicweb/web/views/basetemplates.py`` another template that can
-be used based on TheMainTemplate called SimpleMainTemplate which does not have 
+be used based on TheMainTemplate called SimpleMainTemplate which does not have
 a top section.
 
 .. image:: ../../images/lax-book.06-simple-main-template.en.png
--- a/etwist/__init__.py	Fri Jun 19 09:19:27 2009 +0200
+++ b/etwist/__init__.py	Fri Jun 19 20:38:32 2009 +0200
@@ -1,4 +1,4 @@
-""" CW - nevow/twisted client 
+""" CW - nevow/twisted client
 
 :organization: Logilab
 :copyright: 2001-2009 LOGILAB S.A. (Paris, FRANCE), license is LGPL v2.
--- a/goa/overrides/toolsutils.py	Fri Jun 19 09:19:27 2009 +0200
+++ b/goa/overrides/toolsutils.py	Fri Jun 19 20:38:32 2009 +0200
@@ -24,7 +24,7 @@
     :param config_file: path to the configuration file
 
     :rtype: dict
-    :return: a dictionary with specified values associated to option names 
+    :return: a dictionary with specified values associated to option names
     """
     config = current = {}
     try:
--- a/goa/skel/main.py	Fri Jun 19 09:19:27 2009 +0200
+++ b/goa/skel/main.py	Fri Jun 19 20:38:32 2009 +0200
@@ -41,7 +41,7 @@
 from cubicweb.wsgi.handler import CubicWebWSGIApplication
 application = CubicWebWSGIApplication(config, vreg=vreg)
 
-# main function so this handler module is cached 
+# main function so this handler module is cached
 def main():
     from wsgiref.handlers import CGIHandler
     CGIHandler().run(application)
--- a/goa/test/pytestconf.py	Fri Jun 19 09:19:27 2009 +0200
+++ b/goa/test/pytestconf.py	Fri Jun 19 20:38:32 2009 +0200
@@ -6,7 +6,7 @@
 
 import cubicweb
 # remove 'mx' modules imported by cubicweb
-for modname in sys.modules.keys(): 
+for modname in sys.modules.keys():
     if modname.startswith('mx'):
         sys.modules.pop(modname)
 
--- a/md5crypt.py	Fri Jun 19 09:19:27 2009 +0200
+++ b/md5crypt.py	Fri Jun 19 20:38:32 2009 +0200
@@ -85,7 +85,7 @@
         i = i >> 1
     final = md5.md5(ctx).digest()
     # The following is supposed to make
-    # things run slower. 
+    # things run slower.
     # my question: WTF???
     for i in xrange(1000):
         ctx1 = ''
--- a/misc/cwzope/cwzope.py	Fri Jun 19 09:19:27 2009 +0200
+++ b/misc/cwzope/cwzope.py	Fri Jun 19 20:38:32 2009 +0200
@@ -5,7 +5,7 @@
 :contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr
 :license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses
 """
-from AccessControl import getSecurityManager 
+from AccessControl import getSecurityManager
 
 from cubicweb.dbapi import connect, Connection, Cursor
 from cubicweb.common.utils import ResultSet, ResultSetIterator, ResultSetRow, Entity
--- a/misc/migration/postcreate.py	Fri Jun 19 09:19:27 2009 +0200
+++ b/misc/migration/postcreate.py	Fri Jun 19 20:38:32 2009 +0200
@@ -43,4 +43,4 @@
 eid = add_entity('CWPermission', name=PERM_USE_TEMPLATE_FORMAT,
                  label=_('use template languages'))
 rql('SET X require_group G WHERE G name "managers", X eid %(x)s',
-    {'x': eid}, 'x')    
+    {'x': eid}, 'x')
--- a/server/__init__.py	Fri Jun 19 09:19:27 2009 +0200
+++ b/server/__init__.py	Fri Jun 19 20:38:32 2009 +0200
@@ -120,7 +120,7 @@
     handler.cmd_add_entity('CWProperty', pkey=u'system.version.cubicweb',
                            value=unicode(config.cubicweb_version()))
     for cube in config.cubes():
-        handler.cmd_add_entity('CWProperty', 
+        handler.cmd_add_entity('CWProperty',
                                pkey=u'system.version.%s' % cube.lower(),
                                value=unicode(config.cube_version(cube)))
     # yoo !
--- a/server/schemaserial.py	Fri Jun 19 09:19:27 2009 +0200
+++ b/server/schemaserial.py	Fri Jun 19 20:38:32 2009 +0200
@@ -136,7 +136,7 @@
                                {'x': etype, 'n': netype})
             # XXX should be donne as well on sqlite based sources
             if not etype in OLD_SCHEMA_TYPES and \
-               (getattr(dbhelper, 'case_sensitive', False) 
+               (getattr(dbhelper, 'case_sensitive', False)
                 or etype.lower() != netype.lower()):
                 session.system_sql('ALTER TABLE %s%s RENAME TO %s%s' % (
                     sqlutils.SQL_PREFIX, etype, sqlutils.SQL_PREFIX, netype))
--- a/web/test/unittest_form.py	Fri Jun 19 09:19:27 2009 +0200
+++ b/web/test/unittest_form.py	Fri Jun 19 20:38:32 2009 +0200
@@ -181,7 +181,7 @@
                 return 'ascii'
             def form_field_format(self, field):
                 return 'text/plain'
-        file = self.add_entity('File', name=u"pouet.txt", data_encoding=u'UTF-8', 
+        file = self.add_entity('File', name=u"pouet.txt", data_encoding=u'UTF-8',
                                data=Binary('new widgets system'))
         form = EFFForm(self.req, redirect_path='perdu.com', entity=file)
         self.assertTextEquals(self._render_entity_field('data', form),
--- a/web/test/unittest_views_apacherewrite.py	Fri Jun 19 09:19:27 2009 +0200
+++ b/web/test/unittest_views_apacherewrite.py	Fri Jun 19 20:38:32 2009 +0200
@@ -12,14 +12,14 @@
 class ApacheURLRewriteTC(TestCase):
 
     def test(self):
-        class MyAppRules(ApacheURLRewrite): 
+        class MyAppRules(ApacheURLRewrite):
             rules = [
                 RewriteCond('logilab\.fr', match='host',
                             rules=[('/(.*)', r'http://www.logilab.fr/\1')],
                             action='redirect'),
                 RewriteCond('(www)\.logilab\.fr', match='host', action='stop'),
                 RewriteCond('/(data|json)/', match='path', action='stop'),
-                RewriteCond('(?P<cat>.*)\.logilab\.fr', match='host', 
+                RewriteCond('(?P<cat>.*)\.logilab\.fr', match='host',
                             rules=[('/(.*)', r'/m_%(cat)s/\1')]),
                 ]
         urlrewriter = MyAppRules()
--- a/web/views/basecomponents.py	Fri Jun 19 09:19:27 2009 +0200
+++ b/web/views/basecomponents.py	Fri Jun 19 20:38:32 2009 +0200
@@ -30,7 +30,7 @@
     id = 'rqlinput'
     property_defs = VISIBLE_PROP_DEF
     visible = False
-    
+
     def call(self, view=None):
         if hasattr(view, 'filter_box_context_info'):
             rset = view.filter_box_context_info()[0]
@@ -46,7 +46,7 @@
 <input type="text" id="rql" name="rql" value="%s"  title="%s" tabindex="%s" accesskey="q" class="searchField" />
 <input type="submit" value="" class="rqlsubmit" tabindex="%s" />
 </fieldset>
-''' % (not self.propval('visible') and 'hidden' or '', 
+''' % (not self.propval('visible') and 'hidden' or '',
        self.build_url('view'), html_escape(rql), req._('full text or RQL query'), req.next_tabindex(),
         req.next_tabindex()))
         if self.req.search_state[0] != 'normal':
--- a/web/views/schema.py	Fri Jun 19 09:19:27 2009 +0200
+++ b/web/views/schema.py	Fri Jun 19 20:38:32 2009 +0200
@@ -64,7 +64,7 @@
     title = _('in memory entity schema')
     main_related_section = False
     skip_rels = SKIPPED_RELS
-    tabs = [_('cwetype-schema-text'), _('cwetype-schema-image'), 
+    tabs = [_('cwetype-schema-text'), _('cwetype-schema-image'),
             _('cwetype-schema-permissions'), _('cwetype-workflow')]
     default_tab = 'cwetype-schema-text'
 
@@ -133,22 +133,22 @@
         entity = self.entity(row, col)
         self.w(u'<h2>%s</h2>' % _('Add permissions'))
         rset = self.req.execute('Any P WHERE X add_permission P, '
-                                'X eid %(x)s', 
+                                'X eid %(x)s',
                                 {'x': entity.eid})
         self.wview('outofcontext', rset, 'null')
         self.w(u'<h2>%s</h2>' % _('Read permissions'))
         rset = self.req.execute('Any P WHERE X read_permission P, '
-                                'X eid %(x)s', 
+                                'X eid %(x)s',
                                 {'x': entity.eid})
         self.wview('outofcontext', rset, 'null')
         self.w(u'<h2>%s</h2>' % _('Update permissions'))
         rset = self.req.execute('Any P WHERE X update_permission P, '
-                                'X eid %(x)s', 
+                                'X eid %(x)s',
                                 {'x': entity.eid})
         self.wview('outofcontext', rset, 'null')
         self.w(u'<h2>%s</h2>' % _('Delete permissions'))
         rset = self.req.execute('Any P WHERE X delete_permission P, '
-                                'X eid %(x)s', 
+                                'X eid %(x)s',
                                 {'x': entity.eid})
         self.wview('outofcontext', rset, 'null')