[schema] load schema from modules names instead of directories
Introspect cubicweb, cubes and apphome using pkgutil to generate the full list
of modules names for loading the schema.
Keep historical behavior and check if source .py file exists if a module is
found using python bytecode file (.pyc and .pyo)
Loading schema from apphome require apphome to be present in sys.path and that
"schema" module resolve to a file located in apphome.
Update migraction tests to explicitely update sys.path when loading schema from
different apps, use a contextmanager for this so it's more readable.
Require updated logilab-common and yams
3.18 (10/01/2014)
=================
The migration script does not handle sqlite nor mysql instances.
New functionalities
-------------------
* add a security debugging tool
(see `#2920304 <http://www.cubicweb.org/2920304>`_)
* introduce an `add` permission on attributes, to be interpreted at
entity creation time only and allow the implementation of complex
`update` rules that don't block entity creation (before that the
`update` attribute permission was interpreted at entity creation and
update time)
* the primary view display controller (uicfg) now has a
`set_fields_order` method similar to the one available for forms
* new method `ResultSet.one(col=0)` to retrive a single entity and enforce the
result has only one row (see `#3352314 <https://www.cubicweb.org/ticket/3352314>`_)
* new method `RequestSessionBase.find` to look for entities
(see `#3361290 <https://www.cubicweb.org/ticket/3361290>`_)
* the embedded jQuery copy has been updated to version 1.10.2, and jQuery UI to
version 1.10.3.
* initial support for wsgi for the debug mode, available through the new
``wsgi`` cubicweb-ctl command, which can use either python's builtin
wsgi server or the werkzeug module if present.
* a ``rql-table`` directive is now available in ReST fields
* cubicweb-ctl upgrade can now generate the static data resource directory
directly, without a manual call to gen-static-datadir.
API changes
-----------
* not really an API change, but the entity permission checks are now
systematically deferred to an operation, instead of a) trying in a
hook and b) if it failed, retrying later in an operation
* The default value storage for attributes is no longer String, but
Bytes. This opens the road to storing arbitrary python objects, e.g.
numpy arrays, and fixes a bug where default values whose truth value
was False were not properly migrated.
* `symmetric` relations are no more handled by an rql rewrite but are
now handled with hooks (from the `activeintegrity` category); this
may have some consequences for applications that do low-level database
manipulations or at times disable (some) hooks.
* `unique together` constraints (multi-columns unicity constraints)
get a `name` attribute that maps the CubicWeb contraint entities to
corresponding backend index.
* BreadCrumbEntityVComponent's open_breadcrumbs method now includes
the first breadcrumbs separator
* entities can be compared for equality and hashed
* the ``on_fire_transition`` predicate accepts a sequence of possible
transition names
* the GROUP_CONCAT rql aggregate function no longer repeats duplicate
values, on the sqlite and postgresql backends
Deprecation
-----------
* ``pyrorql`` sources have been deprecated. Multisource will be fully dropped
in the next version. If you are still using pyrorql, switch to ``datafeed``
**NOW**!
* the old multi-source system
* `find_one_entity` and `find_entities` in favor of `find`
(see `#3361290 <https://www.cubicweb.org/ticket/3361290>`_)
* the `TmpFileViewMixin` and `TmpPngView` classes (see
`#3400448 <https://www.cubicweb.org/ticket/3400448>`_)
Deprecated Code Drops
---------------------
* ``ldapuser`` have been dropped; use ``ldapfeed`` now
(see `#2936496 <http://www.cubicweb.org/2936496>`_)
* action ``GotRhythm`` was removed, make sure you do not
import it in your cubes (even to unregister it)
(see `#3093362 <http://www.cubicweb.org/3093362>`_)
* all 3.8 backward compat is gone
* all 3.9 backward compat (including the javascript side) is gone
* the ``twisted`` (web-only) instance type has been removed