Laurent Wouters <lwouters@cenotelie.fr> [Wed, 25 Apr 2018 15:29:25 +0200] rev 12308
[utils] Fixes compatiblity of QueryCache with expected dict interface
QueryCache is expected to mimick the interface of the dict built-in. The current
__iter__ implementation breaks this expectation by iterating over key, value
pairs instead of only the keys.
This changeset fixes this issue by changing the __iter__ implementation to
iterate over the keys in the cache and providing an implementation of the items
method with a contract identical to the dict build-in (return a copy of the key-
value pairs within the dictionary as a list).
David Douard <david.douard@logilab.fr> [Tue, 24 Apr 2018 15:21:18 +0200] rev 12307
[test/statsd] add tests for cubicweb.statsd_logger
Laurent Wouters <lwouters@cenotelie.fr> [Tue, 24 Apr 2018 17:16:44 +0200] rev 12306
[utils] Implements __iter__ on QueryCache
In order to be able to iterate over the currently cached queries (so that they
may be inspected and invalidated), this changeset implementes __iter__ on
QueryCache.
Laurent Wouters <lwouters@cenotelie.fr> [Tue, 24 Apr 2018 17:30:43 +0200] rev 12305
[utils] Added new get method to QueryCache
The new get method enables the retrieval an item in the cache by specifying a
default value so that in the absence of an item for the key, the default value
is returned.
David Douard <david.douard@logilab.fr> [Tue, 24 Apr 2018 15:21:38 +0200] rev 12304
[test/rset] typo
Laurent Wouters <lwouters@cenotelie.fr> [Tue, 24 Apr 2018 11:22:17 +0200] rev 12303
[utils] Fixed issue in clearing QueryCache
When trying to add an item in a full QueryCache, the cache tries to make room.
It tries to list and remove non-permanent items with a transient counter (number
of times it has been requested). However, there is a pathological case where
items could be non-permanent but still not have a transient counter because they
were added, but never requested. In some cases, the full cache could be flushed,
including the permanent items.
This changeset attempts to fix this issue by only dropping the non-permanent
items that did not hav a transient counter.
David Douard <david.douard@logilab.fr> [Mon, 13 Nov 2017 16:08:58 +0100] rev 12302
[statsd] add a statsd_timethis context manager
This context manager allows to report to statsd the execution time of any
piece of code, without the need for it to be a function or a method, like::
def some_function():
do_stuff()
with statsd_timethis('some context message'):
do_that()
ensure_this()
David Douard <david.douard@logilab.fr> [Tue, 24 Apr 2018 14:16:14 +0200] rev 12301
[test/rset] add tests for ResultSet.first() and .last() methods
David Douard <david.douard@logilab.fr> [Tue, 24 Apr 2018 14:04:43 +0200] rev 12300
[test/rset] flake8
David Douard <david.douard@logilab.fr> [Tue, 24 Apr 2018 13:55:20 +0200] rev 12299
[rset] update copyright
David Douard <david.douard@logilab.fr> [Thu, 21 Sep 2017 16:29:26 +0200] rev 12298
[rset] add convenient first() and last() methods on ResultSet
These make life easier for the heavy user of the CW shell.
Also aliases entities() with all(); so we end with a pretty consistant set:
- .one()
- .first()
- .last()
- .all()
Laurent Wouters <lwouters@cenotelie.fr> [Tue, 24 Apr 2018 10:19:42 +0200] rev 12297
[server] Fixed issue with the adapters cache of a cloned EditedEntity
The adapters' cache of the entity within an EditedEntity used to be copied along
the entity itself during a cloning operation of the EditedEntity. This raises
an issue when the adapters' cache is not empty and contains cached values
linking to transaction-specific data (or the transaction itself). This prevents
the clone EditedEntity being used in a transaction outside the one that created
it.
This change resets the adapters' cache of the new copy so that no cached value
remain. The new copy can then be used in a new transaction afterwards.
David Douard <david.douard@logilab.fr> [Thu, 12 Oct 2017 15:22:00 +0200] rev 12296
[rql2sql] fix handling of the ORDERBY clause when the aggregation function is "embedded"
ie. a situation like:
Any X GROUPBY X ORDERBY COUNT(Y) WHERE ...
works fine since the aggregation function (COUNT) if the first one, whereas a situation like the proposed test:
Any X GROUPBY X ORDERBY ABS(COUNT(Y)) WHERE ...
failed due to the fact we only checked the top aggratation function (ABS).
Closes #17108671
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 23 Apr 2018 15:23:55 +0200] rev 12295
Merge 3.26
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 23 Apr 2018 13:50:50 +0200] rev 12294
[pkg] Set version to 3.27.0.dev0
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 23 Apr 2018 15:19:19 +0200] rev 12293
Added tag 3.26.3, debian/3.26.3-1 for changeset f7067be5f69c
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 23 Apr 2018 15:17:36 +0200] rev 12292
[pkg] Version 3.26.3
David Douard <david.douard@logilab.fr> [Mon, 16 Oct 2017 12:10:19 +0200] rev 12291
[utils/statsd_logger] flake8
David Douard <david.douard@logilab.fr> [Wed, 13 Dec 2017 01:23:39 +0100] rev 12290
[source/native] do NOT do anything with fti if do_fti is False
ensure no fti related process is done when fti is disabled on a db source.
David Douard <david.douard@logilab.fr> [Thu, 19 Apr 2018 15:55:33 +0200] rev 12289
[test/web] flake8 unittest_propertysheet.py
David Douard <david.douard@logilab.fr> [Thu, 19 Apr 2018 12:47:48 +0200] rev 12288
[web] fix css file generation permission bug (closes #17143773)
PropertySheet.process_resource() uses mkstemp which enforce a 0600 mode on the
output file, which is not the file permission we want for css files.
David Douard <david.douard@logilab.fr> [Thu, 19 Apr 2018 12:45:24 +0200] rev 12287
[test/web] add a test for css generation file permission problem (related to #17143773)
David Douard <david.douard@logilab.fr> [Thu, 19 Apr 2018 15:05:55 +0200] rev 12286
[doc] include the 3.26 changelog in changes's index
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 22 Mar 2018 14:45:11 +0100] rev 12285
[server] set PGPASSWORD when running pg commands for backup and restore
For db-dump (implied by upgrade) and db-restore with postgres with non-trusted
authentication, the db password is asked by pg tools (pg_dump, pg_restore,
createdb, dropdb).
Avoid this behavior by setting the PGPASSWORD environment variable when
database driver is postgres and db-password is set in sources file.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 22 Mar 2018 14:17:40 +0100] rev 12284
Added tag 3.26.2, centos/3.26.2-1, debian/3.26.2-1 for changeset 9bee3134d304
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 22 Mar 2018 13:53:33 +0100] rev 12283
[pkg] Version 3.26.2
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 22 Mar 2018 10:02:59 +0100] rev 12282
Flake8 cubicweb/web/webctl.py
Having the file flake8 clean makes it easier to catch basic programming
errors (e.g. name errors).
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 22 Mar 2018 10:04:54 +0100] rev 12281
[web] Add missing import of _DATA_DIR in webctl
Followup on d84bc85f7f70 which introduced usage of this name in
_datadirs method of GenStaticDataDirMixIn but resulted into a NameError
at runtime and makes migrations crash.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 15 Feb 2018 11:04:20 +0100] rev 12280
[server] unicode → text_type in utils
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 15 Feb 2018 11:02:48 +0100] rev 12279
[views] unicode → six.text_type in views/authentication.py
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 05 Mar 2018 10:32:58 +0100] rev 12278
[pyramid] Recreate CWSession entity when eid no longer exists
As noted in comment, it might occur that we receive a "sessioneid" from
a valid cookie while respective CWSession got dropped (typical case is
db being recreated while users got preserved). In such case, we just
recreate the CWSession entity as if it did not exist.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 22 Feb 2018 16:22:55 +0100] rev 12277
Added tag 3.26.1, debian/3.26.1-1, centos/3.26.1-1 for changeset 027676243aaa
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 22 Feb 2018 16:13:45 +0100] rev 12276
[pkg] Drop non-existant files from MANIFEST.in
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 21 Feb 2018 18:07:24 +0100] rev 12275
[pkg] Version 3.26.1
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 15 Feb 2018 14:20:11 +0100] rev 12274
[test] Drop an unused function in cwconfig tests
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 15 Feb 2018 14:19:15 +0100] rev 12273
[cwconfig] Always use "sys.prefix" to determine installation prefix
We drop all legacy logic implemented in _find_prefix() which now happens
to be buggy since we cleaned up setup.py in 3.26 (noticeably because
virtualenv is no longer properly detected).
Closes #17132990.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 15 Feb 2018 10:55:49 +0100] rev 12272
[cwconfig] Look for migration scripts directory relatively to code
Thus getting rid of the last piece of data in "shared" directory.
As a consequence, we can drop data_files from __pkginfo__.py.
Related to #17132990.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 15 Feb 2018 10:26:55 +0100] rev 12271
[pkg] Get rid of "pydir" in __pkginfo__.py
Nothing uses this.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 15 Feb 2018 10:24:13 +0100] rev 12270
[pkg] Get rid of "shared" data
These are not used anymore per previous changesets.
Related to #17132990.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 15 Feb 2018 10:11:16 +0100] rev 12269
[cwconfig] Drop shared_dir method
There's no more users of this method.
Related to #17132990.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 15 Feb 2018 13:45:06 +0100] rev 12268
[config] Avoid relying on shared_dir method when possible
From 3.26, some "data" directories (like web/data and i18n or wdoc) are
installed along with CubicWeb in site packages. So we can retrieve them
relatively to the module that needs them (namely "cubicweb" for "i18n"
and "cubicweb.web" for "web/data" and "wdoc"). Reason for doing this is
that "share_dir()" is not working when cubicweb is installed in
"develop" mode and we are about to drop this method.
Related to #17132990.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 15 Feb 2018 14:11:18 +0100] rev 12267
[test] Add a test for WebConfiguration.locate_all_files()
We are going to change the implementation, make sure there's no
regression.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 15 Feb 2018 09:35:48 +0100] rev 12266
[cwconfig] Get rid of _forced_mode global
And compute CubicWebNoAppConfiguration.mode within the class namespace.
Related to #17132990.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 15 Feb 2018 09:27:15 +0100] rev 12265
[cwconfig] Get rid of CWDEV
This is in preparation of a fix for #17132990 to cleanup legacy (and
probably no longer working) behaviors.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 15 Feb 2018 09:26:02 +0100] rev 12264
[doc] Set release date of 3.26
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 06 Feb 2018 16:31:49 +0100] rev 12263
[web] Fix UnboundLocalError about "exc" in ajax controller
Introduced in 159dce89a145.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 07 Feb 2018 09:20:32 +0100] rev 12262
Link to "3.26" docs in README
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 01 Feb 2018 09:49:56 +0100] rev 12261
Added tag 3.26.0, debian/3.26.0-1, centos/3.26.0-1 for changeset 199851fcddd4
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 01 Feb 2018 09:24:52 +0100] rev 12260
[pkg] Version 3.26.0
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 25 Jan 2018 12:10:48 +0100] rev 12259
[pkg] Version 3.26.0rc0
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 12 Jan 2018 10:17:10 +0100] rev 12258
[schema] Define a decorator to handle methods override
There is a number of external classes (from yams/rql) methods overridden
"by hand" in cubicweb/schema.py. Define a single decorator to factor out
the pattern. It handles specifying the method name (to avoid conflict
with the local namespace) and passing the original method to the new
definition when needed.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 24 Jan 2018 12:03:21 +0100] rev 12257
[pkg] Use setuptools.find_packages()
We drop the custom get_packages() function in setup.py that used to look
for test files (not discovered automatically since test directories are
not packages) and replace it by explicit entries in MANIFEST.in.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 24 Jan 2018 11:51:23 +0100] rev 12256
[pkg] Drop SandboxViolation verification cracking
Dunno what this is for. Let's see if this work without.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 24 Jan 2018 11:43:13 +0100] rev 12255
[pkg] Drop custom "install_data" command
Not sure what this is for, the comment mentions "egg" directory, but
this is quite likely an old hack that should be unnecessary when using a
recent setuptools.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 24 Jan 2018 11:40:12 +0100] rev 12254
[pkg] Replace custom "scripts" handling by a setuptools entry points
http://setuptools.readthedocs.io/en/latest/setuptools.html#automatic-script-creation
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 24 Jan 2018 13:30:50 +0100] rev 12253
Set a default value for arguments of cubicweb.cwctl:run()
This will help making a console script entry point from this to get rid
of the custom installation of scripts in setup.py.
Accordingly, update all calls of this function.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 24 Jan 2018 11:34:44 +0100] rev 12252
[pkg] Drop custom install_lib command and use include_package_data instead
The custom install_lib command appeared to be meant to install package
data, as declared in __pkginfo__.py. Let's rely on setuptools'
include_package_data[1] option to handle this.
[1]: http://setuptools.readthedocs.io/en/latest/setuptools.html#including-data-files
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 24 Jan 2018 14:45:26 +0100] rev 12251
[py3] Replace a unicode() occurrence in workflow views
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 24 Jan 2018 14:41:01 +0100] rev 12250
[py3] Drop a couple of unicode() in devtools.testlib
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 24 Jan 2018 14:38:39 +0100] rev 12249
[py3] Alias long to int in pgstore tests
The previous version of handling PY2/PY3 made flake8 complain.
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 12 Jan 2018 11:02:52 +0100] rev 12248
Merge with 3.25
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 12 Jan 2018 10:56:30 +0100] rev 12247
Added tag 3.25.4, centos/3.25.4-1, debian/3.25.4-1 for changeset b8567725c473
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 12 Jan 2018 10:48:34 +0100] rev 12246
[pkg] Version 3.25.4
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 12 Dec 2017 11:17:25 +0100] rev 12245
[pyramid] Let logging be configured through .ini file
We do not initialize logging in CubicWebPyramidConfiguration thus
preventing logging to be started with cubicweb's configuration. On the
other hand, any logging configuration defined in ``development.ini``
file will be loaded by whatever start the instance using this file (i.e.
pserve, gunicorn, etc.). The benefit is that logging can now be
configured per "qualified name" in this file (i.e. one can easily set
the DEBUG level for the application cube while keeping all dependencies'
level to WARNING). In the development.ini template, we add logger
configurations for "logilab" and "cubicweb" qualified names (along with
those of the application cube).
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 01 Dec 2017 11:19:19 +0100] rev 12244
Disable pytest's logs reporting
CubicWeb already prints captured logs in stderr upon test failure, so we
get them twice. Until we fix our logging management, disabling pytest
capture and restore brings the output level back to sanity.
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 01 Dec 2017 11:12:09 +0100] rev 12243
[pyramid] Do not issue security warnings in test mode
When some session or authtk secret is missing in Pyramid settings,
scary "!! SECURITY WARNING !!" are issued. This is arguably pointless in
tests. So disable them in this case.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 30 Nov 2017 11:55:35 +0100] rev 12242
[ssplanner] Prevent execution of write queries involving computed relations
Previously, setting a computed relation upon entity creation or
modification (using the ORM or an RQL query) would usually fail with an
operational error in the backend ("no such table"). However, under some
mysterious circumstances (like passing a string as value in cw_set for a
computed relation), the RQL to SQL transformation would simply drop the
clause.
To prevent this to happen, we add a check for computed relation before
adding a relation to an execution plan. This check raises a QueryError.
It happens in several places:
* in querier.InsertPlan.add_relation_def() (called from several places
in ssplanner steps) for INSERT queries,
* in ssplanner.UpdateStep.execute() for SET queries and,
* in ssplanner.SSplanner.build_delete_plan() for DELETE queries.
Tests added to unittest_querier.py because unittest_sslplanner.py looked
inappropriate (it has only unit tests) and the former already had a
NonRegressionTC class.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 30 Nov 2017 11:00:01 +0100] rev 12241
[querier] Expand 'rdef' argument in InsertPlan.add_relation_def()
Expand the 'rdef' tuple to improve readability. The 'rtype' value is not
used at the moment, but will in the next changeset.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 30 Nov 2017 11:20:58 +0100] rev 12240
[server] Use dict.setdefault() instead of if/else in repo.glob_add_relations()
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 03 Nov 2017 15:26:32 +0100] rev 12239
[cleanup] Fix some flake8 errors
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 03 Nov 2017 15:26:04 +0100] rev 12238
[test] Stop using lgc.testlib in unittest_migractions
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 03 Nov 2017 16:31:59 +0100] rev 12237
[test] Drop no more used "maxeid" based deletion in BaseQuerierTC and derived tests
This is probably only necessary for QuerierTC itself, move it there and drop
incantation from other derived classes to deactivate this feature.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 15 Sep 2017 16:31:33 +0200] rev 12236
[rql2sql/test] Remove dead setUpModule tearDownModule
they are overwritten a few lines below , hence this code is dead and not
necessary for test success, drop it.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 15 Sep 2017 16:25:51 +0200] rev 12235
[rql2sql/test] Move base class from repotest to unittest_rql2sql
It's only used there, so move it closer to its usage.
Along the way, stop using lgc.testlib.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 15 Sep 2017 16:59:13 +0200] rev 12234
[rql2sql/test] Set maxDiff to None to see full diffs
this is usually useful to compare SQL strings
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 15 Sep 2017 17:01:04 +0200] rev 12233
[rql2sql] Use string_type instead of unicode for py3k support
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 29 Nov 2017 17:08:05 +0100] rev 12232
[gcdebug] Only ignore weakref.WeakKeyDictionary class on Python 2
From Python 3.5, this class fails isinstance check with the following
error:
::
cls = <class 'weakref.WeakKeyDictionary'>, instance = <functools._lru_list_elem object at 0x7f4331859a48>
def __instancecheck__(cls, instance):
"""Override for isinstance(instance, cls)."""
# Inline the cache checking
> subclass = instance.__class__
E AssertionError: [<class 'AttributeError'> in gc] 'functools._lru_list_elem' object has no attribute '__class__'
/usr/lib/python3.5/abc.py:181: AssertionError
I have no clue why this happens, but it makes
cubicweb.web.test.test_views.AutomaticWebTest.test_startup_views fail on
Python 3.5. So only consider this class for Python 2.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 29 Nov 2017 16:14:57 +0100] rev 12231
[wsgi] Convert "code" passed to WSGIResponse as integer
WSGIResponse is passed a Request.status_out in
CubicWebWSGIApplication._render(), which, starting from Python 3.5, is
an instance of HTTPStatus.
However, webtest still expects a 3-digits value as status string.
Fortunately, calling int() on an HTTPStatus works.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 29 Nov 2017 15:50:07 +0100] rev 12230
[test] Add a "version" to cubicweb_mycube/__pkginfo__.py
Starting from Python 3.5, unittest_cwctl.py::CubicWebCtlTC.test_list()
would fail without this.
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 28 Nov 2017 15:43:55 +0100] rev 12229
[tox] Use py3 environment instead of py34
The former would select any Python 3 interpreter.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 03 Nov 2017 15:02:03 +0100] rev 12228
[querier] Allow usage of computed relation into WHERE clause of write queries
This used to crash because of an attempt to access unexisting table.
Closes #17113286
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 03 Nov 2017 12:27:51 +0100] rev 12227
[cleanup] Fix some flake8 errors
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 30 Oct 2017 09:37:20 +0100] rev 12226
[tox] Bump flake8 version to 3.5
Previous patches fixed new errors raised in this version.
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 30 Oct 2017 09:32:26 +0100] rev 12225
[pyramid] Get rid of a couple of bare "except"
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 30 Oct 2017 09:28:52 +0100] rev 12224
[pyramid] Get rid of a bare "except" in UpdateLoginTimeAuthenticationPolicy
Also refactor a bit the method to restrict the try/except block to the
code for which we actually want to catch an exception (i.e. the
cnx.execute() + cnx.commit()).
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 30 Oct 2017 09:25:22 +0100] rev 12223
[web] Avoid bare "except" in ConcatFilesHandler.concat_cached_filepath()
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 30 Oct 2017 09:16:07 +0100] rev 12222
[test] Use ignore_errors=True in shutil.rmtree instead of try/except/pass
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 30 Oct 2017 09:13:02 +0100] rev 12221
[server] Get rid of a bare except in sqlutils
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 30 Oct 2017 09:14:36 +0100] rev 12220
[server] Do not use logilab.common.date.strptime in sqlutils
This function is aliased to datetime.datetime.strptime() and exists only
for compatibility with Python <= 2.5 which we no longer support.
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 30 Oct 2017 09:08:35 +0100] rev 12219
[dataimport/test] Ignore flake8 error E741 in test_pgstore.py
This error is about "l" being an ambiguous variable name. Here, it's
arguably acceptable.
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 30 Oct 2017 09:18:20 +0100] rev 12218
[test] Avoid ambiguous variable name "l" in unittest_req.py
This is an error (E741) from flake8 3.5.
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 30 Oct 2017 09:04:34 +0100] rev 12217
[tox] Bound flake8 version to >=3.4, <3.5
The code base is not clean with 3.5, so keep using 3.4 in *stable*
branches.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 24 Oct 2017 09:50:29 +0200] rev 12216
[pyramid] set waitress url_scheme to https when base-url scheme is https
See https://docs.pylonsproject.org/projects/waitress/en/latest/#using-behind-a-reverse-proxy
Since we do not configure trusted_proxy waitress ignore X-Forwarded-Proto
header and may generate http urls (pyramid request.url) when the instance is
behind a https reverse proxy. This cause cubicweb-signredrequest to not work
with since it rely on the url (including scheme).
Set url_scheme to 'https' when CubicWeb base-url scheme is https as a
workaround.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 17 Oct 2017 11:59:55 +0200] rev 12215
Added tag 3.25.3, centos/3.25.3-1, debian/3.25.3-1 for changeset d238badfc268
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 17 Oct 2017 11:58:35 +0200] rev 12214
[pkg] version 3.25.3
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 06 Oct 2017 15:14:18 +0200] rev 12213
[uicfg] Fix autoform_section rtags wrt derivation
cw 3.25 introduced the 'derived rtags' feature, but missed that
`autoform_section` implementation was overriding several methods where this was
implemented in the base class. The following problems are tested and fixed:
* during init, we should not attempt to call `_initfunc_step2` if there is some
parent,
* but we should handle expansion of wildcard ('*' used as subject or object of a
tag) since this is handled during init step for this class, unlike others
which handle this in `get` method (i.e. at lookup time),
* fix overrided `get` method to consider parent rtag if any.
Closes #17107020
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 06 Oct 2017 10:00:36 +0200] rev 12212
[rtags] Enhance repr of rtags
* we don't care of the class, the registry id is enough (never seen a case of
sub-classing)
* add the module from which the rtag is coming as well as parent rtag if any.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 06 Oct 2017 14:23:40 +0200] rev 12211
[web/test] Use bare unittest main instead of lgc.main
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 06 Oct 2017 14:24:35 +0200] rev 12210
[cleanup] Fix some flake8 errors
and drop upper bound of copyright along the way.
autoform module is not added to flake8-ok-files since there are some remaining
errors to be handled, but that's still a start.
Olivier Giorgis <olivier.giorgis@logilab.fr> [Fri, 15 Sep 2017 14:14:46 +0200] rev 12209
[doc] Update the advanced tutorial
to follow the new style layout of cubes among others.
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 12 Sep 2017 15:05:22 +0200] rev 12208
[views] Respond with 400 Bad Request in case of validation error in ajax request
Previously, we raised a plain RemoteCallFailed without a status code, in which
case it defaults to "500 Internal Server Error". Now, for validation
errors, we issue a 400 Bad Request since these are clearly client errors.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr> [Fri, 06 Oct 2017 11:45:52 +0200] rev 12207
[web] fix session /cnx mix in anonymized_request
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 06 Oct 2017 16:59:10 +0200] rev 12206
[test] Pin some test dependencies
We currently have CI failures because cubes used as test dependencies have been
updated to new-style cube layout. To avoid this, pin them to previous released.
Those dependencies should be removed but in the mean time this should be enough
(and backported in all active branches).
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 06 Oct 2017 16:59:10 +0200] rev 12205
[test] Pin some test dependencies
We currently have CI failures because cubes used as test dependencies have been
updated to new-style cube layout. To avoid this, pin them to previous released.
Those dependencies should be removed but in the mean time this should be enough
(and backported in all active branches).
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 05 Oct 2017 17:24:29 +0200] rev 12204
[web/form] Relax condition for non-translating field names
we should test true condition instead of None, so if one raise a ValidationError
using an empty string as 'no-field' marker instead of None, we don't get the PO
file header that gettext likes to return when one attempt to translate an empty
string.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 12 Sep 2017 09:49:30 +0200] rev 12203
Merge with 3.25 branch
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 26 Sep 2017 10:46:43 +0200] rev 12202
[entities] Restore dc_ methods instead of __getattr__ proxy
In 8de62610cea2, a __getattr__ proxy was introduced to handle compatibility
with dc_* methods being called on entity instances instead of through the
IDublinCore adapter. Unfortunately, __getattr__ does not play well with
super() and since the latter is often used by, we here restore all dc_ methods
with an explicit proxy to the adapter. More verbose but should work.
Closes #17103999.
Samuel Trégouët <samuel.tregouet@logilab.fr> [Wed, 13 Sep 2017 17:19:42 +0200] rev 12201
[pkg] add missing unittest2 dependency to spec file
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 12 Sep 2017 09:48:02 +0200] rev 12200
Added tag 3.25.2, debian/3.25.2-1, centos/3.25.2-1 for changeset 5010381099f1
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 11 Sep 2017 16:19:00 +0200] rev 12199
[pkg] Prepare version 3.25.2
Arthur Lutz <arthur.lutz@logilab.fr> [Thu, 22 Jun 2017 16:39:48 +0200] rev 12198
[cubicweb/pyramid] take into account two ignored CORS configuration items from all-in-one.conf
David Douard <david.douard@logilab.fr> [Tue, 04 Apr 2017 10:50:49 +0200] rev 12197
[cwctl] upgrade: do delete the static data dir if verbosity is 0 (closes #17069749)
Jérôme Roy <jerome.roy@logilab.fr> [Fri, 28 Jul 2017 08:35:01 +0000] rev 12196
[doc] Fix option_*() migration commands in doc
The function signature in the doc is not the same as in the code. Also option_removed should probably be removed from the doc since the function in migration.py is empty
David Douard <david.douard@logilab.fr> [Wed, 03 May 2017 21:58:48 +0200] rev 12195
[massive store] ensure the cwmassive_initialized table is deleted if needed
This may be necessary if a previous import did badly crached, leaving the
cwmassive_initialized behind.
David Douard <david.douard@logilab.fr> [Wed, 03 May 2017 21:55:41 +0200] rev 12194
[server] fix deserialize_schema to handle properly pg schema (closes 17076486)
Postgres behaviour is to look first for a table in the configured schema then
fall back to 'public' if no table is found.
This must be implemented in deserialize_schema when listing existing tables
to check for computed relations (cw_cwcomputedrtype) otherwise computed
relations may not work when using non-default pg schema.
David Douard <david.douard@logilab.fr> [Wed, 10 May 2017 15:07:18 +0200] rev 12193
[server/utils] update passlib API to 1.7 (closes #17054805)
while keeping bw-compat with 1.6 - 2.7 is not available for all distributions,
e.g. jessie.
The dependancy has been bumped in 6186cd15a46d because of a change in
bc9d901cb9e6. We may easily use the appropriate method depending on the version
installed.
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 10 Jul 2017 11:43:18 +0200] rev 12192
Merge with 3.25 branch
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 10 Jul 2017 11:41:20 +0200] rev 12191
Added tag 3.25.1, debian/3.25.1-1, centos/3.25.1-1 for changeset 5fe62978801a
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 10 Jul 2017 11:23:45 +0200] rev 12190
[pkg] Version 3.25.1
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 21 Apr 2017 14:01:46 +0200] rev 12189
[facets] Fix disappearance of navtop component on facet filtering
which is because facets are replacing the whole #pageContent div, while this one
contains other stuff than the view:
* a type selector component that should be dropped for a while,
* a computed title,
* the page navigation.
Then the view content itself is in a #contentmain div. The thing is that the
navigation should be rebuilded on filtering (this is not the case for other
bullets in the list above). This is currently handled specifically in the
ajaxcontroller (except for the type selector which will disappear... who said it
should be dropped at once?).
So to fix this we:
* put the page navigation into the "contentmain" div
* don't replace anymore "pageContent" but "contentmain"
After that we can even remove from the ajax controller the code that
reimplements title handling similarly to the main template.
Notice the part that changes the main template has to be ported to squareui.
Closes #17074195
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 19 Jun 2017 18:15:28 +0200] rev 12188
[web] Set response status to 400 when appropriate in ajax controller
When this is clearly a client error, set status to 400. Otherwise, keep the
default value for RemoteCallFailed (status=500).
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 19 Jun 2017 18:00:26 +0200] rev 12187
[web] Only log exceptions in debug mode in Ajax controllers
When we raise a RemoteCallFailed error (erroneously turned into a '500
Internal Server Error' response, but that's another business). In production
environment, we do not want to log the exception in most cases where it's
actually a client error. So only log the exception in debug mode.
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 06 Jun 2017 12:20:17 +0200] rev 12186
[pyramid] Only expose 'cubicweb.bwcompat' setting for "all-in-one" configuration type
The "pyramid" instance configuration does not work with "cubiwceb.bwcompat"
mode (on purpose). Yet, having the setting exposed in development.ini file
(generate by `cubicweb-ctl create --config pyramid <cube> <instance>` command)
is misleading and we want to remove it.
Thus, we only query this setting when cubicweb configuration is "all-in-one" and
drop the setting line from templated development.ini file. If the option is
found and True for any other configuration type, we issue a user warning (and
ignore the option).
Yann Voté <yann.vote@logilab.fr> [Thu, 27 Apr 2017 10:16:39 +0200] rev 12185
[migration] Only drop moved table entities if it does not exists
For very old instances (namely docaster), this table has never been created.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 05 May 2017 17:57:10 +0200] rev 12184
[web/views] delete: show composite entities in predictible order
Iterate over relations type in alphabetical order, so the order is predictible
dans does not depend on PYTHONHASHSEED.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 28 Apr 2017 09:49:37 +0200] rev 12183
[req] fix find() generating non-rewritable rql on non final relations
When filtering on a relation, find() was generating rql like
'Any X WHERE X is ETYPE, X relation EID' which work without being rewritten (it
should probably not), but when applying some rewrite (eg. permissions) it raise
in rqlrewrite code.
def _use_orig_term(self, snippet_varname, term):
...
> self.rewritten[key] = term.name
E AttributeError: 'Constant' object has no attribute 'name'
Generate valid rql instead 'Any X WHERE X is ETYPE, X relation Y, Y eid EID'.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Wed, 26 Apr 2017 15:04:40 +0200] rev 12182
[req] raise KeyError instead of AssertionError in req.find()
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 25 Apr 2017 17:31:24 +0200] rev 12181
[req] use format() instead of % substitution
For readability, avoid escaping using %% and use format() instead.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 25 Apr 2017 17:11:18 +0200] rev 12180
[test] make assertions on exception message
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 25 Apr 2017 17:10:16 +0200] rev 12179
[req] clearer exception message
Display what attribute trigger the NotImplementedError
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 21 Apr 2017 10:29:44 +0200] rev 12178
[cleanup] Drop useless fake function
actually not necessary.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 21 Apr 2017 10:29:07 +0200] rev 12177
[cleanup] Use plain unittest main in unittest_rqlrewrite
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 25 Apr 2017 17:35:29 +0200] rev 12176
[cleanup] Fix flake8 error unittest_rqlrewrite
hard one!
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 20 Apr 2017 18:05:06 +0200] rev 12175
[rqlrewrite] Enhance detection of need for Exists node
We actually want one only if this is not a (`And` / `Or`) binary tree of `Not` or
`Exists` nodes, so write a recursive function to tell so.
Related to #17074119
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 21 Apr 2017 09:57:04 +0200] rev 12174
[rqlrewrite] Fix rewrite on ambiguities introduced by NOT relation or "is IN" type restriction
When some inserted RQL snippet generate more solutions than the original RQL,
the rewriter attempt to duplicate the snippet for each newly introduced
solution. There are though some cases where we do not want this behaviour in
case of ambiguities introduced by:
* NOT(X relation Y) expression, since it won't be
equivalent to NOT(X relation Y1, Y1 is Type1) OR NOT(X relation Y2, Y2 is
Type2) ;
* EXISTS(X relation Y, Y is IN (Type1, Type2) expression, since it's not
actually necessary to split an explicitly introduced ambiguity (and it crash
if we attempt to do so, so...).
In test, we've to modify the `rewrite()` function because in the newly
introduced test we need the same constraint to be applied to two variables in
the original query, and this was not supported before.
Notice the generated RQL in test is still *NOT CORRECT* "(EXISTS(NOT EXISTS() OR
EXISTS(...))", or at least isn't optimal. This will be fixed in a forthcoming
changeset.
Related to #17074119
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 19 Apr 2017 09:05:10 +0200] rev 12173
[dataimport] Add explanation about why external entities can't be inserted
By default after the import processed the importer indicates which external
entities can't be inserted because they are missing dependency data (other
entities, used in inlined or mandatory relations).
It usually helps there to find out which extids / relations are missing, so add
this to the log.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 20 Apr 2017 17:22:36 +0200] rev 12172
[querier] Fix typo in Unauthorized message exception
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 19 Apr 2017 15:09:31 +0200] rev 12171
[massive store] Ensure temporary metadata table get dropped
even if there is some integrity errors while inserting entity values or setting
back index/constraints, or any other errors. In case of exception, rollback to
ensure we're not committing undesired intermediate state.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 19 Apr 2017 10:09:25 +0200] rev 12170
[test] Stop using lgc.testlib.unittest_main in dataimport's test_sqlgenstore.py
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 19 Apr 2017 10:08:59 +0200] rev 12169
[test/cleanup] Cleanup flake8 errors in dataimport's test_sqlgenstore
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 19 Apr 2017 10:18:47 +0200] rev 12168
[pkg] Fix path error in flake8-ok-files
'sources' is a subpackage of 'server'.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 19 Apr 2017 15:16:10 +0200] rev 12167
[cleanup] Fix undetected pep8 error
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 19 Apr 2017 11:10:58 +0200] rev 12166
[doc] Set release date of 3.25 in changelog
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 14 Apr 2017 17:17:12 +0200] rev 12165
[cwconfig] load appobjects subpackages recursively
This is a regression appeared in 3.25.0. Appobjects (entities, views etc)
subpackages should be loaded recursively, this is the historical behavior,
relevant code is in logilab.common.registry._toload_info().
To keep historical behavior schema subpackages should not be loaded, relevant
code is in yams.reader.get_schema_files().
We may want to have a consistent behavior later on...
Closes #17073706.
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 14 Apr 2017 15:40:49 +0200] rev 12164
[pkg] Set version to 3.26.0.dev0
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 14 Apr 2017 15:40:15 +0200] rev 12163
Merge with 3.25 branch
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 14 Apr 2017 15:32:17 +0200] rev 12162
Added tag 3.25.0, debian/3.25.0-1, centos/3.25.0-1 for changeset dacc5b168e29
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 14 Apr 2017 15:15:27 +0200] rev 12161
[pkg] Version 3.25.0
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 13 Apr 2017 15:04:45 +0200] rev 12160
[entities] Fix backward compat of IDublinCore adapter wrt dc_long_title
`entity.dc_long_title()` used to fallback to `dc_title()`, and most entity types
were relying on this, thus only implementing the later.
Since introduction of the IDublinCore adapter, if one call
`entity.dc_long_title()` on an entity that only implements `dc_title()`, it will retrieve
the adapter which will then call its own `title()` method instead of the
`dc_title()` method of the entity as expected.
Fix this by calling instead `entity.dc_title()` which will eventually kick in the
backward compat layer if necessary.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 13 Apr 2017 13:57:32 +0200] rev 12159
[web] Do not try to rmtree symlinks in rmtreecontent()
There is a symlink in data directory (created by generate_static_dir() method)
and trying to rmtree() it will fail with an OSError. So we unlink() it
instead.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 13 Apr 2017 12:20:30 +0200] rev 12158
[pkg] Version 3.25.0rc3
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 12 Apr 2017 16:14:46 +0200] rev 12157
[test] Stop using lgc.testlib
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 12 Apr 2017 16:14:10 +0200] rev 12156
Fix some flake8 errors
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 12 Apr 2017 16:12:51 +0200] rev 12155
[sources] Turn classmethod into standard method
No need for a class method and easier to get proper logger including source's
name.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 12 Apr 2017 16:11:56 +0200] rev 12154
[test] Add some tests for hooks.syncsources
for parts which are not located in some source's check_config / check_urls
method.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 12 Apr 2017 16:10:57 +0200] rev 12153
[sources] Check source's url attribute value on creation/modification
Similarly as for config. Now, ldap source validation is properly done there
instead of at initialization time.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 12 Apr 2017 16:07:25 +0200] rev 12152
[sources] Check sources configuration is fine on creation/modification
Reintroduce usage of 'source.check_config' which had almost disappeared, as
well as tests for the currently detected errors.
Part of the system source specific checking done in syncsources reimplemented in
a specific check_config implementation.
Tests are dispatched among ldap / datafeed and syncsources tests but are not
strictly correctly located (notably syncsources tests behaviour of the native
source's check_config).
The system source url checking part which disappears from syncsources will be
reintroduced in a follow-up.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 12 Apr 2017 17:26:27 +0200] rev 12151
[test] Fix option name in ldap wrong group test
which wasn't actually testing what it expected (and nothing guarantee it does now, but that's another story).
Fixing this will avoid failure once we properly check the configuration.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 12 Apr 2017 15:55:26 +0200] rev 12150
[sources] Enhance prototype of check_conf_dict
* mark it private
* explicit name
* update docstring
Private function is still called from syncsources but this will be updated in a
follow-up.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 12 Apr 2017 15:38:32 +0200] rev 12149
[sources] Stop translating validation error
this should be done later in the web ui, where lang is properly set.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 12 Apr 2017 15:49:05 +0200] rev 12148
[sources] Simplify source's init method
Only call it when enabled instead of giving a boolean flag indicating whether it
is or not (which were not correctly considered).
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 12 Apr 2017 14:54:10 +0200] rev 12147
[server] Deprecate Repository.sources_by_eid
It's not used anymore within cubicweb itself.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 05 Apr 2017 14:59:09 +0200] rev 12146
[server] Add source_by_eid and source_by_uri methods to repository
Most of the times we only need to retrieve one source (either by uri or eid)
and querying sources_by_eid and sources_by_uri properties on repository just
for one item is costly. So these methods query what's needed. We issue a
ValueError (instead of KeyError for sources_by_{eid,uri} dict) in case the key
is not found.
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 04 Apr 2017 17:43:56 +0200] rev 12145
[hooks] Remove list() around repo.sources_by_uri
There's no need to convert it as a list anymore since sources_by_uri is a
property and will not be modified.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 05 Apr 2017 14:31:44 +0200] rev 12144
[server] Inline _entity_update method into init method of AbstractSource
This _entity_update method does not make sense now that we do not update
source from database information but always build them afresh.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 05 Apr 2017 14:02:58 +0200] rev 12143
[server] Drop update_config method of source
It does not make sense anymore to update the config of a source instance
(subclass of cubicweb.server.sources.AbstractSource) now that they are always
built from database information (CWSource). In datafeed and ldapfeed, we
move all code from "update_config" method in "init" method.
This changeset fixes LDAPFeedUserDeletionTC.test_a_filter_inactivate() failure
(unittest_ldapsource.py) introduces in previous changeset.
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 04 Apr 2017 16:28:50 +0200] rev 12142
[server] Make "sources_by_uri" and "sources_by_eid" properties of repository
I.e. do not populate these dict as repo initialization (bootstrap step) but
always use information from database. This is needed because when multiple
instances of the same application run, if one instance adds a CWSource the
other ones will not see it. In particular, when using a scheduler instance,
new CWSource will be added by the web instance and not seen by the scheduler
which is supposed to update them.
We thus define properties for sources_by_eid and sources_by_uri instead
attributes on repository instance. CWSource entities are thus retrieved from
database every time these properties are accessed. We factor out
initialization of the "source" instance (subclass of
cubicweb.server.source.AbstractSource) in a _sources() method. Note that this
method takes care of calling "init" method on the source as well as
"set_schema" (previously done in repo.set_schema(), which now only touches
system_source). Accordingly the "init_sources_from_database" method is dropped
along with "add_source"/"remove_source" methods.
In syncsources hook, we thus drop:
* SourceAddedOp operation which called repo.add_source() so that the
SourceAddedHook only cares about checking source configuration now;
* SourceRemovedOp and SourceRenamedOp operations for the same reason;
* SourceConfigUpdatedOp as updating the live config of source is
meaningless once we rely on them being retrieved from the database;
* SourceHostConfigUpdatedHook hook which is now useless without call to
SourceConfigUpdatedOp;
In 3.10 migration script, remove usage of sources_by_uri repo attribute which,
unless I'm missing something, appears useless (at least now).
In tests:
* unittest_datafeed: remove test_update_url method since we dropped respective
hook;
* unittest_ldapsource: LDAPFeedUserDeletionTC.test_a_filter_inactivate()
currently fails because it still relies on live config being updated, this
will be fixed in the next changeset once all "live source" logic will be
removed.
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 21 Feb 2017 11:04:19 +0100] rev 12141
Add a "Contributing" section to README with patch submission guidelines
For the CubicWeb project and its dependencies, we now prefer patches
submission and review by email on a public mailing list. We are thus moving
away from the previous vcreview-based workflow taking place on the forge.
This change is motivated by the following points:
- the current reviewer assignment mechanism (pick a random reviewer, rely on
reviewer availability rather than on willingness to review, send related
patches to distinct people, etc.) is inefficient if not counter-productive;
- most of the times, discussion only happens between the patch submitter and a
reviewer with no easy way to increase the audience;
- cubicweb-vcreview has no concept of patch series;
- cubicweb-vcreview is not actively maintained anymore and its usability keeps
deteriorating.
We expect that email-based submission and review of patches will circumvent
these limitations. Anybody interested in the project is welcome to subscribed
to the mailing list and participate to the review process.
This patch documents the basic workflow of patches submissions by email.
David Douard <david.douard@logilab.fr> [Tue, 04 Apr 2017 11:41:23 +0200] rev 12140
[cwctl] do only clean static data dir content (closes #17069762)
deleting the directory itself is useless and may be a problem in automated
deployment environments (user may not have permissions to delete or create
that directory).
David Douard <david.douard@logilab.fr> [Mon, 03 Apr 2017 14:43:44 +0200] rev 12139
[cwctl] add a no-config-update option to the upgrade command (closes #17069607)
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 07 Apr 2017 14:31:41 +0200] rev 12138
[cwconfig] Add "pyramid" config type to MCOMPAT dict
I don't know what this is for exactly, but the accept_mode method below
queries this dict with the configuration type name. And if the latter is
"pyramid", it crashes since there's no key in MCOMPAT dict. So add one with
the same value as "all-in-one". This code is called during "upgrade"
migration in particular.
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 07 Apr 2017 15:23:38 +0200] rev 12137
[pyramid] Avoid shutting down the repository at exit if it's already shutting down
For install `cubicweb-ctl pyramid` command will explicitly call
`repo.shutdown()` so the atexit hook is redundant. Prevent the latter to be
executed when the repository is already shutting down (otherwise one gets an
assertion error).
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 05 Apr 2017 14:42:30 +0200] rev 12136
[server/test] Extract a "ldapsource" function in unittest_ldapsource.py
We will add more use of this pattern in forthcoming changesets,
so avoid repetition.
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 04 Apr 2017 16:07:52 +0200] rev 12135
[server] Move "system" source initialization into its own method
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 05 Apr 2017 13:28:33 +0200] rev 12134
[entities] Make CWSource's dictconfig method clearer
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 05 Apr 2017 08:37:22 +0200] rev 12133
[entities] Move CWSource update_config method as a function in 3.15 migration script
This script is the only caller of this method. In the code of the function,
drop "skip_unknown" argument and continue accordingly upon OptionError.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 05 Apr 2017 10:34:04 +0200] rev 12132
[server/test] Turn "pull" method of LDAPFeedTestBase into a staticmethod
Because it does not use reference to "self" (which should be "cls" for
classmethod).
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 04 Apr 2017 18:47:13 +0200] rev 12131
[py3] Use six.text_type instead of unicode in _CWSourceCfgMixIn.update_config()
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 04 Apr 2017 16:06:44 +0200] rev 12130
[server] Drop condition on "3.10" migration in repo.init_sources_from_database()
We'll duplicate the code of this method in forthcoming changeset so clean it
up a bit of old stuff.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 30 Mar 2017 16:18:12 +0200] rev 12129
[pkg] Version 3.25.0rc2
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 30 Mar 2017 11:59:37 +0200] rev 12128
[doc] More release note about session data handling
mentionning deprecation of _cw.data and removal of get/set_shared_data.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 30 Mar 2017 11:59:01 +0200] rev 12127
[session] Drop long deprecated [get/set]_shared_data methods
they are deprecated since 3.19 and access to the .data attribute itself
deprecated in 3.25, so it's time to drop them.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 30 Mar 2017 11:58:02 +0200] rev 12126
[session] Drop the user session synchronization machinery
which should not be necessary anymore since groups and properties are fetched
for each request (cache lives in transaction_data).
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 30 Mar 2017 11:56:09 +0200] rev 12125
[session] Avoid deprecation warning on access to Connection.data
this attribute has been deprecated during the session related rework, remove
warning by explicitly storing data in .transaction_data since session data is
not anymore reachable through Connection object.
This will allows simplification of session synchronization hooks in a later
cset.
Also since we do not rely anymore on session data here, we may at some point
rewrite those properties to rely on the ORM instead of such custom caching.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 30 Mar 2017 10:43:49 +0200] rev 12124
[doc] Add release note about change in uicfg
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 30 Mar 2017 10:37:55 +0200] rev 12123
merge 3.25 heads
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 29 Mar 2017 14:56:04 +0200] rev 12122
[hg] Add generated slapd.conf to hgignore
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 29 Mar 2017 11:17:37 +0200] rev 12121
Fix flake8 errors in unittest_cwctl
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 29 Mar 2017 11:14:53 +0200] rev 12120
[cwctl] Drop 'cubicweb_' prefix when displaying cubes with 'cubicweb-ctl list'
consistently with newcube / create commands. This is an alternate implementation
to backed out changeset fe995d56c949.
Closes #17054738
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 28 Mar 2017 17:12:47 +0200] rev 12119
Fix flake8 errors in unittest_cwconfig
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 29 Mar 2017 10:34:39 +0200] rev 12118
[config] Test loading of ccplugin modules
to ensure ccplugin modules of cube as package aren't loaded twice, once as
`cubicweb_<cube>.ccplugin`, once as `cubes.<cube>.ccplugin`. This test used to
fail until fe995d56c949 has been backout.
It requires calling `cleanup_sys_module` in `CubicWebConfigurationTC.tearDown`
to remove any cube's submodule loaded during tests, so content of `sys.modules`
may be tested.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 29 Mar 2017 10:34:16 +0200] rev 12117
[test] Extract out method-which-is-not-a-method mocking iter_entry_points
to ease reuse and improve readability.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 29 Mar 2017 10:32:24 +0200] rev 12116
[cwconfig] Add a docstring on available_cubes method
a renaming could be better at some point, but that's a start.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 28 Mar 2017 15:03:15 +0200] rev 12115
Backed out changeset fe995d56c949
available_cubes should not strip cubicweb_prefix but return actual package name
for cube as package, since its output is also used to e.g. get ccplugin or
site_cubicweb module name.
Original aim of this set was to fix output of the "cubicweb-ctl list" command.
This will be done by an alternate implementation in a later cset.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 29 Mar 2017 13:29:41 +0200] rev 12114
[hooks] Drop "logstats" hook
It is now useless as its looping task would not run on a web instance because
respective repository has no scheduler.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 29 Mar 2017 11:46:17 +0200] rev 12113
[hooks] Do not register "logstats" if repository has no scheduler
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 29 Mar 2017 11:45:19 +0200] rev 12112
[server] Introduce an `has_scheduler` method on Repository
This is to be used by client application to determine if looping tasks may be
registered in the current process. By checking this, one will avoid the
warning in looping_task method when the repository has no scheduler.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 29 Mar 2017 11:37:31 +0200] rev 12111
[server] Warn instead of failing when a looping task is registered and repo has no scheduler
We should provide a way for client code to detect if they should register the
looping task or not. See next patch for that.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 29 Mar 2017 11:31:02 +0200] rev 12110
[server] Exit quickly when a looping task is registered in maintenance mode
In such cases the repository will not have a scheduler on purpose because the
repository will not be kept running and will quickly shutdown after migration
so that it's undesirable to have looping tasks being executed.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 24 Mar 2017 14:56:48 +0100] rev 12109
[config] Drop unused init_available_cubes method
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 28 Mar 2017 11:26:48 +0200] rev 12108
[doc] Move content of former README.pyramid into relevant modules
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 24 Mar 2017 16:57:05 +0100] rev 12107
Drop README.pyramid.rst file
It has been kept since 3.24 when we merged pyramid-cubicweb and
cubicweb-pyramid repositories into cubicweb's one waiting for someone to move
the information in some canonical place but this never happened and this
information is probably not so useful or already existing elsewhere. So just
drop the file.
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 24 Mar 2017 17:22:02 +0100] rev 12106
Make entypo link a true URL in README
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 24 Mar 2017 17:21:37 +0100] rev 12105
Refer to cubicweb.readthedocs.io in README
docs.cubicweb.org contains outdated documentation at the moment (and for quite
some time); until it gets update, refer to the up-to-date documentation on
readthedocs.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Mon, 27 Mar 2017 17:57:27 +0200] rev 12104
[server] don't catch exception from postcommit_event() if we are in test mode
The historic behavior is to hide potential exception occurring in
postcommit_event(). Unfortunately logging statements are hidden by default
during tests and it become very hard to debug. At least raise if we are in test
mode.
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 24 Mar 2017 14:18:17 +0100] rev 12103
[pkg] Version 3.25.0rc1
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 22 Mar 2017 14:36:05 +0100] rev 12102
[tox] Simplify command line to build the doc
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 24 Mar 2017 09:37:51 +0100] rev 12101
[pyramid] Drop warning about pyramid_debugtoolbar not found in debug mode
Some people way want to run a pyramid server in debug mode without the
toolbar. This warning is annoying for them. Others should just install and
*include* the toolbar by hand.
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 24 Mar 2017 11:21:39 +0100] rev 12100
[pkg] Add development.ini.tmpl to "cubicweb.pyramid" package data
Otherwise the file is not installed and `cubicweb-ctl create -c pyramid` does
not work.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 23 Mar 2017 10:30:48 +0100] rev 12099
[skeleton] Don't use system site packages in tox environment
As we changed this in cubicweb, there is a consensus that this
is not the best practice so let us change it as well for
skeleton.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 22 Mar 2017 14:38:10 +0100] rev 12098
[doc] Update "settings" pyramid documentation
Document that without "bwcompat" we can use a development.ini file directly
and add a dedicated section to list configuration options.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 22 Mar 2017 14:37:04 +0100] rev 12097
[doc] Update the "quickstart" page of pyramid documentation
Again mentioning the two modes of operations and dropping references to prior
implementation.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 22 Mar 2017 14:34:51 +0100] rev 12096
[doc] Rewrite "pyramid" index page in the book
We drop references to pyramid-cubicweb and cubicweb-pyramid, remaining of the
merge in 3.24. We now mention the two possible operation modes
(with bwcompat being true or false).
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 22 Mar 2017 15:05:04 +0100] rev 12095
[doc] Drop documentation for cubicweb.pyramid.tools module
Which, as documented, mostly consists of internals.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 22 Mar 2017 14:49:04 +0100] rev 12094
[doc] Drop reference to "make_cubicweb_application" in pyramid doc
This function got renamed into config_from_cwconfig and this is arguably an
internal detail so should not appear in the API documentation.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 22 Mar 2017 14:06:03 +0100] rev 12093
[doc] Remove trailing whitespaces in doc/book/pyramid/index.rst
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 22 Mar 2017 15:43:20 +0100] rev 12092
[tox] Install "pyramid" dependencies in "doc" environment
Otherwise most of the cubicweb.pyramid API doc fails to build. For this we
skip installation in the "doc" environment and source the new
requirements/doc.txt which will install cubicweb[pyramid], thus pulling
cubicweb plus pyramid's dependencies.
Furthermore this requirements/doc.txt would be useful to build to
documentation on readthedocs.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 07 Mar 2017 13:13:23 +0100] rev 12091
[web/views] fix bad html in deleteconf with show_composite=True
On an entity with no composite an additional item "None" was displayed.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 23 Mar 2017 12:09:59 +0100] rev 12090
[web/views] display unique composite entities in deleteconf
When the entity has two relations to the same composite, display it only once.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 23 Mar 2017 11:47:59 +0100] rev 12089
Really make rqlrewrite flake8 compliant
Philippe Pepiot <philippe.pepiot@logilab.fr> [Wed, 22 Mar 2017 14:18:54 +0100] rev 12088
[pyramid] disable bwcompat by default in PyramidCWTest
To avoid cubicweb exceptions handling.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 17 Mar 2017 10:15:16 +0100] rev 12087
Fix flake8 errors in rqlrewrite.py
Arthur Lutz <arthur.lutz@logilab.fr> [Wed, 01 Mar 2017 18:07:49 +0100] rev 12086
[rqlrewrite/schema] Avoid parsing computed relations for each query
The RQLRelationRewriter is instanciated for each RQL query, it should
avoid parsing computed relations formula by using a cache, which seems rightly
located on the instance's schema.
This brings a *huge* performance boost to some pages on application with a few
computed relations (x4 observed on a client app).
Kudos to Adrien, David and Sylvain.
Closes #17059828
Philippe Pepiot <philippe.pepiot@logilab.fr> [Wed, 22 Mar 2017 17:14:18 +0100] rev 12085
[pkg] Restrict yams version to be less than 0.45.0
This is a backport of 10d3bf220be2 on 3.23 branch