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.