doc/changes/3.15.rst
author Denis Laxalde <denis.laxalde@logilab.fr>
Thu, 21 Mar 2019 14:33:54 +0100
changeset 12530 9d88e1177c35
parent 10504 3755cd64fff8
permissions -rw-r--r--
Remove Twisted web server Twisted web server is not used anymore and has been superseded by pyramid many years ago. Furthermore, our usage is not compatible with Python 3. So we drop the "etwist" sub-package. As a consequence, "all-in-one" configuration type gets dropped as it was Twisted-specific. We resurrect it in cubicweb/pyramid/config.py by only keeping options used by the "pyramid". Similarly, we introduce a AllInOneCreateHandler in cubicweb/pyramid/pyramidctl.py that is basically the one that lived in cubicweb/etwist/twctl.py and is used to create the "all-in-one" instance. Added a TODO here about "pyramid.ini" that could be generated at the end of bootstrap() method. In cubicweb/devtools/httptest.py, CubicWebServerTC is now equivalent to CubicWebWsgiTC and the latter is dropped.

3.15 (12/04/2012)
=================

New functionnalities
--------------------

* Add Zmq server, based on the cutting edge ZMQ (http://www.zeromq.org/) socket
  library.  This allows to access distant instance, in a similar way as Pyro.

* Publish/subscribe mechanism using ZMQ for communication among cubicweb
  instances.  The new zmq-address-sub and zmq-address-pub configuration variables
  define where this communication occurs.  As of this release this mechanism is
  used for entity cache invalidation.

* Improved WSGI support. While there is still some caveats, most of the code
  which was twisted only is now generic and allows related functionalities to work
  with a WSGI front-end.

* Full undo/transaction support : undo of modification has eventually been
  implemented, and the configuration simplified (basically you activate it or not
  on an instance basis).

* Controlling HTTP status code used is not much more easier :

  - `WebRequest` now has a `status_out` attribut to control the response status ;

  - most web-side exceptions take an optional ``status`` argument.


API changes
-----------

* The base registry implementation has been moved to a new
  `logilab.common.registry` module (see #1916014). This includes code from :

  * `cubicweb.vreg` (the whole things that was in there)
  * `cw.appobject` (base selectors and all).

  In the process, some renaming was done:

  * the top level registry is now `RegistryStore` (was `VRegistry`), but that
    should not impact cubicweb client code ;

  * former selectors functions are now known as "predicate", though you still use
    predicates to build an object'selector ;

  * for consistency, the `objectify_selector` decoraror has hence be renamed to
    `objectify_predicate` ;

  * on the CubicWeb side, the `selectors` module has been renamed to
    `predicates`.

  Debugging refactoring dropped the more need for the `lltrace` decorator.  There
  should be full backward compat with proper deprecation warnings.  Notice the
  `yes` predicate and `objectify_predicate` decorator, as well as the
  `traced_selection` function should now be imported from the
  `logilab.common.registry` module.

* All login forms are now submitted to <app_root>/login. Redirection to requested
  page is now handled by the login controller (it was previously handle by the
  session manager).

* `Publisher.publish` has been renamed to `Publisher.handle_request`. This
  method now contains generic version of logic previously handled by
  Twisted. `Controller.publish` is **not** affected.


Unintrusive API changes
-----------------------

* New 'ldapfeed' source type, designed to replace 'ldapuser' source with
  data-feed (i.e. copy based) source ideas.

* New 'zmqrql' source type, similar to 'pyrorql' but using ømq instead of Pyro.

* A new registry called `services` has appeared, where you can register
  server-side `cubicweb.server.Service` child classes. Their `call` method can be
  invoked from a web-side AppObject instance using new `self._cw.call_service`
  method or a server-side one using `self.session.call_service`. This is a new
  way to call server-side methods, much cleaner than monkey patching the
  Repository class, which becomes a deprecated way to perform similar tasks.

* a new `ajax-func` registry now hosts all remote functions (i.e. functions
  callable through the `asyncRemoteExec` JS api). A convenience `ajaxfunc`
  decorator will let you expose your python function easily without all the
  appobject standard boilerplate. Backward compatibility is preserved.

* the 'json' controller is now deprecated in favor of the 'ajax' one.

* `WebRequest.build_url` can now take a __secure__ argument. When True cubicweb
  try to generate an https url.


User interface changes
----------------------

A new 'undohistory' view expose the undoable transactions and give access to undo
some of them.