doc/book/devrepo/devcore/reqbase.rst
author Philippe Pepiot <philippe.pepiot@logilab.fr>
Tue, 07 Feb 2017 13:47:03 +0100
changeset 11955 f85ec84355db
parent 10491 c67bcee93248
permissions -rw-r--r--
Fix possible double import of cubes modules When cubes using the new layout are imported with 'cubicweb_<cube>' and with 'cubes.<cube>', the same module is imported twice. Handle this by adding 'cubes.<cube>' to sys.modules when importing from 'cubicweb_<cube>'. Move load_module() to a sub class _CubesLoader to share informations computed in find_modules(). Don't handle subpackages in _CubesImporter and rely on normal import machinery instead. Add a test and use unittest from cubicweb.devtools.testlib which resolve to unittest2 on PY2 with assertLogs() method.

Request and ResultSet methods
-----------------------------

Those are methods you'll find on both request objects and on
repository session.

Request methods
~~~~~~~~~~~~~~~

`URL handling`:

* `build_url(*args, **kwargs)`, returns an absolute URL based on the
  given arguments. The *controller* supposed to handle the response,
  can be specified through the first positional parameter (the
  connection is theoretically done automatically :).

`Data formatting`:

* `format_date(date, date_format=None, time=False)` returns a string for a
  date time according to instance's configuration

* `format_time(time)` returns a string for a date time according to
  instance's configuration

`And more...`:

* `tal_render(template, variables)`, renders a precompiled page template with
  variables in the given dictionary as context


Result set methods
~~~~~~~~~~~~~~~~~~

* `get_entity(row, col)`, returns the entity corresponding to the data position
  in the *result set*

* `complete_entity(row, col, skip_bytes=True)`, is equivalent to `get_entity` but
  also call the method `complete()` on the entity before returning it