[notification] avoid leaking cnxsets (closes #3243810)
When sending notifications, we get each recipient as either an email
address or a CWUser. In the latter case, we create a temporary session
for that user and use it to send the mail. However, if we later decided
to not send the mail after all, we'd leak the session and its cnxset.
Add a try block inside the loop to make sure the temporary sessions are
closed properly.
What's new in CubicWeb 3.16?
============================
New functionalities
--------------------
* Add a new dataimport store (`SQLGenObjectStore`). This store enables a fast
import of data (entity creation, link creation) in CubicWeb, by directly
flushing information in SQL. This may only be used with PostgreSQL, as it
requires the 'COPY FROM' command.
API changes
-----------
* Orm: `set_attributes` and `set_relations` are unified (and
deprecated) in favor of `cw_set` that works in all cases.
* db-api/configuration: all the external repository connection information is
now in an URL (see `#2521848 <http://www.cubicweb.org/2521848>`_),
allowing to drop specific options of pyro nameserver host, group, etc and fix
broken `ZMQ <http://www.zeromq.org/>`_ source. Configuration related changes:
* Dropped 'pyro-ns-host', 'pyro-instance-id', 'pyro-ns-group' from the client side
configuration, in favor of 'repository-uri'. **NO MIGRATION IS DONE**,
supposing there is no web-only configuration in the wild.
* Stop discovering the connection method through `repo_method` class attribute
of the configuration, varying according to the configuration class. This is
a first step on the way to a simpler configuration handling.
DB-API related changes:
* Stop indicating the connection method using `ConnectionProperties`.
* Drop `_cnxtype` attribute from `Connection` and `cnxtype` from
`Session`. The former is replaced by a `is_repo_in_memory` property
and the later is totaly useless.
* Turn `repo_connect` into `_repo_connect` to mark it as a private function.
* Deprecate `in_memory_cnx` which becomes useless, use `_repo_connect` instead
if necessary.
* the "tcp://" uri scheme used for `ZMQ <http://www.zeromq.org/>`_
communications (in a way reminiscent of Pyro) is now named
"zmqpickle-tcp://", so as to make room for future zmq-based lightweight
communications (without python objects pickling).
* Request.base_url gets a `secure=True` optional parameter that yields
an https url if possible, allowing hook-generated content to send
secure urls (e.g. when sending mail notifications)
* Dataimport ucsvreader gets a new boolean `ignore_errors`
parameter.
Unintrusive API changes
-----------------------
* Drop of `cubicweb.web.uicfg.AutoformSectionRelationTags.bw_tag_map`,
deprecated since 3.6.
User interface changes
----------------------
* The RQL search bar has now some auto-completion support. It means
relation types or entity types can be suggested while typing. It is
an awesome improvement over the current behaviour !
* The `action box` associated with `table` views (from `tableview.py`)
has been transformed into a nice-looking series of small tabs; it
means that the possible actions are immediately visible and need not
be discovered by clicking on an almost invisible icon on the upper
right.
* The `uicfg` module has moved to web/views/ and ui configuration
objects are now selectable. This will reduce the amount of
subclassing and whole methods replacement usually needed to
customize the ui behaviour in many cases.
* Remove changelog view, as neither cubicweb nor known
cubes/applications were properly feeding related files.
Other changes
-------------
* 'pyrorql' sources will be automatically updated to use an URL to locate the source
rather than configuration option. 'zmqrql' sources were broken before this change,
so no upgrade is needed...
* Debugging filters for Hooks and Operations have been added.
* Some cubicweb-ctl commands used to show the output of `msgcat` and
`msgfmt`; they don't anymore.