2017-04-04 [server] Make "sources_by_uri" and "sources_by_eid" properties of repository 3.25
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.
2017-02-21 Add a "Contributing" section to README with patch submission guidelines 3.25
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.
2017-04-04 [cwctl] do only clean static data dir content (closes #17069762) 3.25
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).
2017-04-03 [cwctl] add a no-config-update option to the upgrade command (closes #17069607) 3.25
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)
2017-04-07 [cwconfig] Add "pyramid" config type to MCOMPAT dict 3.25
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.
2017-04-07 [pyramid] Avoid shutting down the repository at exit if it's already shutting down 3.25
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).
2017-04-05 [server/test] Extract a "ldapsource" function in unittest_ldapsource.py 3.25
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.
2017-04-04 [server] Move "system" source initialization into its own method 3.25
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
2017-04-05 [entities] Make CWSource's dictconfig method clearer 3.25
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 05 Apr 2017 13:28:33 +0200] rev 12134
[entities] Make CWSource's dictconfig method clearer
2017-04-05 [entities] Move CWSource update_config method as a function in 3.15 migration script 3.25
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.
2017-04-05 [server/test] Turn "pull" method of LDAPFeedTestBase into a staticmethod 3.25
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).
2017-04-04 [py3] Use six.text_type instead of unicode in _CWSourceCfgMixIn.update_config() 3.25
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()
2017-04-04 [server] Drop condition on "3.10" migration in repo.init_sources_from_database() 3.25
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.
2017-03-30 [pkg] Version 3.25.0rc2 3.25
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 30 Mar 2017 16:18:12 +0200] rev 12129
[pkg] Version 3.25.0rc2
2017-03-30 [doc] More release note about session data handling 3.25
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.
2017-03-30 [session] Drop long deprecated [get/set]_shared_data methods 3.25
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.
2017-03-30 [session] Drop the user session synchronization machinery 3.25
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).
2017-03-30 [session] Avoid deprecation warning on access to Connection.data 3.25
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.
2017-03-30 [doc] Add release note about change in uicfg 3.25
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
2017-03-30 merge 3.25 heads 3.25
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 30 Mar 2017 10:37:55 +0200] rev 12123
merge 3.25 heads
2017-03-29 [hg] Add generated slapd.conf to hgignore 3.25
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 29 Mar 2017 14:56:04 +0200] rev 12122
[hg] Add generated slapd.conf to hgignore
2017-03-29 Fix flake8 errors in unittest_cwctl 3.25
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 29 Mar 2017 11:17:37 +0200] rev 12121
Fix flake8 errors in unittest_cwctl
2017-03-29 [cwctl] Drop 'cubicweb_' prefix when displaying cubes with 'cubicweb-ctl list' 3.25
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
2017-03-28 Fix flake8 errors in unittest_cwconfig 3.25
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 28 Mar 2017 17:12:47 +0200] rev 12119
Fix flake8 errors in unittest_cwconfig
2017-03-29 [config] Test loading of ccplugin modules 3.25
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.
2017-03-29 [test] Extract out method-which-is-not-a-method mocking iter_entry_points 3.25
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.
2017-03-29 [cwconfig] Add a docstring on available_cubes method 3.25
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.
2017-03-28 Backed out changeset fe995d56c949 3.25
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.
2017-03-29 [hooks] Drop "logstats" hook 3.25
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.
2017-03-29 [hooks] Do not register "logstats" if repository has no scheduler 3.25
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
2017-03-29 [server] Introduce an `has_scheduler` method on Repository 3.25
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.
2017-03-29 [server] Warn instead of failing when a looping task is registered and repo has no scheduler 3.25
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.
2017-03-29 [server] Exit quickly when a looping task is registered in maintenance mode 3.25
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.
2017-03-24 [config] Drop unused init_available_cubes method 3.25
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 24 Mar 2017 14:56:48 +0100] rev 12109
[config] Drop unused init_available_cubes method
2017-03-28 [doc] Move content of former README.pyramid into relevant modules 3.25
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
2017-03-24 Drop README.pyramid.rst file 3.25
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.
2017-03-24 Make entypo link a true URL in README 3.25
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 24 Mar 2017 17:22:02 +0100] rev 12106
Make entypo link a true URL in README
2017-03-24 Refer to cubicweb.readthedocs.io in README 3.25
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.
2017-03-27 [server] don't catch exception from postcommit_event() if we are in test mode 3.25
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.
2017-03-24 [pkg] Version 3.25.0rc1 3.25
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 24 Mar 2017 14:18:17 +0100] rev 12103
[pkg] Version 3.25.0rc1
2017-03-22 [tox] Simplify command line to build the doc 3.25
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 22 Mar 2017 14:36:05 +0100] rev 12102
[tox] Simplify command line to build the doc
2017-03-24 [pyramid] Drop warning about pyramid_debugtoolbar not found in debug mode 3.25
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.
2017-03-24 [pkg] Add development.ini.tmpl to "cubicweb.pyramid" package data 3.25
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.
2017-03-23 [skeleton] Don't use system site packages in tox environment 3.25
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.
2017-03-22 [doc] Update "settings" pyramid documentation 3.25
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.
2017-03-22 [doc] Update the "quickstart" page of pyramid documentation 3.25
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.
2017-03-22 [doc] Rewrite "pyramid" index page in the book 3.25
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).
2017-03-22 [doc] Drop documentation for cubicweb.pyramid.tools module 3.25
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.
2017-03-22 [doc] Drop reference to "make_cubicweb_application" in pyramid doc 3.25
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.
2017-03-22 [doc] Remove trailing whitespaces in doc/book/pyramid/index.rst 3.25
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
2017-03-22 [tox] Install "pyramid" dependencies in "doc" environment 3.25
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.
2017-03-07 [web/views] fix bad html in deleteconf with show_composite=True 3.25
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.
2017-03-23 [web/views] display unique composite entities in deleteconf 3.25
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.
2017-03-23 Really make rqlrewrite flake8 compliant 3.25
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 23 Mar 2017 11:47:59 +0100] rev 12089
Really make rqlrewrite flake8 compliant
2017-03-22 [pyramid] disable bwcompat by default in PyramidCWTest 3.25
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.
2017-03-17 Fix flake8 errors in rqlrewrite.py 3.25
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 17 Mar 2017 10:15:16 +0100] rev 12087
Fix flake8 errors in rqlrewrite.py
2017-03-01 [rqlrewrite/schema] Avoid parsing computed relations for each query 3.25
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
2017-03-22 [pkg] Restrict yams version to be less than 0.45.0 3.23
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
2017-03-22 [pyramid] Remove pyramid_debugtoolbar from "pyramid.includes" 3.25
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 22 Mar 2017 13:58:28 +0100] rev 12084
[pyramid] Remove pyramid_debugtoolbar from "pyramid.includes" Most of the times, the package is not installed (not pulled by cubicweb[pyramid] nor pyramid itself) in a fresh environment so that first start of a new instance will fail.
2017-03-22 [doc] Add some details about rtag derivation and server api cleanup in release notes 3.25
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 22 Mar 2017 09:44:53 +0100] rev 12083
[doc] Add some details about rtag derivation and server api cleanup in release notes
2017-03-22 [doc] Simplify release notes section 3.25
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 22 Mar 2017 09:41:19 +0100] rev 12082
[doc] Simplify release notes section Those are all about backward incompatibilities, keep only one section about that.
2017-03-20 [doc] Fill release notes for 3.25 3.25
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 20 Mar 2017 11:35:58 +0100] rev 12081
[doc] Fill release notes for 3.25
2017-03-20 [devtools] Create "newcube" in current directory by default 3.25
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 20 Mar 2017 12:13:04 +0100] rev 12080
[devtools] Create "newcube" in current directory by default Instead of using "cubes path", which in many cases will be something wrong (like <prefix>/share/cubicweb/cubes) now that cubes are regular Python packages.
2017-03-20 [pyramid] Do not register repository.shutdown atexit in test mode 3.25
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 20 Mar 2017 14:39:22 +0100] rev 12079
[pyramid] Do not register repository.shutdown atexit in test mode It seems that there already is a special shutdown step for repository in test mode and pyramid's atexit handler interferes with it leading to assertion error about 'shutting_down' attribute being True in Repository.shutdown().
2017-03-21 [cwconfig] don't rely on _CubeImporter while loading cubes 3.25
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 21 Mar 2017 14:17:26 +0100] rev 12078
[cwconfig] don't rely on _CubeImporter while loading cubes _CubeImporter can load cube subpackages twice (there is a test for submodules in cubicweb.test.unittest_cubes.test_no_double_import() but not with a subpackage). Since _CubeImporter is for backward compatibility and is supposed to be deprecated as soon as possible, don't rely on it when loading cube schema or appobjects and always load the real modname (eg. cubicweb_<cube> if exists else cubes.<cube>).
2017-03-20 Added tag 3.24.7, debian/3.24.7-1, centos/3.24.7-1 for changeset 58f1e8545a77 3.24
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 20 Mar 2017 17:38:43 +0100] rev 12077
Added tag 3.24.7, debian/3.24.7-1, centos/3.24.7-1 for changeset 58f1e8545a77
2017-03-20 [pkg] Version 3.24.7 3.24 3.24.7 centos/3.24.7-1 debian/3.24.7-1
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 20 Mar 2017 17:04:10 +0100] rev 12076
[pkg] Version 3.24.7
2017-03-20 [pkg] Restrict yams version to be less than 0.45.0 3.24
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 20 Mar 2017 16:51:41 +0100] rev 12075
[pkg] Restrict yams version to be less than 0.45.0 Because of reader's API changes x and other subtle but hard to debug changes in appobjects registration in version 0.45.0. Closes #17065626.
2017-03-17 [pkg] Version 3.25.0rc0 3.25
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 17 Mar 2017 16:29:38 +0100] rev 12074
[pkg] Version 3.25.0rc0 Let's make a release candidate version of CubicWeb 3.25.0 (only for the Python package), in the hope that some issues that we usually discover after release will be sorted out before.
2017-03-20 [pyramid] Rename paste app factory to pyramid_main
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 20 Mar 2017 11:16:11 +0100] rev 12073
[pyramid] Rename paste app factory to pyramid_main Making it clearer that this would build a Pyramid application, just in case we eventually provide other means to create a WSGI application than Pyramid.
2017-03-20 [tox] Do not use site packages in testenv
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 20 Mar 2017 09:08:44 +0100] rev 12072
[tox] Do not use site packages in testenv This is the normal way of running tox. We used to set this because some people liked to run tests using packages installed by other means (i.e. system-wide). Now, there seems to be a consensus that running tox without site packages is a better idea, in particular since many of our dependencies are now available as wheels and thus would install quickly provided one uses a recent pip/virtualenv.
2017-03-20 [test] Add user-site to PYTHONPATH before installation of new cube in test_newcube_install
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 20 Mar 2017 10:25:04 +0100] rev 12071
[test] Add user-site to PYTHONPATH before installation of new cube in test_newcube_install Otherwise, setuptools complains that the target installation directory (i.e. "user site" is not in PYTHONPATH). This is probably because we use a fake HOME with --user install option. Failure shows up when running tests through tox without system site packages (see next patch).
2017-03-17 [pkg] Depends on yams >= 0.45.0
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 17 Mar 2017 17:32:04 +0100] rev 12070
[pkg] Depends on yams >= 0.45.0
2017-03-17 [pkg] Depends on logilab-common >= 1.4.0
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 17 Mar 2017 17:31:10 +0100] rev 12069
[pkg] Depends on logilab-common >= 1.4.0
2017-03-20 Merge with 3.24 branch
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 20 Mar 2017 10:28:01 +0100] rev 12068
Merge with 3.24 branch
2017-03-20 Added tag 3.24.6, debian/3.24.6-1, centos/3.24.6-1 for changeset 4029fb83a67d 3.24
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 20 Mar 2017 09:40:24 +0100] rev 12067
Added tag 3.24.6, debian/3.24.6-1, centos/3.24.6-1 for changeset 4029fb83a67d
2017-03-20 [pkg] Version 3.24.6 3.24 3.24.6 centos/3.24.6-1 debian/3.24.6-1
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 20 Mar 2017 08:58:25 +0100] rev 12066
[pkg] Version 3.24.6
2017-03-20 Merge public heads 3.24
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 20 Mar 2017 08:57:17 +0100] rev 12065
Merge public heads
2017-03-15 [web/views] deleteconf: ignore workflow when displaying composite entities
Philippe Pepiot <philippe.pepiot@logilab.fr> [Wed, 15 Mar 2017 12:01:14 +0100] rev 12064
[web/views] deleteconf: ignore workflow when displaying composite entities This hide TrInfo composite entities when deleting an workflowable entity.
2017-03-03 [rset] Use RQL cache in syntax_tree method
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 03 Mar 2017 14:06:27 +0100] rev 12063
[rset] Use RQL cache in syntax_tree method This avoid several unnecessary parsings per HTTP request, since in most case rset's rql is in the rql cache (since it has just been executed), while yapps based parsing is known to be slow.
2017-03-17 [repo] Introduce a clear_caches method on the Querier class
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 17 Mar 2017 07:32:48 +0100] rev 12062
[repo] Introduce a clear_caches method on the Querier class that is called from repository's clear_caches.
2017-03-15 [repo] Consistent API for cache clearing
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 15 Mar 2017 08:30:27 +0100] rev 12061
[repo] Consistent API for cache clearing clear_caches, reset_caches, clear_eid_caches are now all named 'clear_caches' with optional eids/etypes arguments to clear eid specific cache entry,
2017-03-03 [repo] Extract rql cache handling to a dedicated class
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 03 Mar 2017 13:09:11 +0100] rev 12060
[repo] Extract rql cache handling to a dedicated class
2017-03-16 [sobjects] Fix a trivial flake8 error
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 16 Mar 2017 17:25:07 +0100] rev 12059
[sobjects] Fix a trivial flake8 error
2017-03-15 [repo] Drop cache clearing methods from the source interface
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 15 Mar 2017 08:27:45 +0100] rev 12058
[repo] Drop cache clearing methods from the source interface Those are actually system source specific.
2017-03-15 [repo] Move and rename repo._clear_planning_cache
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 15 Mar 2017 08:04:58 +0100] rev 12057
[repo] Move and rename repo._clear_planning_cache to make it clearer it's clearing the @cache of source_defs method.
2017-03-10 [sobjects] Fix flake8 errors in services.py
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 10:10:44 +0100] rev 12056
[sobjects] Fix flake8 errors in services.py
2017-03-15 [test] Rename BaseQuerierTC._access to BaseQuerierTC.admin_access
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 15 Mar 2017 08:39:51 +0100] rev 12055
[test] Rename BaseQuerierTC._access to BaseQuerierTC.admin_access so it's consistent with CubicWebTC and avoid access to a protected attribute which has been exposed by the removal of the 'session' property a few csets earlier.
2017-03-15 [repo] Fix flake8 error
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 15 Mar 2017 09:15:32 +0100] rev 12054
[repo] Fix flake8 error
2017-03-09 [pyramid] Add a "pyramid" instance configuration type
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 09 Mar 2017 16:36:33 +0100] rev 12053
[pyramid] Add a "pyramid" instance configuration type In a new module 'cubicweb.pyramid.config' we define a "pyramid" instance configuration type. The noticeable feature of this configuration is that it manages a 'development.ini' file that gets installed in application home (along with `.conf` file). This file is templated and includes generated values for secrets of session and authtk tokens. This means that we can just call: pserve etc/cubicweb.d/<appname>/development.ini or gunicorn --paste etc/cubicweb.d/<appname>/development.ini -b :8080 just after instance creation to get a pyramid instance running without having to hack around a 'pyramid.ini' file. This patch drops 'development.ini' from skeleton and moves it in cubicweb/pyramid so that it gets installed at instance creation which is more appropriate than in cube creation. The new configuration class sets "cubicweb.bwcompat" setting to false so it is not intended to replace the "all-in-one" configuration type (which would require a bit more work). This configuration is close to the the 'repository' configuration type with just a couple of options from WebConfiguration that are needed for Pyramid (anonymous user/password plus some miscellaneous options that I'm not so sure are really needed). Note, in particular, that we do not pull CORS settings to be injected as a WSGI middleware like in wsgi_application_from_cwconfig() since I believe this should be left as an end-user responsibility and since this can be defined in a standard way in paste configuration. This configuration inherits from ServerConfiguration but registers the same appobjects as WebConfiguration. In cubicweb.web.request._CubicWebRequestBase, we guard against access to "uiprops" and "datadir_url" of the config because this new "pyramid" config does not have these (this does not make sense without bwcompat mode). At some point, we should either avoid using `cw_request`'s pyramid request attribute or make cubicweb's web request really independant of existing implementation and drop these assumptions.
2017-03-10 [pyramid] Call repository's shutdown method atexit
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 10 Mar 2017 12:02:41 +0100] rev 12052
[pyramid] Call repository's shutdown method atexit This way when run through a WSGI server (pserve, gunicorn, etc.) we make sure that the repository is properly shut down. In particular, this would wait for threads to terminate (otherwise, they'll be killed).
2017-03-03 [querier] Turn repo.querier_cache_key into a private function
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 03 Mar 2017 11:13:03 +0100] rev 12051
[querier] Turn repo.querier_cache_key into a private function of the querier module, only place where it's used.
2017-03-14 [cleanup] Fix flake8 errors in web/application.py and associated test
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 14 Mar 2017 10:34:03 +0100] rev 12050
[cleanup] Fix flake8 errors in web/application.py and associated test
2017-03-14 [test] Simplify CWTC's init_authentication and assertAuthSuccess
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 14 Mar 2017 10:33:24 +0100] rev 12049
[test] Simplify CWTC's init_authentication and assertAuthSuccess which shouldn't rely on removed .session attribute while it's not necessary and could be written in a simpler way.
2017-03-10 [cleanup] Drop non sense sentence in docstring
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 18:26:05 +0100] rev 12048
[cleanup] Drop non sense sentence in docstring
2017-03-10 [repo] Drop Session at last
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 18:23:29 +0100] rev 12047
[repo] Drop Session at last This is not used at all anymore.
2017-03-10 Fix flake8 some errors
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 18:21:22 +0100] rev 12046
Fix flake8 some errors
2017-03-10 [test] Use existing reference to repo_source
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 18:18:51 +0100] rev 12045
[test] Use existing reference to repo_source
2017-03-10 [repo] Drop repo.new_session method
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 18:04:25 +0100] rev 12044
[repo] Drop repo.new_session method we should not go through Session to create Connection anymore. This is unofficial API, no backward compat for now.
2017-03-14 Stop using Session on the repository side
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 14 Mar 2017 11:07:58 +0100] rev 12043
Stop using Session on the repository side Only expect session on web request, and let the web session/authentication managers provide them. Access to cnx.data, which used to return session data, is deprecated: there is no more access to session data from the repository side, and they should be access from req.session.data from the web side.
2017-03-10 [test] Drop unnecessary call to new_session
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 18:00:13 +0100] rev 12042
[test] Drop unnecessary call to new_session This is not unittest, the above call is enough.
2017-03-10 [user] Drop ugly hack on CWUser entity class
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 17:58:25 +0100] rev 12041
[user] Drop ugly hack on CWUser entity class which should be not necessary anymore, beside two remaining usage in our own test suite.
2017-03-10 [test] Use user_session_cache_key function
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 17:57:13 +0100] rev 12040
[test] Use user_session_cache_key function to generate cache key.
2017-03-10 [session+test] Stop storing / accessing session when it's not necessary
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 17:52:44 +0100] rev 12039
[session+test] Stop storing / accessing session when it's not necessary
2017-03-10 [devtools] Stop relying on Session to create connection in RepoAccess
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 17:46:06 +0100] rev 12038
[devtools] Stop relying on Session to create connection in RepoAccess
2017-03-10 [devtools] Stop using repo.new_session
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 17:44:03 +0100] rev 12037
[devtools] Stop using repo.new_session
2017-03-10 [session] Kill support for a 'session_open' hook event
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 18:25:35 +0100] rev 12036
[session] Kill support for a 'session_open' hook event To be consistent with dropping of the 'session_close' event, and also because this is already not called when using pyramid.
2017-03-10 [devtools] Rename FakeSession into FakeConnection
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 17:03:28 +0100] rev 12035
[devtools] Rename FakeSession into FakeConnection because it is what it is.
2017-03-10 [cleanup] Drop references to the old internal_session method
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 16:55:57 +0100] rev 12034
[cleanup] Drop references to the old internal_session method dropped a while ago, no need to talk about it in a docstring nor to fake it.
2017-03-10 [session] Drop unused class
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 16:31:08 +0100] rev 12033
[session] Drop unused class
2017-03-10 [cleanup] Drop no more used parse_repo_uri function
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 16:14:05 +0100] rev 12032
[cleanup] Drop no more used parse_repo_uri function
2017-03-10 [server] Fix flake8 error of test/data/hooks.py
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 14:07:15 +0100] rev 12031
[server] Fix flake8 error of test/data/hooks.py
2017-03-10 [repo] Drop repo.connect backward compat
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 14:02:31 +0100] rev 12030
[repo] Drop repo.connect backward compat use new_session instead (introduced in 3.19 iirc)
2017-03-10 [session] Drop no more necessary Session.sessionid and Connection.connectionid
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 14:01:45 +0100] rev 12029
[session] Drop no more necessary Session.sessionid and Connection.connectionid
2017-03-10 [repo] Kill repo._sessions
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 14:04:26 +0100] rev 12028
[repo] Kill repo._sessions and with it the need to have a looping task to clean it up, and with that all the session's timestamping machinery.
2017-03-10 [repo] Stop closing session
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 18:24:40 +0100] rev 12027
[repo] Stop closing session The only point in "closing" session is to call the `session_close` event. Since I'm not aware of any application relying on it, I think this is too costly (in term of code) to maintain and propose to drop it.
2017-03-10 [views] Stop giving stats / debug information relying on _sessions
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 12:07:29 +0100] rev 12026
[views] Stop giving stats / debug information relying on _sessions This is already broken when using pyramid anyway.
2017-03-10 [session] Stop relying on _sessions to synchronize living session
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 16:41:10 +0100] rev 12025
[session] Stop relying on _sessions to synchronize living session by doing what we currently do in pyramid. Also, attempt to synchronize CWUser's class sounds like a dark corner case handling that should be removed in favor of short lived user objects (beside it shouldn't occur except during migration).
2017-03-10 [test] Drop useless access to repo._sessions
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 12:01:31 +0100] rev 12024
[test] Drop useless access to repo._sessions test still succeed afterwards.
2017-03-10 [repo] Fix flake8 errors in server/__init__.py
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 11:27:01 +0100] rev 12023
[repo] Fix flake8 errors in server/__init__.py
2017-03-10 [repo] Drop no more used ShuttingDown exception
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 11:25:24 +0100] rev 12022
[repo] Drop no more used ShuttingDown exception
2017-03-10 [repo] Drop _get_session method
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 11:55:16 +0100] rev 12021
[repo] Drop _get_session method it's not actually necessary but holds underlying _sessions dict handling. Drop backward compat relying on it (which IMO should not be a problem). Drop import of unused QueryError along the way.
2017-03-09 [test] Drop call to CubicWebConfiguration.load_cwctl_plugins in unittest_cwctl.py
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 09 Mar 2017 18:02:16 +0100] rev 12020
[test] Drop call to CubicWebConfiguration.load_cwctl_plugins in unittest_cwctl.py This is no longer need now that we call load_available_configurations() in the "list" command (see 5e7282bdf140).
2017-03-09 [web] Extract a base class out WebConfiguration
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 09 Mar 2017 16:35:58 +0100] rev 12019
[web] Extract a base class out WebConfiguration This will be used to build a CubicWebPyramidConfiguration in following changeset.
2017-03-09 [tox] Drop reference to removed init_instance.py file in flake8-ok-files.txt
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 09 Mar 2017 16:41:18 +0100] rev 12018
[tox] Drop reference to removed init_instance.py file in flake8-ok-files.txt The file got removed in 1b9fd8bda1cd.
2017-03-10 [web] Put 'use-uicache' option in level 2
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 10 Mar 2017 09:39:18 +0100] rev 12017
[web] Put 'use-uicache' option in level 2 So that users do not get prompted with this. Follow-up on c34590161082.
2017-02-21 [server] Add a "scheduler" command to run repository scheduler
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 21 Feb 2017 08:56:38 +0100] rev 12016
[server] Add a "scheduler" command to run repository scheduler This commands starts the repository scheduler as a standalone process that should complement a CubicWeb web instance running as a WSGI application. Added a log message in repository's shutdown method to help testing the command (i.e. make sure the method is called after the scheduler stopped). Related to #17057223.
2017-03-06 [cwconfig] Do not instantiate a repo with a scheduler in repository method
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 06 Mar 2017 15:13:44 +0100] rev 12015
[cwconfig] Do not instantiate a repo with a scheduler in repository method None of the caller of this method need the repository to have a scheduler and having a scheduler should be something that's explicitly requested.
2017-03-06 [server] Make cubicweb/server/utils.py flake8-clean
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 06 Mar 2017 14:50:00 +0100] rev 12014
[server] Make cubicweb/server/utils.py flake8-clean
2017-03-06 [server] Drop utils's LoopTask and TasksManager classes not used anymore
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 06 Mar 2017 14:38:52 +0100] rev 12013
[server] Drop utils's LoopTask and TasksManager classes not used anymore Related to 17057223.
2017-03-06 [server] replace repository's tasks manager by a scheduler
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 06 Mar 2017 13:23:33 +0100] rev 12012
[server] replace repository's tasks manager by a scheduler Repository() does not accept anymore a 'tasks_manager' argument but rather a 'scheduler' argument which is expected to be an instance of sched.scheduler class. The drop the _tasks_manager attribute of the repository and adjust all internal usages of it. In particular, in the 'repo_stats' service we do not export 'looping_tasks' statistics anymore as there's no way to retrieve this anymore from a web instance. Closes #17057223.
2017-03-06 [server] introduce a scheduler class to run repository "looping tasks"
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 06 Mar 2017 13:21:50 +0100] rev 12011
[server] introduce a scheduler class to run repository "looping tasks" We just use the sched module from the standard library and introduce a tiny Python2/3 compatibility layer (more for convenience actually). The "looping" aspect of tasks (previously in LoopTask class) is re-implemeted as a `schedule_periodic_task` function. This is a reasonably thin layer as compared to LoopTask/TasksManager classes. Only the "restart" aspect of LoopTask is no longer present as I'm not sure it's worth keeping. The advantage of using this (in addition to eventually dropping our custom code) is that this scheduler class provides a `run` method that blocks the process while running tasks in its queue. So we can rely on this to have a 'scheduler' ctl command (see forthcoming patch) that would only run "looping tasks" without having to implement the "blocking" aspect ourself. Related to #17057223.
2017-02-16 web: add options to ignore css compilation and uicache
Samuel Trégouët <samuel.tregouet@logilab.fr> [Thu, 16 Feb 2017 11:15:23 +0100] rev 12010
web: add options to ignore css compilation and uicache
2017-02-16 [skeleton] call includeme from new cube
Samuel Trégouët <samuel.tregouet@logilab.fr> [Thu, 16 Feb 2017 10:56:45 +0100] rev 12009
[skeleton] call includeme from new cube
2017-03-06 [etwist] Do not call repository's start_looping_tasks anymore and warn about this
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 06 Mar 2017 14:19:20 +0100] rev 12008
[etwist] Do not call repository's start_looping_tasks anymore and warn about this We are about to drop this method from Repository class and replace it by a blocking alternative. This is not compatible with how things currently work in a Twisted server implementation. So do not start repository "looping tasks" in Twisted server anymore and issue a warning about this. If someone is interested in restoring the "all-in-one" behavior where the repository runs within a Twisted server, they may start by implementing repository looping tasks using a Twisted mechanism such as, e.g., http://twistedmatrix.com/documents/current/core/howto/time.html and eventually provide the repository with a compatible scheduler instance so that is can register its periodic tasks. At the moment, we lack resources to do this (and maintain the Twisted server of CubicWeb in general). Related to #17057223.
2017-03-09 [test] Flake8-clean and use stdlib unittest in cubicweb/server/test/unittest_utils.py
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 09 Mar 2017 09:16:00 +0100] rev 12007
[test] Flake8-clean and use stdlib unittest in cubicweb/server/test/unittest_utils.py
2017-03-07 [web] Don't raise ProcessFormError if there is no value specified
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 07 Mar 2017 12:08:39 +0100] rev 12006
[web] Don't raise ProcessFormError if there is no value specified a03376213747 introduced a slight modification in None / empty string values and with it a regression where an exception is raised on empty values, while we should simply consider no value is specified and return None.
2017-03-07 [test] Cleanup imports in unittest_form
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 07 Mar 2017 11:59:07 +0100] rev 12005
[test] Cleanup imports in unittest_form Remove unused and reorder, + use bare unittest along the way.
2017-03-07 Fix log level parameter not taken into account in cwsource log table 3.23
Florent Cayré <florent.cayre@logilab.fr> [Tue, 07 Mar 2017 14:27:09 +0100] rev 12004
Fix log level parameter not taken into account in cwsource log table An error in the jquery selector of the html widget controlling the log level was the cause of this bug. Closes #15772634 (grafted from c9129aae884b476455c8ed1ad802efc3a26503a5)
2017-03-06 [pyramid] Drop call to repository's start_looping_tasks method and warn about this
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 06 Mar 2017 13:49:51 +0100] rev 12003
[pyramid] Drop call to repository's start_looping_tasks method and warn about this We are about to drop the start_looping_tasks method and running "looping tasks" along the WSGI application is not a very good idea. So issue a warning pointing to the forthcoming "scheduler" command. Related to #17057223.
2017-03-06 [test] Make unittest_serverctl.py flake8-clean
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 06 Mar 2017 15:22:16 +0100] rev 12002
[test] Make unittest_serverctl.py flake8-clean
2017-03-06 [wsgi] Drop calls to repo.start_looping_tasks
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 06 Mar 2017 13:15:51 +0100] rev 12001
[wsgi] Drop calls to repo.start_looping_tasks It's unlikely that these implementations were ever used so we do not bother with deprecation or a warning. We just drop the call to this method which should not be called from within a WSGI application. Related to #17057223.
2017-03-06 [pyramid] Drop useless "init_instance" module
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 06 Mar 2017 15:16:53 +0100] rev 12000
[pyramid] Drop useless "init_instance" module
2017-03-06 [server] Drop inexistent "bootstrap" argument in Repository initialization
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 06 Mar 2017 15:01:41 +0100] rev 11999
[server] Drop inexistent "bootstrap" argument in Repository initialization This is a missing bit from 5de78b6fff2e. Unfortunately this code appears to be uncovered by our test suite.
2017-02-08 [server] fix a typo in a docstring
David Douard <david.douard@logilab.fr> [Wed, 08 Feb 2017 16:05:00 +0100] rev 11998
[server] fix a typo in a docstring
2017-02-24 [ctl] Load available configurations in "cubicweb-ctl list" 3.24
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 24 Feb 2017 09:18:08 +0100] rev 11997
[ctl] Load available configurations in "cubicweb-ctl list" Otherwise we rely on associated ctl plugins to be loaded which is arguably orthogonal to configurations.
2017-02-23 [web/views] Fix a docstring
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 23 Feb 2017 10:59:56 +0100] rev 11996
[web/views] Fix a docstring
2017-02-23 [server] Use looping_task method in Repository._prepare_startup()
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 23 Feb 2017 08:37:39 +0100] rev 11995
[server] Use looping_task method in Repository._prepare_startup()
2017-02-27 [skeleton] Drop logging configuration from development.ini
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 27 Feb 2017 17:13:45 +0100] rev 11994
[skeleton] Drop logging configuration from development.ini This is actually not useful as logging is already initialized and configure "somewhere else" where the repository is started.
2017-02-27 [pyramid] Drop retrieval of auth/session secret in all-in-one.conf
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 27 Feb 2017 14:49:32 +0100] rev 11993
[pyramid] Drop retrieval of auth/session secret in all-in-one.conf We actually never supported this in cubicweb, but only in pyramid-cubicweb.
2017-02-27 [cwctl] Recommend 'pyramid' before 'wsgi' when twisted is not available
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 27 Feb 2017 09:06:23 +0100] rev 11992
[cwctl] Recommend 'pyramid' before 'wsgi' when twisted is not available Not sure anyone ever really used the latter and the former is certainly more reliable/tested.
2017-02-27 [cwctl] Drop message about 'the pyramid cube' in "start" command
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 27 Feb 2017 09:05:33 +0100] rev 11991
[cwctl] Drop message about 'the pyramid cube' in "start" command This is shown when twisted is not importable and we suggest to use 'cubicweb pyramid <appid>' instead. Since 3.24, cubicweb-pyramid got merge in cubicweb so drop this reference in the message.
2017-02-27 [cwconfig] Fix two NameError in load_available_configs()
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 27 Feb 2017 16:57:59 +0100] rev 11990
[cwconfig] Fix two NameError in load_available_configs() This comes from a copy-paste in d92d75b17a85.
2017-02-27 [etwist] Drop try/except around definitions of 'all-in-one' configuration and command handlers
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 27 Feb 2017 08:53:52 +0100] rev 11989
[etwist] Drop try/except around definitions of 'all-in-one' configuration and command handlers cubicweb.server is no longer conditionally shipped, neither in python package nor in debian package since 3.24.
2017-02-28 [server] Call 'server_startup' hooks at the end of repository "bootstrap"
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 28 Feb 2017 16:55:32 +0100] rev 11988
[server] Call 'server_startup' hooks at the end of repository "bootstrap" Now that we have guarded all calls to Repository.looping_task() in 'server_startup' hooks we can execute this hooks category at bootstrap step. This way, repositories running without a tasks manager (i.e. those embedded into a WSGI application) will have these hooks triggered.
2017-02-28 [pyramid] Drop module-level cache and cleanup looping tasks in tools
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 28 Feb 2017 16:46:16 +0100] rev 11987
[pyramid] Drop module-level cache and cleanup looping tasks in tools And use a LRU cache over cached_build_user function. This looping task is problematic because it would not be run from within a WSGI application which does not have a repository with a tasks manager. This pulls an explicit dependency on 'repoze.lru' but it's not a big deal since pyramid already depends on this. RPM spec file not update since it does not even mention pyramid...
2017-02-28 [hooks] Return early in server_startup hooks if the repository has not tasks manager
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 28 Feb 2017 16:11:17 +0100] rev 11986
[hooks] Return early in server_startup hooks if the repository has not tasks manager
2017-02-28 [server] Only register "clean_sessions" looping tasks if repository has a tasks manager
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 28 Feb 2017 16:05:00 +0100] rev 11985
[server] Only register "clean_sessions" looping tasks if repository has a tasks manager This prepares for calling Repository's _prepare_startup() in bootstrap() so that repository instances without a tasks manager running can still have their 'server_startup' hooks triggered (this is particularly useful for BFSS storages).
2017-02-24 [utils] Do not pass a tasks manager to Repository in admincnx()
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 24 Feb 2017 10:16:17 +0100] rev 11984
[utils] Do not pass a tasks manager to Repository in admincnx() We do not call repo.start_looping_tasks() for the instantiated repository, so a tasks manager is useless.
2017-02-23 [server] Separate repository bootstrap from initialization
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 23 Feb 2017 18:02:33 +0100] rev 11983
[server] Separate repository bootstrap from initialization Thus we now call 'bootstrap' here and there explicitly and remove call of this method in Repository.__init__(). This way instantiation of a Repository does not *implicitly* triggers the "bootstrap" step, which is arguably not a trivial thing and thus deserves to be independent. In __init__, set 'shutting_down' attribute to None and then to False in bootstrap as a mean to indicate that, when initialized, a repository is neither shutting down nor started (not sure where this is used though).
2017-02-23 [server] Also remove tmpdir in case of error during restore database command
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 23 Feb 2017 17:51:11 +0100] rev 11982
[server] Also remove tmpdir in case of error during restore database command
2017-02-23 [server] Rename Repository's init_cnxset_pool method bootstrap
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 23 Feb 2017 17:47:18 +0100] rev 11981
[server] Rename Repository's init_cnxset_pool method bootstrap See the (removed) docstring for a rationale...
2017-02-23 [server] Replace server config's init_cnxset_pool attribute by a "bootstrap" parameter in Repository
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 23 Feb 2017 17:45:50 +0100] rev 11980
[server] Replace server config's init_cnxset_pool attribute by a "bootstrap" parameter in Repository This 'init_cnxset_pool' class attribute is actually used to control whether a Repository instance should be "bootstraped" (see Repository.init_cnxset_pool() for a definition of "bootstrap") or not. I seems clearer to me to have this controlled by a boolean "bootstrap" initialization parameter in Repository.
2017-02-23 [server] Drop close/open steps in NativeSQLSource.restore()
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 23 Feb 2017 17:38:47 +0100] rev 11979
[server] Drop close/open steps in NativeSQLSource.restore() The only place where this is called is in ServerMigrationHelper.restore_database() where config.init_cnxset_pool is set to False. So these steps appear to be useless.
2017-02-07 [skel] Fix rpm's .spec file skeleton
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 07 Feb 2017 10:37:37 +0100] rev 11978
[skel] Fix rpm's .spec file skeleton It's broken for new-style packages since it doesn't consider (even remove) python packages.
2017-02-23 [server] Move "starting repository..." message where this actually happens
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 23 Feb 2017 17:36:11 +0100] rev 11977
[server] Move "starting repository..." message where this actually happens
2017-02-23 [server] Initialize Repository without a tasks manager in ServerMigrationHelper.restore_database()
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 23 Feb 2017 17:34:37 +0100] rev 11976
[server] Initialize Repository without a tasks manager in ServerMigrationHelper.restore_database() We don't need a tasks manager here I think. Thus instantiate the Repository from its class directly instead of using config.repository() which set a tasks manager.
2017-02-23 [server] Fix a typo in log message in Repository.init_cnxset_pool()
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 23 Feb 2017 17:34:12 +0100] rev 11975
[server] Fix a typo in log message in Repository.init_cnxset_pool()
2017-02-24 [cwconfig] Issue a warning if a configuration module cannot be loaded
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 24 Feb 2017 09:19:35 +0100] rev 11974
[cwconfig] Issue a warning if a configuration module cannot be loaded We already do this when loading ctl plugin modules, so make things symmetrical for config modules.
2017-02-24 [ctl] Load available configurations in "cubicweb-ctl list"
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 24 Feb 2017 09:18:08 +0100] rev 11973
[ctl] Load available configurations in "cubicweb-ctl list" Otherwise we rely on associated ctl plugins to be loaded which is arguably orthogonal to configurations.
2017-02-23 [skeleton] Set cubicweb.bwcompat to False in development.ini
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 23 Feb 2017 08:54:01 +0100] rev 11972
[skeleton] Set cubicweb.bwcompat to False in development.ini Quite a few things from the default web UI do not work when running the application through pserve (in particular, data files are not apparently served). So better disable the "bwcompat" mode until we are sure it works properly (or it gets dropped ;)).
2017-02-21 [pyramid] Use existing repo in PyramidCWTest
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 21 Feb 2017 17:41:32 +0100] rev 11971
[pyramid] Use existing repo in PyramidCWTest We thus do not make use of config_from_cwconfig() and build the configurator instance by hand prior to include 'cubicweb.pyramid'.
2017-02-21 [pyramid] Make it possible to setup CubicWeb instance from an existing repo in includeme()
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 21 Feb 2017 17:35:16 +0100] rev 11970
[pyramid] Make it possible to setup CubicWeb instance from an existing repo in includeme()
2017-02-21 [pyramid] Move loading of pyramid_debugtoolbar later in includeme()
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 21 Feb 2017 17:42:46 +0100] rev 11969
[pyramid] Move loading of pyramid_debugtoolbar later in includeme() To gather cwconfig and repository instantiations.
2017-02-21 [skeleton,pyramid] Move pyramid app definition in cubicweb.pyramid module
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 21 Feb 2017 08:54:20 +0100] rev 11968
[skeleton,pyramid] Move pyramid app definition in cubicweb.pyramid module The application definition is actually not specific to the final "cube" being bootstrapped from skeleton. This patch thus move the pyramid application function into cubicweb.pyramid module and let cubicweb register the "paste.app_factory" entry point (instead of the bootstrapped cube). Useless call to `config.scan` is dropped along the way.
2017-02-10 [pyramid] Add a copyright and docstring to all modules
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 10 Feb 2017 17:13:44 +0100] rev 11967
[pyramid] Add a copyright and docstring to all modules We add copyright statements for both UNLISH (original author) and LOGILAB.
2017-02-08 [cwconfig] Strip "cubicweb_" prefix from cube name in available_cubes()
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 08 Feb 2017 17:54:16 +0100] rev 11966
[cwconfig] Strip "cubicweb_" prefix from cube name in available_cubes() Closes #17054738.
2017-02-21 [web] fix os.rename usage on windows when destination exists
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 21 Feb 2017 10:12:47 +0100] rev 11965
[web] fix os.rename usage on windows when destination exists os.rename on windows will raise OSError (or WindowsError subclass) when if destination file already exists. Also check that exception is EEXIST. There is an attempt to fix in f6ba947c but using IOError instead of OSError. Closes #14214794
2017-01-25 [web/views] show composite entities in delete view
Philippe Pepiot <philippe.pepiot@logilab.fr> [Wed, 25 Jan 2017 14:28:20 +0100] rev 11964
[web/views] show composite entities in delete view Disabled by default, can be activated with show_composite = True Display first level of composite entities in a treeview, limited to the current (page_size - 1), so the maximum of displayed entities bump to page_size * (page_size - 1).
2015-05-11 [workflow] Utilities for declarative definition of workflows
Christophe de Vienne <christophe@unlish.com> [Mon, 11 May 2015 13:57:34 +0200] rev 11963
[workflow] Utilities for declarative definition of workflows Closes #5337897
2017-02-20 [server] Remove pseudo-handling of exceptions in Repository._delete_cascade_multi()
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 20 Feb 2017 15:56:07 +0100] rev 11962
[server] Remove pseudo-handling of exceptions in Repository._delete_cascade_multi() It seems to me that we never want to pass on an exception here be it in "test" mode or not, so remove the last `except Exception:` clause. For instance, the actual implementation would pass on an IntegrityError and thus possibly hide it in a log message. Concerning the `except Unauthorized:`, as said by the log message this should not happen because we are within a `security_enabled(write=False)` context. So remove it as well. As far as I can tell, this strange handling of exceptions dates from 37668bf302f5 and there is no clear justification to it.
2017-02-21 [web] fix os.rename usage on windows when destination exists 3.23
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 21 Feb 2017 10:12:47 +0100] rev 11961
[web] fix os.rename usage on windows when destination exists os.rename on windows will raise OSError (or WindowsError subclass) when if destination file already exists. Also check that exception is EEXIST. There is an attempt to fix in f6ba947c but using IOError instead of OSError. Closes #14214794
2017-02-09 [skeleton] Add "cubicweb.session.secret" to development.ini
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 09 Feb 2017 10:31:15 +0100] rev 11960
[skeleton] Add "cubicweb.session.secret" to development.ini Commented as other "secret" settings. At least, now all settings are present in the development.ini file. [ci skip]
2017-02-10 [pyramid] Include 'cubicweb.pyramid.predicates' where it is used
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 10 Feb 2017 16:55:23 +0100] rev 11959
[pyramid] Include 'cubicweb.pyramid.predicates' where it is used It's only used in "rest_api" module.
2017-02-10 [pyramid] Rename make_cubicweb_application function as config_from_cwconfig
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 10 Feb 2017 16:33:16 +0100] rev 11958
[pyramid] Rename make_cubicweb_application function as config_from_cwconfig And update its docstring. This function does not actually "make a cubicweb application", it just builds a pyramid.config.Configurator instance from a CubicWeb config object.
2017-02-08 [server] Reprase messages of db-check to avoid using "system" and "sources"
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 08 Feb 2017 17:49:25 +0100] rev 11957
[server] Reprase messages of db-check to avoid using "system" and "sources" And rather mention "entity type table" and "entities" table, which are clearer references.
2017-02-20 [predicates] Fix reference to has_related_entities in partial_has_related_entities docstring
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 20 Feb 2017 16:39:07 +0100] rev 11956
[predicates] Fix reference to has_related_entities in partial_has_related_entities docstring
2017-02-07 Fix possible double import of cubes modules
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 07 Feb 2017 13:47:03 +0100] rev 11955
Fix possible double import of cubes modules When cubes using the new layout are imported with 'cubicweb_<cube>' and with 'cubes.<cube>', the same module is imported twice. Handle this by adding 'cubes.<cube>' to sys.modules when importing from 'cubicweb_<cube>'. Move load_module() to a sub class _CubesLoader to share informations computed in find_modules(). Don't handle subpackages in _CubesImporter and rely on normal import machinery instead. Add a test and use unittest from cubicweb.devtools.testlib which resolve to unittest2 on PY2 with assertLogs() method.
2017-02-08 Make load_module() return existing module if present in sys.modules
Philippe Pepiot <philippe.pepiot@logilab.fr> [Wed, 08 Feb 2017 10:31:26 +0100] rev 11954
Make load_module() return existing module if present in sys.modules Otherwise the reload() builtin will not work correctly: https://www.python.org/dev/peps/pep-0302/#specification-part-1-the-importer-protocol
2017-02-06 [server] Ignore computed relations in "relations" integrity checker
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 06 Feb 2017 15:43:19 +0100] rev 11953
[server] Ignore computed relations in "relations" integrity checker
2017-02-06 [server] Use global registry variable of integrity checker functions
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 06 Feb 2017 15:40:39 +0100] rev 11952
[server] Use global registry variable of integrity checker functions Instead of querying globals() in checkintegrity.check(), we maintain a _CHECKERS dict mapping checker name to function in checkintegrity module. This is later used to build the list of available checkers in 'db-check' command help.
2017-02-07 [doc] Add 3.25 release notes
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 07 Feb 2017 18:18:22 +0100] rev 11951
[doc] Add 3.25 release notes [ci skip]
(0) -10000 -3000 -1000 -192 +192 tip