Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 28 Nov 2019 11:30:23 +0100] rev 12778
[pkg] Version 3.27.0rc1
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Nov 2019 20:26:58 +0100] rev 12777
[debug-toolbar/display_source_code] add links to files in tracebacks
Laurent Peuch <cortex@worlddomination.be> [Fri, 27 Sep 2019 07:00:51 +0200] rev 12776
[debug-toolbar] link to source code of all objects/classes
Closes #17256791
Laurent Peuch <cortex@worlddomination.be> [Fri, 27 Sep 2019 06:59:48 +0200] rev 12775
[debug-toolbar/display_source_code] add a function to add links to source file in traceback
Closes #17256791
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Nov 2019 16:03:06 +0100] rev 12774
[debug-toolbar/display_source_code] add function to generate html link to source code
Laurent Peuch <cortex@worlddomination.be> [Thu, 26 Sep 2019 06:27:53 +0200] rev 12773
[debug-toolbar/display_source_code/security] add security mechanism to only read whitelisted files
Closes #17256791
Laurent Peuch <cortex@worlddomination.be> [Fri, 27 Sep 2019 06:51:29 +0200] rev 12772
[debug-toolbar/display_source_code] add helper to render link to source file
Closes #17256791
Laurent Peuch <cortex@worlddomination.be> [Tue, 08 Oct 2019 22:14:06 +0200] rev 12771
[debug-toolbar/display_source_code] add a pyramid view that display syntax highlighted python source file
This will be used for tool building for easier debugging.
Closes #17256791
Laurent Peuch <cortex@worlddomination.be> [Wed, 25 Sep 2019 05:42:47 +0200] rev 12770
[mod] allow to pass generic additional arguments to pygments HtmlFormatter
Laurent Peuch <cortex@worlddomination.be> [Fri, 27 Sep 2019 06:20:39 +0200] rev 12769
[debug/fix] ensure that not syntax highlighted code is a string
Otherwise it could be in another unrendered form that makes marko complains.
Closes #17256791
Laurent Peuch <cortex@worlddomination.be> [Thu, 12 Sep 2019 05:59:10 +0200] rev 12768
[debug-toolbar] add registry decisions debug panel
Closes #17219866
Laurent Peuch <cortex@worlddomination.be> [Wed, 20 Nov 2019 20:46:45 +0100] rev 12767
Increase needed version of logilab-common to >= 1.5.0
Laurent Peuch <cortex@worlddomination.be> [Thu, 14 Nov 2019 15:40:35 +0100] rev 12766
[debug-toolbar] add registry panel
Closes #17219866
Laurent Peuch <cortex@worlddomination.be> [Thu, 14 Nov 2019 01:01:00 +0100] rev 12765
[debug-toolbar] add sql panel
Closes #17219873
Laurent Peuch <cortex@worlddomination.be> [Tue, 08 Oct 2019 23:11:19 +0200] rev 12764
[debug-toolbar] add cw general panel with controller
Closes #17219897
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Mon, 18 Nov 2019 12:41:44 +0100] rev 12763
[debug-toolbar] make linter happy
Laurent Peuch <cortex@worlddomination.be> [Wed, 31 Jul 2019 04:16:20 +0200] rev 12762
[pyramid/ctl/debugtoolbar] automatically include custom panels on -t
Laurent Peuch <cortex@worlddomination.be> [Thu, 01 Aug 2019 20:30:16 +0200] rev 12761
[debug-toolbar/rql] display sql queries generated by rql ones
Laurent Peuch <cortex@worlddomination.be> [Wed, 31 Jul 2019 04:16:20 +0200] rev 12760
[debug-toolbar/rql] add RQL panel
Closes #17219673
Laurent Peuch <cortex@worlddomination.be> [Thu, 24 Oct 2019 06:37:02 +0200] rev 12759
[debug/emit/rql] add RQL debug channel and emit queries
This is used for the RQL debug panel but can be used as a generic mechanism for
several tools.
Laurent Peuch <cortex@worlddomination.be> [Wed, 06 Nov 2019 14:43:49 +0100] rev 12758
[debug/source_highlight] rename highlight to highlight_terminal
Laurent Peuch <cortex@worlddomination.be> [Thu, 24 Oct 2019 06:34:42 +0200] rev 12757
[debug/source_highlight] add highlight_html and generate_css for debugtool panels
Laurent Peuch <cortex@worlddomination.be> [Thu, 01 Aug 2019 05:42:45 +0200] rev 12756
[debug/rql] bind a uniq token per rql to trace its decomposition
This is aimed to be used by the RQL debug panel (and the SQL one later on) but
can also be used by other debugging tools.
Laurent Peuch <cortex@worlddomination.be> [Thu, 01 Aug 2019 02:51:52 +0200] rev 12755
[debug] add a new channel events mechanism for debugging
Laurent Peuch <cortex@worlddomination.be> [Wed, 06 Nov 2019 12:52:50 +0100] rev 12754
[ctl] allow to specific instance name for instance commands in $CW_INSTANCE
Closes #17253994
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Tue, 05 Nov 2019 23:19:15 +0100] rev 12753
[cubicweb/utils] add QueryCache.__contains__() to improve dict-like behavior. Closes #255426
Laurent Peuch <cortex@worlddomination.be> [Thu, 23 May 2019 00:33:31 +0200] rev 12752
[migrations/pdb] add to every failing migration operation a "p(db)" option
Instead, the migration command will just crash without offering the possibility
of the user to debug or continue the migration.
Closes #17219772
Laurent Peuch <cortex@worlddomination.be> [Wed, 29 May 2019 20:29:07 +0200] rev 12751
[pyramid/ctl] add a new option to activate the debugtoolbar (-t)
While this toolbar isn't yet very integrated with CW, it integrates an inline
debugging shell like werkzeug for flask or django_extensions which greatly
helps debugging on exception.
It can already be manually activated by writting "pyramid.includes =
pyramid_debugtoolbar" but it's hidden somewhere in the documentation and not
very accessible and annoying to do.
Closes #17219765
Laurent Peuch <cortex@worlddomination.be> [Wed, 23 Oct 2019 04:28:45 +0200] rev 12750
[changelog] add missing information to the 3.27 changelog
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Fri, 18 Oct 2019 23:39:03 +0200] rev 12749
Merge 3.26
Laurent Peuch <cortex@worlddomination.be> [Tue, 27 Aug 2019 20:16:01 +0200] rev 12748
[debug] add ALL possibility to --dbglevel
Laurent Peuch <cortex@worlddomination.be> [Wed, 26 Jun 2019 02:32:02 +0200] rev 12747
[ux] display instance name in suggested upgrade command
Laurent Peuch <cortex@worlddomination.be> [Thu, 23 May 2019 00:33:04 +0200] rev 12746
[migration/pdb] display traceback instead of only the exception for easier debugging
Closes #17219820
Laurent Peuch <cortex@worlddomination.be> [Wed, 22 May 2019 17:10:06 +0200] rev 12745
[migration/pdb] add option to use pdb.post_mortem if traceback is provided
Post mortem is a mode where the pdb shell is opened **where** the exception as
occured instead at the breakpoint for set_trace. This is way more useful for
debugging for the user because is will have the full context of the error.
Closes #17219827
Laurent Peuch <cortex@worlddomination.be> [Wed, 22 May 2019 17:08:09 +0200] rev 12744
[migration/shell] select ipdb if present on (d)ebug mode
Closes #17219833
Laurent Peuch <cortex@worlddomination.be> [Wed, 22 May 2019 14:23:01 +0200] rev 12743
[mod] move get_pdb to utils.py
Noe Gaumont <ngaumont@logilab.fr> [Wed, 16 Oct 2019 14:49:38 +0200] rev 12742
Add a migration function in order to relocate bfss
Related to https://www.cubicweb.org/ticket/1903304
Laurent Peuch <cortex@worlddomination.be> [Wed, 12 Jun 2019 19:58:00 +0200] rev 12741
[pyramid/debug] on every request display request path and selected controller
This will display lines like:
2019-06-12 16:26:57 - (cubicweb.pyramid.bwcompat) INFO: REQUEST [view] '/wiki/334037' selected controller <cubicweb.web.views.basecontrollers.ViewController object at 0x7f133802ae90> at /root/.virtualenvs/abreton/local/lib/python2.7/site-packages/cubicweb/web/views/basecontrollers.py:120
2019-06-12 16:26:59 - (cubicweb.pyramid.bwcompat) INFO: REQUEST [data] '/data/ea5eb3b6f89fba0ff4b671093c88d3dd/images/cartouche-mur.jpg' selected controller <cubicweb.web.views.staticcontrollers.DataController object at 0x7f1332a84d50> at /root/.virtualenvs/abreton/local/lib/python2.7/site-packages/cubicweb/web/views/staticcontrollers.py:179
The make debugging easier as this isn't done already. Most other web frameworks
do something similar for the developper to be able to understand what is
happening right now.
Closes #17219741
Laurent Peuch <cortex@worlddomination.be> [Wed, 21 Aug 2019 04:52:08 +0200] rev 12740
[logging/debug] move transaction operations logs from self.debug to DBG_OPS
There were a mixing between displaying transaction operations log on
logger.debug and only when DBG_OPS was on, uniformize everything behind
DBG_OPS.
Closes #17229126
Laurent Peuch <cortex@worlddomination.be> [Wed, 21 Aug 2019 02:10:12 +0200] rev 12739
[debug] syntax highlight SQL and RQL debug output
This prevent DBG_RQL and DBG_SQL output to looks like a gigantic blob of white
text.
Do this only if we detect that we are in a tty and that pygments is installed.
Closes #17222885
Laurent Peuch <cortex@worlddomination.be> [Tue, 20 Aug 2019 22:45:46 +0200] rev 12738
[logging] send logs by default to stdout
Following the move to have commands only working on foreground sending logs to
a file by default doesn't make much more sens anymore so send them to stdout by
default and add a new option to send them to a file if needed
Laurent Peuch <cortex@worlddomination.be> [Tue, 21 May 2019 18:16:51 +0200] rev 12737
[cubicweb-ctl] backport --dbglevel option of pyramid to all instance commands
Closes #17219653
Laurent Peuch <cortex@worlddomination.be> [Tue, 21 May 2019 18:08:17 +0200] rev 12736
[cubicweb-ctl] backport --loglevel option of pyramid to all instance commands
Laurent Peuch <cortex@worlddomination.be> [Thu, 25 Jul 2019 03:33:01 +0200] rev 12735
[cubicweb-ctl/fix] correctly get exception traceback_ for pdb.post_mortem
In python 3 the behavior of sys.exc_info had a very subtle change:
- in python 2 you can call if whenever you want after a try/except statement
and you'll get information about this last raise
- ipython 3, once you get out of try/except, sys.exc_info is cleaned and you'll
get (None, None, None)
Hardened the test to avoid this error from happening again.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 15 Oct 2019 15:30:56 +0200] rev 12734
Document mercurial configuration for contributing
* how to use master/review repositories
* how to send the "Available at" command in patchbomb emails
* how to add the "cubicweb" flag in patchbomb emails
* how to use our "jenkins" mercurial extension
Closes #17243538
Noe Gaumont <ngaumont@logilab.fr> [Fri, 11 Oct 2019 12:42:35 +0200] rev 12733
Add documentation on workflow permission
Noe Gaumont <ngaumont@logilab.fr> [Fri, 11 Oct 2019 12:41:16 +0200] rev 12732
Remove undefined function in documentation
Philippe Pepiot <philippe.pepiot@logilab.fr> [Wed, 09 Oct 2019 11:44:22 +0200] rev 12731
Merge 3.26
Laurent Peuch <cortex@worlddomination.be> [Wed, 22 May 2019 01:16:55 +0200] rev 12730
[pyramid/ctl] pyramid command will always run in foreground from now on
Daemonization used to make sens in the past, but today "pyramid" command is
only used for dev and should never be used for deployement (you should use a
wsgi server for that instead) so daemonization doesn't fit any use case
anymore.
Closes #17232923
Laurent Peuch <cortex@worlddomination.be> [Thu, 22 Aug 2019 04:07:08 +0200] rev 12729
[clean] remove pyramid warning about looping task
This warning isn't useful anymore.
Laurent Peuch <cortex@worlddomination.be> [Thu, 20 Jun 2019 16:18:19 +0200] rev 12728
[doc] add instruction to re-enable ckeditor
Laurent Peuch <cortex@worlddomination.be> [Wed, 11 Sep 2019 18:31:08 +0200] rev 12727
[fix] reference to underclared and unused variable kwargs
Philippe Pepiot <philippe.pepiot@logilab.fr> [Wed, 11 Sep 2019 11:56:43 +0200] rev 12726
Avoid to update inlined relation column to NULL when deleting entities
When deleting entities, cubicweb run a rql DELETE on all relations to trigger hooks.
For an inlined relation this also mean set the column to NULL. This operation
may fail if there's additional constraints on the column.
Also this is a weird and useless behavior since deleting the entity row will by
definition delete the relation.
We still doesn't handle the case where both subject and object are going to be
deleted because rows need to be deleted in a particular order that cubicweb
doesn't handle.
Add a test checking UPDATE does not occur but hooks are correctly called.
Closes #17236690
Philippe Pepiot <philippe.pepiot@logilab.fr> [Wed, 11 Sep 2019 11:37:05 +0200] rev 12725
Drop useless ConstraintInsertionTC
This test does nothing and is here from the begining of repo history.
Now it raise an error "TypeError: Skipped expected string as 'msg' parameter, got 'SkipTest' instead. Perhaps you meant to use a mark?"
Just drop it.
Nicola Spanti <nicola.spanti@logilab.fr> [Tue, 27 Aug 2019 14:26:21 +0200] rev 12724
Backed out changeset 741dc2590f90
It was for cube s3storage, but this piece of information was
apparently not in the email (used for review), so this patch was
published in the wrong repository. :-/
Arthur Lutz <arthur.lutz@logilab.fr> [Fri, 23 Aug 2019 11:16:46 +0200] rev 12723
[.gitlab-ci] initial version (tox targets)
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 06 Aug 2019 16:43:46 +0200] rev 12722
Merge with 3.26
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 06 Aug 2019 16:36:21 +0200] rev 12721
Added tag debian/3.26.14-1, 3.26.14 for changeset 172f683a84f6
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 06 Aug 2019 15:43:59 +0200] rev 12720
[pkg] version 3.26.14
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 06 Aug 2019 14:26:17 +0200] rev 12719
[py3] Pass bytes as "msg" to smtplib.SMTP.sendmail()
When passing a unicode string to smtplib.SMTP.sendmail() as "msg"
argument, there is an implicit bytes encoding using "ascii" encoding in
python3. Of course this does not work if the string contains non-ASCII
characters. In fact, config's sendmails method intent to pass bytes to
smtplib.SMTP.sendmail() as it uses msg.as_string() method.
Unfortunately, in python3, this method returns a unicode string whereas
it returns a bytes string in python2; we thus fix this by calling
as_bytes() method on python3.
As there is no "as_bytes" method in python2, we need to handle python2
compatibility by hand and either call as_string() or as_bytes().
In testlib, where we mock smtplib.SMTP, we need to keep the "msg"
argument of Email class (defined in testlib as well) a unicode string.
Otherwise, it fails to be parsed by email.message_from_string() (from
stdlib) if it is bytes on python3.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 01 Aug 2019 09:20:40 +0200] rev 12718
[debian] Cleanup d/source/options from now gone symlinks
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 01 Aug 2019 09:13:52 +0200] rev 12717
[pkg] Version 3.27.0.a2
Laurent Peuch <cortex@worlddomination.be> [Wed, 24 Jul 2019 15:28:11 +0200] rev 12716
[debug/clean] remove unused DBG_MS flag
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 30 Jul 2019 14:47:25 +0200] rev 12715
Avoid using gone hooks_control() in migration
This deprecated function got dropped in a8c1ea390400.
Remove unused import in 3.10.9_Any.py migration; replace usage in
bootstrapmigration_repository.py by non-deprecated form.
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 30 Jul 2019 14:42:15 +0200] rev 12714
[tox] Remove --ignore in check-manifest check
All symlinks have been dropped in previous changesets.
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 30 Jul 2019 10:16:51 +0200] rev 12713
[doc] link to 3.27 (and missing 3.26) pages
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 24 Jul 2019 16:52:59 +0200] rev 12712
[pkg] Version 3.27.0a1
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 24 Jul 2019 16:52:00 +0200] rev 12711
[test] Replace symlinks by real copies
This solves a "python setup.py build" issue.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 24 Jul 2019 16:03:01 +0200] rev 12710
[pkg] Version 3.27.0a0
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 24 Jul 2019 15:14:56 +0200] rev 12709
Merge with 3.26
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 24 Jul 2019 13:39:52 +0200] rev 12708
Added tag debian/3.26.13-1, 3.26.13 for changeset 1fc684253207
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 24 Jul 2019 10:22:25 +0200] rev 12707
[pkg] Version 3.26.13
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 24 Jul 2019 11:43:21 +0200] rev 12706
[test] Replace symlinks in legacy_cubes by real copies
This solves a "python setup.py build" issue on my machine.
Copying these files should not be a big deal because they
have been dropped in the "default" branch and we would not
touch them in 3.26 branch.
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 23 Jul 2019 17:21:18 +0200] rev 12705
[pkg] Prune packaging files from sdist
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Mon, 10 Jun 2019 12:04:39 +0200] rev 12704
[pkg] Fix spelling mistake in doc-base abstract
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Mon, 10 Jun 2019 12:04:11 +0200] rev 12703
[pkg] Fix doc-base section
As pointed by Lintian, the “Apps” section is only used in menu,
not in doc-base. We can just remove it.
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Mon, 10 Jun 2019 11:15:17 +0200] rev 12702
[pkg] Move lintian-overrides file to debian/source directory
Just use the now preferred location.
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Thu, 13 Jun 2019 16:47:47 +0200] rev 12701
[pkg] Tidy substvars usage in control file
The documentation package was missing a Built-Using field to record
the provenance of the templates.
Empty packages or meta packages do not require Depends on a specific
Python version, so we can remove the relevant substvars.
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Mon, 10 Jun 2019 10:53:48 +0200] rev 12700
[pkg] Specify priority “optional” instead of the obsolete “extra”
Quoting Lintian, “Since Debian Policy version 4.0.1, the priority extra
has been deprecated.” So let's use “optional” instead.
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Wed, 05 Jun 2019 16:29:04 +0200] rev 12699
[pkg] Switch to Debian source format 3.0 (quilt)
This forces us to base the Debian package on the source of the Python
package (as produced by running `python3 setup.py sdist`). While
it might seem cumbersome, this greatly reduces likelyhood of mismatch
between an installation via `pip` and one using the Debian package.
`dpkg-source` will also document for us what is currently in the
source repository but not in the Python package. Currently the missing
file are:
PKG-INFO
cubicweb/sobjects/test/data/cubicweb_comment/schema.py
cubicweb/sobjects/test/data/cubicweb_comment/__init__.py
cubicweb/sobjects/test/data/cubicweb_comment/__pkginfo__.py
cubicweb/sobjects/test/data/cubicweb_card/schema.py
cubicweb/sobjects/test/data/cubicweb_card/entities.py
cubicweb/sobjects/test/data/cubicweb_card/__init__.py
cubicweb/sobjects/test/data/cubicweb_card/__pkginfo__.py
cubicweb/server/test/data-migractions/cubicweb_comment/schema.py
cubicweb/server/test/data-migractions/cubicweb_comment/__init__.py
cubicweb/server/test/data-migractions/cubicweb_comment/__pkginfo__.py
cubicweb/server/test/data-migractions/cubicweb_localperms/schema.py
cubicweb/server/test/data-migractions/cubicweb_localperms/__init__.py
cubicweb/server/test/data-migractions/cubicweb_localperms/__pkginfo__.py
cubicweb/server/test/data-migractions/cubicweb_basket/schema.py
cubicweb/server/test/data-migractions/cubicweb_basket/__init__.py
cubicweb/server/test/data-migractions/cubicweb_basket/__pkginfo__.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_comment/schema.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_comment/__init__.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_comment/__pkginfo__.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_localperms/schema.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_localperms/__init__.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_localperms/__pkginfo__.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_basket/schema.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_basket/__init__.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_basket/__pkginfo__.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_tag/schema.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_tag/__init__.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_tag/__pkginfo__.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_card/schema.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_card/__init__.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_card/__pkginfo__.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_file/schema.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_file/__init__.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_file/__pkginfo__.py
cubicweb/server/test/data-migractions/cubicweb_tag/schema.py
cubicweb/server/test/data-migractions/cubicweb_tag/__init__.py
cubicweb/server/test/data-migractions/cubicweb_tag/__pkginfo__.py
cubicweb/server/test/data-migractions/cubicweb_card/schema.py
cubicweb/server/test/data-migractions/cubicweb_card/__init__.py
cubicweb/server/test/data-migractions/cubicweb_card/__pkginfo__.py
cubicweb/server/test/data-migractions/cubicweb_file/schema.py
cubicweb/server/test/data-migractions/cubicweb_file/__init__.py
cubicweb/server/test/data-migractions/cubicweb_file/__pkginfo__.py
cubicweb/test/data-rewrite/cubicweb_localperms/schema.py
cubicweb/test/data-rewrite/cubicweb_localperms/__init__.py
cubicweb/test/data-rewrite/cubicweb_localperms/__pkginfo__.py
cubicweb/test/data-rewrite/cubicweb_card/schema.py
cubicweb/test/data-rewrite/cubicweb_card/entities.py
cubicweb/test/data-rewrite/cubicweb_card/__init__.py
cubicweb/test/data-rewrite/cubicweb_card/__pkginfo__.py
The current manifest will duplicate several files that are stored as
symlinks in the Mercurial repository, hence the long list of ignored
files in `extend-diff-ignore`.
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 12 Jul 2019 11:52:27 +0200] rev 12698
[debian] Update description of cubicweb-ctl* packages
init scripts are no longer shipped.
Avoid mentionning "start" and "stop" command which should not be used in
production environments.
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 12 Jul 2019 11:49:46 +0200] rev 12697
[debian] Introduce a cubicweb-ctl3 binary package
This packages conflicts with cubicweb-ctl binary which uses the python2
library. It is meant to ease upgrade of existing installation during the
migration from python2 to python3: in particular, by installing
cubicweb-ctl3, scripts calling "cubicweb-ctl" command should still work
as before.
Laurent Peuch <cortex@worlddomination.be> [Mon, 22 Jul 2019 11:21:10 +0200] rev 12696
[cubicweb-ctl] respect sys.exit status code when aborting a command
When exploring the stack of all calls to a cubicweb-ctl command, it has been
discovered than on a KeyboardInterrupt and on a SystemExit exception the base
class InstanceCommand (for commands that works on one instance) will always set
the return code of cubicweb-ctl to 8: this mean that if another command do a
`sys.exit(some_code)` the exit code will be ignored and overwritten by '8'.
This behavior is not intuitive, apparently not documented and doesn't seems to
have any justification. It also prevent commands from exciting with different
return codes which could be a desired behavior in the situation of scripting.
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 22 Jul 2019 11:32:12 +0200] rev 12695
[test] Add an "actionverb" attribute to test commands
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 22 Jul 2019 11:25:17 +0200] rev 12694
[test] use self.assertRaises() in cwctl tests
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 22 Jul 2019 11:09:15 +0200] rev 12693
[test] ensure mocking is stopped in cwctl tests
Either use a decorator or ensure that cleanup is performed.
This is so as to prevent global state modification.
Laurent Peuch <cortex@worlddomination.be> [Tue, 21 May 2019 16:47:13 +0200] rev 12692
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 22 Jul 2019 10:54:22 +0200] rev 12691
[test] Rename TestCommand to avoid PytestCollectionWarning
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Wed, 10 Jul 2019 14:58:41 +0200] rev 12690
[pkg] Add new autopkgtest for skeleton packaging
When running `cubicweb-ctl newcube`, the generated template provides
debian packaging. So let's add automated tests for that using
autopkgtest.
The new test will generated a new cube, build a source tarball,
build the package, try to install it, see if the Python 2 and 3
modules are available and even run autopkgtest against the newly
created packages.
Along the way it will also print information about the generated
package: buildinfo, package content, and lintian report.
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Wed, 10 Jul 2019 14:57:58 +0200] rev 12689
[skeleton] Update Debian packaging template
Here are multiple updates to the Debian packaging template provided when
running `cubicweb-ctl newcube`:
* Switch to source format 3.0 (quilt).
* Switch to debhelper 9.
* Switch to dh-python.
* Add Python 3 packages.
* Name the binary packages `python-cubicweb-CUBENAME` and
`python3-cubicweb-CUBENAME` instead of just `cubicweb-CUBENAME` (which is
still the source package).
* Populate Depends using dh_python{2,3} support for Python requirements.
* Run test suite at build time using pytest.
* Add autopkgtest to run test suite against the installed package.
* Bump Standards-Version to 4.3.0.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 26 Jun 2019 12:35:25 +0200] rev 12688
[test] Use --short-description when testing newcube command
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Mon, 17 Jun 2019 17:23:36 +0200] rev 12687
[devtools] Allow to specify short desc on `newcube` command line
In order to implement automated testing of `cubicweb-ctl newcube`, we
need to avoid any user interaction. So we add a `-s` switch to specify
a short description on the command-line instead of requiring an input.
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Mon, 17 Jun 2019 17:25:04 +0200] rev 12686
[pkg] Add new autopkgtest for skeleton packaging
When running `cubicweb-ctl newcube`, the generated template provides
debian packaging. So let's add automated tests for that using
autopkgtest.
The new test will generated a new cube, build a source tarball,
build the package, try to install it, see if the Python 3 module is
available and even run autopkgtest against the newly created packages.
Along the way it will also print information about the generated
package: buildinfo, package content, and lintian report.
Laurent Peuch <cortex@worlddomination.be> [Tue, 21 May 2019 16:36:12 +0200] rev 12685
[cubicweb-ctl] move to accepting only once instance name per command
The rationals behind this decision are:
- while in the past managing all instances sytem wide made a lot of sens,
pratices have evolved today and we've moved to managing one instance by one
- this makes things easier to debug since commands since using them on several
instances were making this harder (errors hidden in the middle)
- also solve the problem of the return code to have, before it was always 0
which prevented to do things like:
ipython --pdb $(which cubicweb-ctl) $command $instance
or shell scripts that used it
- this simplify the code and is always good to take
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Tue, 09 Jul 2019 11:13:08 +0200] rev 12684
[pkg] Run all unit tests in autopkgtest
We previously forgot to copy `tox.ini` alongside the tests. As this
file configures pytest pattern matching rules, we were not running
quite a few tests. This is now fixed.
The added tests required some adjustments in the Debian dependencies.
Sadly, not all tests currently pass. It seems there are some ordering
dependencies between the tests in regards to how data are loaded.
Fixing this probably would probably be better debugged by ensuring
the test suite does not fail when using pytest random-order plugin.
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Wed, 19 Jun 2019 18:45:10 +0200] rev 12683
[pkg] Stop running unit tests from skeleton
The test files shipped as part as the skeleton for `cubeweb-ctl newcube` are
not meant to be run as part of our test suite!
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Wed, 19 Jun 2019 18:43:38 +0200] rev 12682
[tests] Use 16 bytes key when testing Blowfish
The version of Cryptodome currently in Debian only accepts Blowfish keys
with at least 5 bytes. This is a bug (it should accept 4 as it did
before) that has since been fixed upstream:
https://github.com/Legrandin/pycryptodome/commit/93912230f3c39e09f4038cb17e301468687c6538
So we work around this issue by using a 16 bytes key instead
(which happens to be the minimum recommended length).
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 09 Jul 2019 14:35:44 +0200] rev 12681
Use time.process_time() instead of deprecated clock()
This fixes:
DeprecationWarning: time.clock has been deprecated in Python 3.3 and
will be removed from Python 3.8: use time.perf_counter or
time.process_time instead
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 09 Jul 2019 14:20:30 +0200] rev 12680
[web] Make the time separator configurable in JQueryDateTimePicker
We add a "separator" argument to JQueryDateTimePicker which will be used
when creating the underlying JQueryTimePicker instance so that the user
can control how time is displayed by the widget. This is very similar to
the "timesteps" argument that's already present.
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 02 Jul 2019 14:54:01 +0200] rev 12679
Added tag 3.26.12, debian/3.26.12-1 for changeset 4531a266f8b2
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 02 Jul 2019 11:32:59 +0200] rev 12678
[pkg] Version 3.26.12
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 27 Jun 2019 12:20:22 +0200] rev 12677
[autoform] Fix display_fields handling
This follows-up on changeset b2ceb483e056 (present in 3.25 as well), in
which AutomaticEntityForm.editable_attributes() was turned into a
generator. In this method, in case display_fields is not None, we
previously returned a list of (rtype, role); this was changed into a
yield, but the change was missing a return after the loop in order not
to go through the remainder of the function.
Add tests for editable_attributes() method.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 27 Jun 2019 12:27:37 +0200] rev 12676
Flake8 cubicweb/web/views/autoform.py
Fixes:
cubicweb/web/views/autoform.py:703: [E122] continuation line missing indentation or outdented
cubicweb/web/views/autoform.py:704: [E122] continuation line missing indentation or outdented
cubicweb/web/views/autoform.py:819: [W504] line break after binary operator
cubicweb/web/views/autoform.py:820: [E125] continuation line with same indent as next logical line
cubicweb/web/views/autoform.py:961: [W504] line break after binary operator
cubicweb/web/views/autoform.py:962: [E126] continuation line over-indented for hanging indent
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 27 Jun 2019 12:13:21 +0200] rev 12675
[py3] unicode() -> six.text_type in autoform
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 26 Jun 2019 15:01:45 +0200] rev 12674
Added tag debian/3.26.11-2 for changeset e7eb914df71d
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 26 Jun 2019 15:01:15 +0200] rev 12673
[debian] Release 3.26.11-2
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 26 Jun 2019 13:19:30 +0200] rev 12672
[test] Require pycryptodomex, not pycryptodome
This follows up on changeset 5b0ce10a7046.
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 25 Jun 2019 16:44:31 +0200] rev 12671
[debian] Mention Lintian warnings fixes from previous changesets
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 25 Jun 2019 16:24:45 +0200] rev 12670
[debian] Remove unused/redundant entries from debian/cubicweb-ctl.dirs
* bash completion entry produces a lintian warning
"package-installs-into-obsolete-dir etc/bash_completion.d/", and it does not
install bash completion.
* doc directory should be handled automatically.
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 25 Jun 2019 16:21:41 +0200] rev 12669
[debian] Make descriptions of python-cubicweb and python3-cubicweb uniform
Thus solving lintian warning "description-synopsis-starts-with-article".
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 25 Jun 2019 14:49:16 +0200] rev 12668
[debian] Mention that -postgresql-support binaries are dependency package
Fixing lintian warning "empty-binary-package".
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 25 Jun 2019 14:42:06 +0200] rev 12667
[debian] Add ${misc:Depends} where missing
Fixes lintian warning "debhelper-but-no-misc-depends".
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 25 Jun 2019 16:43:16 +0200] rev 12666
[debian] Set Section: python for python- binary package
This is to fix a Lintian warning.
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 25 Jun 2019 16:42:58 +0200] rev 12665
[debian] Install cubicweb-ctl from python2 build
Previously, the binary package was empty. Now it is bound to
the python2 package as support for python3 is "fresh".
In order python2 and python3 packages to be co-installable, we drop the
cubicweb-ctl file from both packages.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 20 Jun 2019 17:02:59 +0200] rev 12664
[debian] Introduce python3-cubicweb and python3-cubicweb-pyramid binary packages
This is the bare minimum to have a working cubicweb on python3. Further
work is done in default branch.
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Wed, 19 Jun 2019 09:51:38 +0200] rev 12663
[skeleton] Update Debian packaging template
Here are multiple updates to the Debian packaging template provided when
running `cubicweb-ctl newcube`:
* Switch to source format 3.0 (quilt).
* Switch to debhelper 9.
* Switch to dh-python.
* Switch to Python 3.
* Name the binary package `python3-cubicweb-CUBENAME` instead of
just `cubicweb-CUBENAME` (which is still the source package).
* Populate Depends using dh_python3 support for Python requirements.
* Run test suite at build time using pytest.
* Add autopkgtest to run test suite against the installed package.
* Bump Standards-Version to 4.3.0.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 26 Jun 2019 12:35:25 +0200] rev 12662
[test] Use --short-description when testing newcube command
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Mon, 17 Jun 2019 17:23:36 +0200] rev 12661
[devtools] Allow to specify short desc on `newcube` command line
In order to implement automated testing of `cubicweb-ctl newcube`, we
need to avoid any user interaction. So we add a `-s` switch to specify
a short description on the command-line instead of requiring an input.
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Mon, 10 Jun 2019 10:51:31 +0200] rev 12660
[pkg] Remove build dependency on dh-systemd
As suggested by Lintian, remove build dependency on obsolete package
dh-systemd. Instead, specify a more precise version of debhelper 9 that
added support for systemd.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 13 Jun 2019 15:04:13 +0200] rev 12659
[config] Raise in case of failure to send emails when in test mode
Since, for some reason, exception log messages are not visible when
running tests, it's very hard to debug when sendmails() method fails
during tests. So, as in some other places, let's raise the exception
when in test mode.
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Wed, 19 Jun 2019 16:33:15 +0200] rev 12658
[doc] Update documentation to match current Debian packages
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Wed, 19 Jun 2019 16:32:25 +0200] rev 12657
[pkg] Remove transitional packages
We can take the opportunity of the switch to Python 3 to get rid
of old transitional packages. Let's do it. :)
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Wed, 19 Jun 2019 16:10:19 +0200] rev 12656
[pkg] Use sections from requires.txt to populate Recommends and Suggests
As Denis Laxalde pointed out, dh_python can also generate Recommends and
Suggests from Python package names. So let's use that instead of
manually populating these fields in `debian/control`.
Optional dependencies are currently specified in `setup.py` grouped by
feature. These dependency groups are turned into sections in
`requires.txt`. Thankfully `dh_python3` has options to populate
Recommends or Suggests with all package from a given section.
`debian/rules` now contains a list of which sections should go
to Recommends and which section should go to Suggests. Because such
extra list easily gets out-of-sync, we add a third list for ignored
sections, and ensure that all sections currently in `requires.txt`
get a mentioned in `debian/rules`.
Here are the results compared to the previous version with explicit
Recommends and Suggests (only listing Python packages):
|==============================================================|
| only in previous | common | only in new |
|==============================================================|
| Recommends |
|--------------------------------------------------------------|
| | python3-docutils | |
| python3-fyzz | | |
| python3-imaging | | |
| | python3-pycryptodome | |
| | python3-pyramid | |
| | python3-pyramid-multiauth | |
| python3-pysqlite2 | | |
| | python3-rdflib | |
| | python3-repoze.lru | |
| python3-simpletal | | |
| | python3-vobject | |
| | python3-waitress | |
| python3-werkzeug | | |
| | python3-wsgicors | |
|--------------------------------------------------------------|
| Suggests |
|--------------------------------------------------------------|
| | | python3-pil |
We also lose versioned dependencies which should not really be an issue
for Recommends and Suggests.
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Wed, 19 Jun 2019 15:44:17 +0200] rev 12655
[crypto] Use Cryptodome namespace instead of Crypto
PyCryptodome comes in two flavors: “an almost drop-in replacement for the old
PyCrypto library” and “a library independent of the old PyCrypto”. The former
uses the Crypto namespace, and is shipped as `pycryptodome` while the latter
uses Cryptodome instead and lies in the `pycryptodomex` package.
Given the reason to switch to PyCryptodome is that PyCrypto in unmaintained,
its probably better to avoid any mistake and mandate the specific usage of
the Cryptodome namespace by requiring `pycryptodomex` instead of
`pycryptodome`.
A more present reason is that Debian buster will only provide a package
with the separate namespace flavor. The current Recommends is not working with
the current code. Although it's important to note that the package name will
probably have to be changed to `python3-pycryptodomex` once
https://bugs.debian.org/886291 is solved.
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Mon, 17 Jun 2019 11:12:03 +0200] rev 12654
[pkg] Remove python3-six from Build-Depends
The default branch only provides support for Python 3.
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Mon, 17 Jun 2019 11:11:28 +0200] rev 12653
[pkg] Merge python3-cubicweb-pyramid into python3-cubicweb
As suggested by Denis Laxalde, we can merge python3-cubicweb-pyramid into
python3-cubicweb as all other web backend in the default branch.
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Mon, 17 Jun 2019 10:37:32 +0200] rev 12652
[pkg] Remove explicit Depends on Python packages for python3-cubicweb
As suggested by Denis Laxalde, we can let pybuild generate the list
of Depends from the egg requirements.
The list we get is slightly less specific in terms of needed versions,
but given the age of the previous ones, it's unlikely to cause issues.
Also we lose python3-six from the list… which is correct as it was
removed from the dependencies in 26744ad37953.
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Mon, 10 Jun 2019 12:04:39 +0200] rev 12651
[pkg] Fix spelling mistake in doc-base abstract
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Mon, 10 Jun 2019 12:04:11 +0200] rev 12650
[pkg] Fix doc-base section
As pointed by Lintian, the “Apps” section is only used in menu,
not in doc-base. We can just remove it.
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Mon, 10 Jun 2019 11:25:24 +0200] rev 12649
[pkg] Use “dependency package” instead of “virtual package” to describe python3-cubicweb-postgresql-support
The term “virtual” was too imprecise and is not accepted for empty
packages by Lintian anymore.
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Mon, 10 Jun 2019 11:15:17 +0200] rev 12648
[pkg] Move lintian-overrides file to debian/source directory
Just use the now preferred location.
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Mon, 10 Jun 2019 11:13:06 +0200] rev 12647
[pkg] Stop using /etc/bash_completion.d
cubicweb-ctl shipped an empty /etc/bash_completion.d as a leftover
of shipping a bash completion script. As pointed by Lintian, this
directory is not obsolete, so let's get rid of it for good.
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Thu, 13 Jun 2019 16:47:47 +0200] rev 12646
[pkg] Tidy substvars usage in control file
The documentation package was missing a Built-Using field to record
the provenance of the templates.
Empty packages or meta packages do not require Depends on a specific
Python version, so we can remove the relevant substvars.
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Mon, 10 Jun 2019 10:53:48 +0200] rev 12645
[pkg] Specify priority “optional” instead of the obsolete “extra”
Quoting Lintian, “Since Debian Policy version 4.0.1, the priority extra
has been deprecated.” So let's use “optional” instead.
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Mon, 10 Jun 2019 10:51:31 +0200] rev 12644
[pkg] Remove build dependency on dh-systemd
As suggested by Lintian, remove build dependency on obsolete package
dh-systemd. Instead, specify a more precise version of debhelper 9 that
added support for systemd.
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Wed, 05 Jun 2019 18:35:51 +0200] rev 12643
[pkg] Run test suite as part of autopkgtest
Add support for autopkgtest. The test “unittest” will run the test
suite using pytest. As we need PostgreSQL in the test environment
and open network connection, the test is marked with
`isolation-container` and requires at least LXC to be run, e.g:
autopkgtest -s -- lxc -s autopkgtest-sid
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Wed, 05 Jun 2019 16:29:04 +0200] rev 12642
[pkg] Switch to Debian source format 3.0 (quilt)
This forces us to base the Debian package on the source of the Python
package (as produced by running `python3 setup.py sdist`). While
it might seem cumbersome, this greatly reduces likelyhood of mismatch
between an installation via `pip` and one using the Debian package.
`dpkg-source` will also document for us what is currently in the
source repository but not in the Python package. Currently the missing
file are:
PKG-INFO
cubicweb/sobjects/test/data/cubicweb_comment/schema.py
cubicweb/sobjects/test/data/cubicweb_comment/__init__.py
cubicweb/sobjects/test/data/cubicweb_comment/__pkginfo__.py
cubicweb/sobjects/test/data/cubicweb_card/schema.py
cubicweb/sobjects/test/data/cubicweb_card/entities.py
cubicweb/sobjects/test/data/cubicweb_card/__init__.py
cubicweb/sobjects/test/data/cubicweb_card/__pkginfo__.py
cubicweb/server/test/data-migractions/cubicweb_comment/schema.py
cubicweb/server/test/data-migractions/cubicweb_comment/__init__.py
cubicweb/server/test/data-migractions/cubicweb_comment/__pkginfo__.py
cubicweb/server/test/data-migractions/cubicweb_localperms/schema.py
cubicweb/server/test/data-migractions/cubicweb_localperms/__init__.py
cubicweb/server/test/data-migractions/cubicweb_localperms/__pkginfo__.py
cubicweb/server/test/data-migractions/cubicweb_basket/schema.py
cubicweb/server/test/data-migractions/cubicweb_basket/__init__.py
cubicweb/server/test/data-migractions/cubicweb_basket/__pkginfo__.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_comment/schema.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_comment/__init__.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_comment/__pkginfo__.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_localperms/schema.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_localperms/__init__.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_localperms/__pkginfo__.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_basket/schema.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_basket/__init__.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_basket/__pkginfo__.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_tag/schema.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_tag/__init__.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_tag/__pkginfo__.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_card/schema.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_card/__init__.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_card/__pkginfo__.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_file/schema.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_file/__init__.py
cubicweb/server/test/data-migractions/migratedapp/cubicweb_file/__pkginfo__.py
cubicweb/server/test/data-migractions/cubicweb_tag/schema.py
cubicweb/server/test/data-migractions/cubicweb_tag/__init__.py
cubicweb/server/test/data-migractions/cubicweb_tag/__pkginfo__.py
cubicweb/server/test/data-migractions/cubicweb_card/schema.py
cubicweb/server/test/data-migractions/cubicweb_card/__init__.py
cubicweb/server/test/data-migractions/cubicweb_card/__pkginfo__.py
cubicweb/server/test/data-migractions/cubicweb_file/schema.py
cubicweb/server/test/data-migractions/cubicweb_file/__init__.py
cubicweb/server/test/data-migractions/cubicweb_file/__pkginfo__.py
cubicweb/test/data-rewrite/cubicweb_localperms/schema.py
cubicweb/test/data-rewrite/cubicweb_localperms/__init__.py
cubicweb/test/data-rewrite/cubicweb_localperms/__pkginfo__.py
cubicweb/test/data-rewrite/cubicweb_card/schema.py
cubicweb/test/data-rewrite/cubicweb_card/entities.py
cubicweb/test/data-rewrite/cubicweb_card/__init__.py
cubicweb/test/data-rewrite/cubicweb_card/__pkginfo__.py
The current manifest will duplicate several files that are stored as
symlinks in the Mercurial repository, hence the long list of ignored
files in `extend-diff-ignore`.
Jérémy Bobbio <jeremy.bobbio@irq7.fr> [Wed, 05 Jun 2019 15:38:29 +0200] rev 12641
[pkg] Switch all Debian packages to Python 3
julien tayon <julien.tayon@logilab.fr> [Tue, 11 Jun 2019 09:40:12 +0200] rev 12640
Fix sorting key for rdefs in schema viewer
With changeset 234ca3cbbb46, clicking in the schema of an entity with
cubicweb in py3 on "vue en boite" will probably result in an infinite
spinner (which implies cw > 3.26)
What happened ?
This "vue en boite" used to work at least until...
hg diff -c a8c1ea390400 cubicweb/schema.py
@@ -993,10 +992,6 @@ class CubicWebRelationSchema(PermissionM
return False
return True
- @deprecated('use .rdef(subjtype, objtype).role_cardinality(role)')
- def cardinality(self, subjtype, objtype, target):
- return self.rdef(subjtype, objtype).role_cardinality(target)
-
class CubicWebSchema(Schema):
"""set of entities and relations schema defining the possible data sets
But, wait ...
If I open a shell on an instance of cw 3.24 something seems off
>>> list(schema['CWUniqueTogetherConstraint'].relation_definitions())[0][0].cardinality
# <bound method CubicWebRelationSchema.wrapped of <constraint_of [CWUniqueTogetherConstraint,CWEType]>>
We have been sorting on a method the whole time ? Is it possible what
were the effects ?
1) We cannot sort function can't we ?
>>> def adder(i): return lambda x: x+i
>>> sorted(map(adder,range(10)))
[<function __main__.<lambda>>,
<function __main__.<lambda>>,
...
Yes we can.
2) what does it means.
>>> { adder(1) : 1 }
Out[19]: {<function __main__.<lambda>>: 1}
In fact the function object as a __hash__ method (which is practical for making
memoizers (cache)), and return truly random results (pseudo random).
My take on this patch is relations have NEVER been sorted by cardinality.
No one never ever noticed. Hence, I propose to not fix a bug that never was
reported.
julien tayon <julien.tayon@logilab.fr> [Tue, 04 Jun 2019 09:35:47 +0200] rev 12639
Flake8 cubicweb/web/schemaviewer.py
julien tayon <julien.tayon@logilab.fr> [Tue, 04 Jun 2019 09:35:47 +0200] rev 12638
[py3] changing unicode to str
py2 support being dropped, passing the code in full py3 str/bytes syntax
julien tayon <julien.tayon@logilab.fr> [Tue, 11 Jun 2019 09:07:24 +0200] rev 12637
[py3] Use sorted(key=...) instead of sorted(cmp=...)
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 07 Jun 2019 14:56:22 +0200] rev 12636
Merge with 3.26
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 07 Jun 2019 14:53:03 +0200] rev 12635
Added tag 3.26.11, debian/3.26.11-1 for changeset 633ca84bea58
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 07 Jun 2019 14:52:51 +0200] rev 12634
[pkg] Version 3.26.11
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 06 Jun 2019 16:40:14 +0200] rev 12633
Added tag debian/3.26.10-1 for changeset 0ce26fb5ab48
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 23 May 2019 16:59:57 +0200] rev 12632
[debian] New upstream release
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 23 May 2019 17:24:21 +0200] rev 12631
[debian] Drop override_dh_auto_install about cubicweb-ctl
The script should be installed normally as it is a setuptools' entry
point.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 23 May 2019 17:25:59 +0200] rev 12630
[debian] Remove test/doc Build-Depends
We are not actually running tests during package build. (This was
disabled for python2, now it is also for python3.) And having these
build-depends makes it hard to rebuild the package.
Laurent Peuch <cortex@worlddomination.be> [Tue, 28 May 2019 12:35:34 +0200] rev 12629
[fix] parse cube version number without space in them
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 24 May 2019 17:09:10 +0200] rev 12628
Install patched yapps for test from an http archive
Instead of git which require git to be installed. Also downloading archive is faster than cloning the repository.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 28 Mar 2019 11:39:36 +0100] rev 12627
[server/test] make test filename uniques
To avoid these pytest error when collecting the whole test suite:
import file mismatch:
imported module 'unittest_utils' has this __file__ attribute:
cubicweb/cubicweb/server/test/unittest_utils.py
which is not the same as the test file we want to collect:
cubicweb/cubicweb/test/unittest_utils.py
Move cubicweb/server/test/unittest_security.py to cubicweb/server/test/unittest_security.py
and cubicweb/test/unittest_utils.py to cubicweb/test/unittest_server_utils.py
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 24 May 2019 16:29:14 +0200] rev 12626
Merge 3.26
julien tayon <julien.tayon@logilab.fr> [Tue, 21 May 2019 10:50:08 +0200] rev 12625
[dataimport] Fix case when extid is text in use_extid_as_cwuri()
Extid can be bytes or text.
This avoid AttributeError: 'str' object has no attribute 'decode'
Noe Gaumont <ngaumont@logilab.fr> [Wed, 22 May 2019 11:34:08 +0200] rev 12624
[doc] fix key used in the hook example
The hook's regid is check_no_subsidiary_cycle.
Noe Gaumont <ngaumont@logilab.fr> [Wed, 22 May 2019 11:32:09 +0200] rev 12623
[doc] set_operation has been replaced by add_data
See the changelog https://cubicweb.readthedocs.io/en/3.26/changes/changelog/#id14
Noe Gaumont <ngaumont@logilab.fr> [Wed, 22 May 2019 11:30:52 +0200] rev 12622
[doc] check_cycle is a standard function
Noe Gaumont <ngaumont@logilab.fr> [Wed, 22 May 2019 11:29:49 +0200] rev 12621
[doc] fix several typos
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 21 May 2019 10:18:54 +0200] rev 12620
[pkg] make cubicweb[crypto] depends on pycryptodome instead of pycrypto
pycrypto isn't maintained anymore, the last release 2.6.1 is from 2014.
Use the drop-in replacement fork pycryptodome instead.
pycryptodome is packaged in debian starting from stretch-backports.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 21 May 2019 10:18:38 +0200] rev 12619
[crypto] Encode unicode strings in _cypherer()
pycrypto accept both bytes or string but pycryptodome, which will be introduced
in next changeset, doesn't accept this.
For backward compatibility, encode unicode strings in _cypherer()
julien tayon <julien.tayon@logilab.fr> [Thu, 16 May 2019 14:26:38 +0200] rev 12618
[ldapfeed] FIX: Unique Key violation when synchronizing with LDAPfeed
What was happening
==================
The bug appears when ldapfeed tries to insert a user while another user exists
exists with a different source.
Simple use case to reproduce:
- create a local user in cubicweb (source=system)
- sync with ldap
- ldapfeed will stop complaining user already exists.
Without next patch the test MUST fail with message:
cubicweb/server/sources/native.py:714: UniqueTogetherError
The ldapfeed is thus stopped ignoring any further ldap entries.
The proposal
============
Prior to this patch, the insertion was trying to create all CWUser with the
computed login from eeimporter.extid2eid (method process of DataFeedLDAPAdapter).
When a CWUser existed with a different cw_source ("system" for user created
with cubicweb for instance), it created a conflict.
To avoid collisions, in the extentities_generator method a bypass
was added at the insertion layer.
Prior to insertion the absence of the computed login is checked on a list of
all existing login from a different source.
If collision is detected, we skip the ldap record.
By short circuiting at the CWUser entity insertion level we also avoid to treat
CWGroup and EmailAddress related to this user.
Hence ensuring a behaviour that will not break existing instances.
(conservative approach: faced with ambiguity better do nothing than guess).
An error message is added stating explicitly the conflict.
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 15 Mar 2019 12:12:23 +0100] rev 12617
Skip tests for ldapsource with python >= 3.7
Until someone works on fixing these, this should make our CI green
again.
I tried to use setupModule() to check for python version, but
pre_setup_database() is apparently called even when a SkipTest exception
is raised there. So handle this in that method.
(grafted from 4d68d20427dee4b6751a0f1f5511fec2a04f4782)
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 16 May 2019 17:18:29 +0200] rev 12616
Flake8 crypto module
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 16 May 2019 17:17:42 +0200] rev 12615
Make crypto module python3-compatible
* Remove usage of unicode() and decode the base64-encoded string in
encrypt();
* Encode the string received in decrypt() as (I supposed) it should come
from the result of encrypt().
Add tests for this module along the way.
Laurent Peuch <cortex@worlddomination.be> [Thu, 16 May 2019 04:42:59 +0200] rev 12614
[mod] make ViolatedConstraint actually display useful information
Move from:
(Pdb++) raise some_exception
*** ViolatedConstraint:
To:
(Pdb++) raise some_exception
*** ViolatedConstraint: constraint 'cstr56c2ab4b3154f21d08b067742ce5bd9d' is being violated by the query 'ALTER TABLE cw_Bibliography ADD CONSTRAINT cstr56c2ab4b3154f21d08b067742ce5bd9d CHECK(cw_item_type IN ('journalArticle', 'note', 'book', 'thesis', 'film', 'web page', 'manuscrit', 'tapuscrit'))'. You can run the inverted constraint on the database to list the problematic rows.
And save hours of debugging to actually understand what is going on.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 16 May 2019 09:40:28 +0200] rev 12613
Fix flake8 errors/warnings about import in cubicweb/_exceptions.py
We either ignore errors in case of name re-exports and drop re-exports
from old backwards compatibility. We fix the only occurrence of
NoSelectableObject being imported from cubicweb in tests and update the
import to use lgc instead.
Laurent Peuch <cortex@worlddomination.be> [Thu, 16 May 2019 04:47:27 +0200] rev 12612
add comment and # noqa on used import
Laurent Peuch <cortex@worlddomination.be> [Thu, 16 May 2019 04:47:10 +0200] rev 12611
remove unused import
Laurent Peuch <cortex@worlddomination.be> [Thu, 16 May 2019 02:39:42 +0200] rev 12610
[autopep8] E305 - Expected 2 blank lines after end of function or class
Laurent Peuch <cortex@worlddomination.be> [Thu, 16 May 2019 02:39:41 +0200] rev 12609
[autopep8] E303 - Remove extra blank lines
Laurent Peuch <cortex@worlddomination.be> [Thu, 16 May 2019 02:39:41 +0200] rev 12608
[autopep8] E302 - Add missing 2 blank lines
Laurent Peuch <cortex@worlddomination.be> [Thu, 16 May 2019 02:39:40 +0200] rev 12607
[autopep8] E301 - Add missing blank line
Laurent Peuch <cortex@worlddomination.be> [Thu, 16 May 2019 01:23:51 +0200] rev 12606
[enh] display CWConstraint type in its repr
This will change CWConstraint repr from something like:
<Entity CWConstraint 314282 [] at 140127700141904>
To:
<Entity CWConstraint 314282 of type UniqueConstraint [] at 140127700141904>
To help improve debugging UX a little bit.
Laurent Peuch <cortex@worlddomination.be> [Thu, 16 May 2019 01:23:51 +0200] rev 12605
[entities] display CWConstraint type in its repr
Laurent Peuch <cortex@worlddomination.be> [Wed, 15 May 2019 14:23:19 +0200] rev 12604
[changelog] document pyramid.ini automatic generation
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 15 May 2019 15:50:29 +0200] rev 12603
Flake8 cubicweb/pyramid/test/test_hooks.py
Laurent Peuch <cortex@worlddomination.be> [Wed, 15 May 2019 12:06:29 +0200] rev 12602
[pyramid/doc] bad docstring
Laurent Peuch <cortex@worlddomination.be> [Wed, 15 May 2019 12:06:15 +0200] rev 12601
[pyramid/misc] remove useless variable
Laurent Peuch <cortex@worlddomination.be> [Wed, 15 May 2019 12:05:52 +0200] rev 12600
[pyramid/test] add test for pyramid.ini generation
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 15 May 2019 15:44:35 +0200] rev 12599
Added tag 3.26.10 for changeset 74cc5de1ee6c
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 15 May 2019 15:44:26 +0200] rev 12598
[pkg] Version 3.26.10
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 10 May 2019 16:07:32 +0200] rev 12597
Move CWSchemaTC to RQLExpressionTC
The test actually doesn't require a cubicweb schema, except for testing
EmailAdress which is out of scope of the test (testing RQLExpression.transform_has_permission()).
Just move the test in existing RQLExpressionTC inheriting from TestCase and
rename the tests to be more explicit.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 17 Apr 2019 16:41:41 +0200] rev 12596
[skeleton] Drop py27 tox environment
Since we dropped py2 support from cubicweb, it does not make
much sense to keep it in skeleton from now on.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 17 Apr 2019 15:30:42 +0200] rev 12595
[skeleton] Do not ship Debian and RPM packaging files in sdist
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 17 Apr 2019 15:06:57 +0200] rev 12594
[skeleton] Add a check-manifest tox environment
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 10 May 2019 16:04:37 +0200] rev 12593
Fix pyramid tests
Followup fa292e9 which require cubicweb.session.secret to be set.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 10 May 2019 11:42:24 +0200] rev 12592
Fix flake8 and check-manifest
Followup fa292e9
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 10 May 2019 15:58:01 +0200] rev 12591
Merge 3.26
This fixes tests with psycopg2
Laurent Peuch <cortex@worlddomination.be> [Wed, 08 May 2019 21:37:13 +0200] rev 12590
DeprecationWarning: In future versions of Waitress clear_untrusted_proxy_headers will be set to True by default. You may opt-out by setting this value to False, or opt-in explicitly by setting this to True.
Source: https://docs.pylonsproject.org/projects/waitress/en/stable/arguments.html?highlight=clear_untrusted_proxy_headers
> This tells Waitress to remove any untrusted proxy headers ("Forwarded",
> "X-Forwared-For", "X-Forwarded-By", "X-Forwarded-Host", "X-Forwarded-Port",
> "X-Forwarded-Proto") not explicitly allowed by trusted_proxy_headers.
According to grep we don't use any of those headers so let's turn it on for
security reasons.
Laurent Peuch <cortex@worlddomination.be> [Wed, 08 May 2019 21:30:44 +0200] rev 12589
DeprecationWarning: The default pickle serializer is deprecated as of Pyramid 1.9 and it will be changed to use pyramid.session.JSONSerializer in version 2.0. Explicitly set the serializer to avoid future incompatibilities
. See "Upcoming Changes to ISession in Pyramid 2.0" for more information about this change.
As describe here https://docs.pylonsproject.org/projects/pyramid/en/1.10-branch/narr/sessions.html#pickle-session-deprecation
use a serializer that fallback on pickle if needed to avoid impacting users.
Laurent Peuch <cortex@worlddomination.be> [Wed, 08 May 2019 20:53:49 +0200] rev 12588
[pyramid/enh] generate pyramid.ini "create" and on "pyramid" command if needed
Laurent Peuch <cortex@worlddomination.be> [Wed, 08 May 2019 21:00:45 +0200] rev 12587
DeprecationWarning: The SafeConfigParser class has been renamed to ConfigParser in Python 3.2. This alias will be removed in future versions. Use ConfigParser directly instead.
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 08 Apr 2019 11:24:53 +0200] rev 12586
Account for new psycopg2 exception classes mapping
From psycopg2 >= 2.8, specific exceptions are raised corresponding to
postgresql errors. E.g. a CheckViolation exception is raised instead of
a generic IntegrityError previously when a constraint violation occurs.
The way we intercept database errors, especially for constraint
violation, is not compliant with that because we do not catch subclasses
of IntegrityError in native source's doexec() method.
We fix this by checking for the presence of IntegrityError error in
exception class's mro. This is still overcomplicated and clumsy, because
we still use string comparison, but this is the best we can do as far as
I know. (A better fix would be 'isinstance(ex, IntegrityError)' but we
have no engine-independent error classes, so this is not possible.
Something like sqlalchemy's DBAPI Errors [1] might help:
https://docs.sqlalchemy.org/en/latest/errors.html#dbapi-errors)
Laurent Peuch <cortex@worlddomination.be> [Fri, 12 Apr 2019 02:26:28 +0200] rev 12585
[cubicweb-ctl] remove "cubicweb-ctl wsgi" command following pyramid standardization
Laurent Peuch <cortex@worlddomination.be> [Fri, 12 Apr 2019 12:31:14 +0200] rev 12584
Use secure hash algorithm in WebConfiguration.sign_text
Fix: PendingDeprecationWarning: HMAC() without an explicit digestmod argument is deprecated.
The default hash algorithm used by hmac.new is md5. As of today, md5 is so weak
that it's the equivalent of plaintext and can't be considered to be secured at all.
Therefor, we switch to a secure hash algorithm.
The rational for choosing sha3_512 is:
* the recommended algorithm is at least sha_256
* the stronger, the more secured and sha3_512 is the stronger available
* thinking about the future this should keep this part of the code safe long
enough before people think about checking it again
You can read more about choosing a secure hash algorithm in the NIST
recommendations https://csrc.nist.gov/Projects/Hash-Functions/NIST-Policy-on-Hash-Functions
This code modification should normally be transparent since check_text_sign is
exactly this code 'self.sign_text(text) == signature' and that sign_text is
only used in combination with it. The only impact is that the hash is going to
move from 32 char to 128 which might make html page a bit bigger and that
sha3_512 is slow to compute (which is a good thing for security)
Laurent Peuch <cortex@worlddomination.be> [Tue, 23 Apr 2019 09:33:52 +0200] rev 12583
[enh] don't catch all exceptions in notification hooks during tests
Noe Gaumont <ngaumont@logilab.fr> [Thu, 18 Apr 2019 15:09:36 +0200] rev 12582
[doc] add a reference to static-messages.pot usage
Noe Gaumont <ngaumont@logilab.fr> [Thu, 18 Apr 2019 15:10:35 +0200] rev 12581
[doc] Clarify sentences
Noe Gaumont <ngaumont@logilab.fr> [Thu, 18 Apr 2019 15:05:13 +0200] rev 12580
[doc] Fix format and typo
Nsukami Patrick <ndkpatt at gmail dot com> [Thu, 18 Apr 2019 04:40:23 +0000] rev 12579
Fix DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated
Nsukami Patrick <ndkpatt at gmail dot com> [Thu, 18 Apr 2019 04:34:34 +0000] rev 12578
Fix DeprecationWarning: invalid escape sequence
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 16 Apr 2019 15:49:03 +0200] rev 12577
[devtools/testlib] avoid hidding AttributeError in create_user()
commit() might raise a AttributeError too.
Use getattr(req, 'cnx', req) instead, which is a form already used to get the real cnx
in some code:
cubicweb/rset.py:577: cnx = getattr(self.req, 'cnx', self.req)
cubicweb/schema.py:353: with getattr(_cw, 'cnx', _cw).security_enabled(read=False):
We could use if hasattr(req, 'commit') here too but it lead to 3 additionals lines.
Maybe we should have commit() and rollback() on
cubicweb.web.request.ConnectionCubicWebRequestBase too ?
Nsukami Patrick <ndkpatt at gmail dot com> [Wed, 10 Apr 2019 17:59:17 +0000] rev 12576
Fix DeprecationWarning: invalid escape sequence \
Laurent Peuch <cortex@worlddomination.be> [Fri, 12 Apr 2019 11:56:13 +0200] rev 12575
DeprecationWarning: The 'warn' method is deprecated, use 'warning' instead
Laurent Peuch <cortex@worlddomination.be> [Fri, 12 Apr 2019 13:52:17 +0200] rev 12574
[mod] remove backward compatible code for passlib and force modern version
Laurent Peuch <cortex@worlddomination.be> [Fri, 12 Apr 2019 11:54:42 +0200] rev 12573
DeprecationWarning: Please use assertEqual instead.
Laurent Peuch <cortex@worlddomination.be> [Fri, 12 Apr 2019 17:25:40 +0200] rev 12572
DeprecationWarning: Please use assertRaisesRegex instead.
Laurent Peuch <cortex@worlddomination.be> [Thu, 11 Apr 2019 20:15:09 +0200] rev 12571
DeprecationWarning: inspect.getargspec() is deprecated since Python 3.0, use inspect.signature() or inspect.getfullargspec()
Laurent Peuch <cortex@worlddomination.be> [Thu, 11 Apr 2019 16:47:27 +0200] rev 12570
[README] add testing instructions
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 05 Apr 2019 12:19:03 +0200] rev 12569
Add pytest-subtests to dev requirements
This pytest plugin adds support for unittest's TestCase.subTest (for
Python >= 3.4). Since we we now only support python3 and since we use a
fair amount of these, let's benefit of better reporting by using this
plugin.
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 26 Mar 2019 16:22:31 +0100] rev 12568
[test] use unittest.mock instead of mock library
Now that we use Python 3 only, this is possible.
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 05 Apr 2019 17:58:19 +0200] rev 12567
Drop python2 support
This mostly consists in removing the dependency on "six" and updating
the code to use only Python3 idioms.
Notice that we previously used TemporaryDirectory from
cubicweb.devtools.testlib for compatibility with Python2. We now
directly import it from tempfile.
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 05 Apr 2019 17:21:14 +0200] rev 12566
Merge with 3.26
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 05 Apr 2019 17:40:02 +0200] rev 12565
Remove unused imports in cubicweb.pyramid.config
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 05 Apr 2019 17:20:01 +0200] rev 12564
Added tag 3.26.9 for changeset 4d6909de765a
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 05 Apr 2019 17:19:56 +0200] rev 12563
[pkg] Version 3.26.9
Laurent Peuch <cortex@worlddomination.be> [Tue, 12 Feb 2019 17:00:55 +0100] rev 12562
[pyramid/security] use cryptographically secure random generator
Based on django source code in case SystemRandom is not available.
According to python documentation:
https://docs.python.org/2/library/random.html
> Warning
> The pseudo-random generators of this module should not be used for security
> purposes. Use os.urandom() or SystemRandom if you require a cryptographically
> secure pseudo-random number generator.
Arthur Lutz <arthur.lutz@logilab.fr> [Thu, 04 Apr 2019 14:11:40 +0200] rev 12561
Reclosing branch after merge
Arthur Lutz <arthur.lutz@logilab.fr> [Thu, 04 Apr 2019 13:49:34 +0200] rev 12560
Merging heads of old, closed branch
Arthur Lutz <arthur.lutz@logilab.fr> [Thu, 04 Apr 2019 14:08:10 +0200] rev 12559
Reclosing branch after merge
Arthur Lutz <arthur.lutz@logilab.fr> [Thu, 04 Apr 2019 13:45:23 +0200] rev 12558
Merging heads of old, closed branch
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 28 Mar 2019 11:15:28 +0100] rev 12557
[doc/changes] document that legacy cube support has been dropped
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 28 Mar 2019 11:13:12 +0100] rev 12556
[doc] replace legacy import to new style cube import in various places
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 28 Mar 2019 11:09:29 +0100] rev 12555
[web/views] drop deprecated module cubicweb.web.views.timeline
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 28 Mar 2019 11:06:02 +0100] rev 12554
[web/views] drop deprecated module cubicweb.web.views.massmailing
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 28 Mar 2019 11:05:35 +0100] rev 12553
[web/views] drop deprecated module cubicweb.web.views.isioc
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 28 Mar 2019 11:04:51 +0100] rev 12552
[web/views] drop deprecated module cubicweb.web.views.embedding
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 28 Mar 2019 11:04:07 +0100] rev 12551
[web/views] drop deprecated module cubicweb.web.views.igeocodable
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 28 Mar 2019 11:00:55 +0100] rev 12550
[pyramid/core] drop fallback import of legacy cubes
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 28 Mar 2019 10:33:54 +0100] rev 12549
[cwconfig] drop importing legacy cubes
This finally drop support for legacy cubes.
In cwconfig, don't load modules in the "cubes" namespace.
In cube_pkginfo() handle CW_MIGRATION_MAP which wasn't working with new style cube.
Drop all method specific to legacy cubes importer: cubes_search_path(), extrapath(), cls_adjust_sys_path()
Drop environment variables related to legacy cubes: CW_CUBES_PATH and CW_CUBES_DIR
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 28 Mar 2019 10:11:36 +0100] rev 12548
[doc] better documentation for "cubicweb-ctl newcube"
cubicweb-ctl newcube create cubicweb-<name> in current directory.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 28 Mar 2019 10:09:49 +0100] rev 12547
[test] make unittest_cwconfig.py does not depend on legacy cube machinery
By dropping legacy cube tests in various places.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 28 Mar 2019 10:07:02 +0100] rev 12546
[devtools/test] drop legacy cube i18n tests
test_i18ncube_legacy_layout() is droped and make others tests uses a new style
cube "cubicweb_i18ntestcube", so it doesn't depends on legacy cube machinery.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 28 Mar 2019 10:04:23 +0100] rev 12545
[server/test] make unittest_migractions.py use new style cubes
MigrationTC used old cube layout in
cubicweb/server/test/data-migractions/cubes, move them to new style cubes as
"cubicweb_<cubename>" in "apphome" (cubicweb/server/test/data-migractions/)
which is added to PYTHONPATH by CubicWebTC.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Wed, 27 Mar 2019 16:25:06 +0100] rev 12544
[cwconfig] drop _cube_modname
Since we drop support for legacy cubes, this is equivalent to _cube_pkgname()
Philippe Pepiot <philippe.pepiot@logilab.fr> [Wed, 27 Mar 2019 16:19:50 +0100] rev 12543
[cwconfig] drop legacy cube importer
We don't want to support legacy cubes anymore.
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 22 Mar 2019 17:42:36 +0100] rev 12542
Drop more deprecated code
This follows up on changeset a8c1ea390400, in which code deprecated
using logilab.common.deprecation got dropped. Now we also drop code
deprecated using stdlib's warn(<msg>, DeprecationWarning).
Notice that, as a consequence of dropping old/new etypes aliases in
cubicweb/schema.py, we drop the import ETYPE_NAME_MAP (no longer
needed); but since other modules imported that name from
cubicweb.schema, we need to update the import statement to use
"cubicweb" directly.
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 26 Mar 2019 13:08:13 +0100] rev 12541
Flake8 cubicweb/cwvreg.py
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 22 Mar 2019 17:32:30 +0100] rev 12540
Drop deprecated "boxes" and "contentnavigation" registries
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 22 Mar 2019 17:29:15 +0100] rev 12539
Drop deprecated CWCache entity type
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 22 Mar 2019 17:30:09 +0100] rev 12538
Update i18n after "recent" changes
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 22 Mar 2019 15:53:24 +0100] rev 12537
Drop repair_file_1-9_migration.py
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 22 Mar 2019 14:48:22 +0100] rev 12536
Drop a left-over 3.22 deprecation warning
Philippe Pepiot <philippe.pepiot@logilab.fr> [Wed, 27 Mar 2019 15:53:00 +0100] rev 12535
[doc] fix reference to ~src/cubes in tutorial
~src/cubes refer to the $HOME/cubes directory of "src" user while ~/src/cubes
refer to $HOME/src/cubes directory of current user.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Wed, 27 Mar 2019 15:52:40 +0100] rev 12534
[doc] replace cubicweb-ctl start by cubicweb-ctl pyramid
Since twisted support is gone.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Wed, 27 Mar 2019 15:51:50 +0100] rev 12533
[doc] make the tutorial use a python3 virtualenv
Philippe Pepiot <philippe.pepiot@logilab.fr> [Wed, 27 Mar 2019 15:43:53 +0100] rev 12532
[doc] Update README "Getting started"
* install using pip and with pyramid in a virtualenv
* link to pyramid.ini documentation
* Use pyramid to start application since twisted support is gone
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 21 Mar 2019 14:36:25 +0100] rev 12531
Flake8 cubicweb/devtools/httptest.py
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 21 Mar 2019 14:33:54 +0100] rev 12530
Remove Twisted web server
Twisted web server is not used anymore and has been superseded by
pyramid many years ago. Furthermore, our usage is not compatible with
Python 3. So we drop the "etwist" sub-package.
As a consequence, "all-in-one" configuration type gets dropped as it was
Twisted-specific. We resurrect it in cubicweb/pyramid/config.py by only
keeping options used by the "pyramid". Similarly, we introduce a
AllInOneCreateHandler in cubicweb/pyramid/pyramidctl.py that is
basically the one that lived in cubicweb/etwist/twctl.py and is used to
create the "all-in-one" instance. Added a TODO here about "pyramid.ini"
that could be generated at the end of bootstrap() method.
In cubicweb/devtools/httptest.py, CubicWebServerTC is now equivalent to
CubicWebWsgiTC and the latter is dropped.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 21 Mar 2019 12:05:30 +0100] rev 12529
Separate twisted-specific configuration from WebConfigurationBase class
This is in preparation of dropping the Twisted web server backend.
We thus draw a clearer line between what's specific to twisted from
what's generic by moving WebConfigurationBase class into
cubicweb/web/webconfig.py and only keeping twisted-related in
AllInOneConfiguration (still living in cubicweb/etwist/twconfig.py).
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 21 Mar 2019 11:50:31 +0100] rev 12528
Flake8 cubicweb/web/webconfig.py
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 21 Mar 2019 11:47:10 +0100] rev 12527
Flake8 cubicweb/etwist/twconfig.py
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 14 Mar 2019 17:16:34 +0100] rev 12526
Remove ctl commands using the Twisted backend
This backend is not maintained, very likely no longer used in any recent
instance, and not supported in Python 3.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 14 Mar 2019 17:04:02 +0100] rev 12525
Flake8 cubicweb/cwctl.py
* run autopep8 on the file
* fixed unused imports
* rename "version" import as "cw_version" in order not to shadow local
variables
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 14 Mar 2019 16:53:34 +0100] rev 12524
Remove _handle_win32() method from "create" command class
This method generates code in a file using etwist module that we are
about to drop.
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 15 Mar 2019 12:12:23 +0100] rev 12523
Skip tests for ldapsource with python >= 3.7
Until someone works on fixing these, this should make our CI green
again.
I tried to use setupModule() to check for python version, but
pre_setup_database() is apparently called even when a SkipTest exception
is raised there. So handle this in that method.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 27 Mar 2019 09:25:44 +0100] rev 12522
[doc] Update cubicweb-ctl page about how to run an instance
* remove mention of start/stop/restart/status commands that do not exist anymore
* briefly mention the "pyramid" and point to respective documentation page
* mention that a WSGI server should be used in production
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 27 Mar 2019 09:21:18 +0100] rev 12521
[doc] Drop mention of the "pyramid" cube
This cube got merged into cubicweb several versions ago.
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Mar 2019 14:28:30 +0100] rev 12520
[cli/enh] on 'shell' or migration command, use ipython if available
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 19 Mar 2019 13:17:47 +0100] rev 12519
[web/test] drop dependency on third party cubes
Drop dependency on cubicweb-file, cubicweb-blog and cubicweb-tag for cubicweb/web/test
Copy required parts of cubes (schema, entities, views and hooks) into
cubicweb/web/test/data/cubicweb-<cube> that make tests pass.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 15 Mar 2019 18:07:18 +0100] rev 12518
[test] drop dependency on third party cubes
Drop dependency on cubicweb-file, cubicweb-localperms, cubicweb-tag and
cubicweb-comment for cubicweb.test and cubicweb.sobjects.test
Move cubicweb/test/data/libpython/cubicweb_* to cubicweb/test/data, so it's
included in PYTHONPATH.
Add missing parts of schema, entities, views, hooks that make tests pass.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 15 Mar 2019 17:12:20 +0100] rev 12517
[test] drop CubicWebConfigurationWithLegacyCubesTC
This is used to test legacy cube import which is planned for removal
in cubicweb 3.27, so drop the code.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 15 Mar 2019 17:10:16 +0100] rev 12516
[test] drop unittest_cubes.py
This is used to test legacy cube import which is planned for removal in
cubicweb 3.27, so drop the code.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 19 Mar 2019 14:26:51 +0100] rev 12515
[server/test] do not depend on third party cubes
Drop requirement of basket, card, comment, file, localperms and tag cubes for
cubicweb.server tests.
Copy needed part of schema, entities, views, hooks into the
cubicweb/server/test/data directory (which is included in PYTHONPATH for
CubicWebTC tests).
For migration tests which use different "datapath", use symlinks to have dependent cubes importables.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 15 Mar 2019 15:51:27 +0100] rev 12514
[server/test] drop unused variable initialization in OperationsTC.setUp()
Variable "self.hm" is unused
Philippe Pepiot <philippe.pepiot@logilab.fr> [Wed, 13 Mar 2019 14:03:45 +0100] rev 12513
[server/test] bootstrap config in setUpModule function
This is test initialization, so use the setUpModule function for this
Philippe Pepiot <philippe.pepiot@logilab.fr> [Mon, 11 Mar 2019 17:43:23 +0100] rev 12512
[schema] drop monkeypatch "name_for" on BaseConstraint
BaseConstraint doesn't have "name_for" method, this is just an addition for
cubicweb needs.
Implement this as a function instead of a monkeypatch to avoid having
"name_for" not defined because cubicweb.schema hasn't been imported.
In particular this fix running cubicweb/server/test/unittest_schema2sql.py::SQLSchemaTC::test_known_values alone.
Laurent Peuch <cortex@worlddomination.be> [Thu, 14 Mar 2019 16:17:49 +0100] rev 12511
[fix] this check was too restrictive and broke tests
Laurent Peuch <cortex@worlddomination.be> [Thu, 14 Mar 2019 16:09:26 +0100] rev 12510
[fix] exception type has changed
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Wed, 13 Mar 2019 10:21:39 +0100] rev 12509
[server.rqlannotation] refactor to make class SQLGenAnnotator consistent
_annotate_select() takes SQLGenAnnotator as a first argument and is
not used anywhere except in SQLGenAnnotator. This looks like a
method to me. Let us fold it into its class.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 14 Mar 2019 12:08:37 +0100] rev 12508
Drop most of deprecated code
As in previous changesets, most code has been deprecated since a very
long time. This changeset concerns "core" cubicweb modules
(e.g. "server", "appobjects") for which it's not easy to handle change
atomically.
In cubicweb/server/querier.py, we adjust empty_rset() function as a
result of "rqlst" argument of ResultSet being dropped. (There was no use
of the keyword argument anyways.)
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 14 Mar 2019 14:45:35 +0100] rev 12507
Drop deprecated code in cubicweb.hooks
Changelog entry will come in a later changeset.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 14 Mar 2019 14:45:27 +0100] rev 12506
Drop deprecated code in cubicweb.entities
Also dropped an unused import along the way.
Changelog entry will come in a later changeset.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 14 Mar 2019 14:45:18 +0100] rev 12505
Drop deprecated code in cubicweb.devtools
Changelog entry will come in a later changeset.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 14 Mar 2019 14:45:03 +0100] rev 12504
Drop deprecated code in cubicweb.dataimport
We actually drop *most* of deprecated code in this subpackage. What's
left is the MetaGenerator class in (cubicweb/dataimport/stores.py) which
is tricky to remove as it's still internally used by cubicweb.
Changelog entry will come in a later changeset.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 14 Mar 2019 14:43:18 +0100] rev 12503
Drop most deprecated code in cubicweb.web
This includes both Python and JavaScript code. Most code has been
deprecated since a very long time (versions 3.1x mostly, more than 5
years ago, and a few things until 3.24).
There are still a few deprecated things, most of which are actually used
within cubicweb (or in cubes we depend on for tests). I don't know what
to do with these...
Removed a couple of unused imports along the way.
Changelog entry will come in a later changeset.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 13 Mar 2019 13:37:49 +0100] rev 12502
[web] use Separator "component" instead of deprecated BoxSeparator widget
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 13 Mar 2019 13:36:38 +0100] rev 12501
Flake8 cubicweb/web/box.py
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 14 Mar 2019 14:38:55 +0100] rev 12500
[test] Remove upper bound for cubicweb-localperms
Version 0.4.0 does not use a deprecated API that we are planning to drop
in forthcoming changesets.
This requires changing expected values in unittest_cwconfig.py where we
scan install cubes.
* In CubicWebConfigurationTC.test_available_cubes(), localperms
disappears from the list of expected cubes because this test method
will look for new style cubes in located in cubicweb/test/data/libpython/
(we patch pkg_resources.iter_entry_points()) as well as old style
cubes installed in $PREFIX/share/cubicweb/cubes; since the new
cubicweb-localperms version is new-style, it won't be catched by this
method.
* In CubicWebConfigurationWithLegacyCubesTC.test_available_cubes(),
localperms is still listed, but now with the package name, because
this method will simply look at installed cubes whether old or new
style.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 14 Mar 2019 16:44:53 +0100] rev 12499
[test] Make the expected value explicit in CubicWebConfigurationWithLegacyCubesTC.test_available_cubes()
This will help with the next changeset, and avoiding computation in
tests is a good thing in general.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 13 Mar 2019 17:21:27 +0100] rev 12498
[test] Inline _test_available_cubes() method in cwconfig tests
Improves readability.
Laurent Peuch <cortex@worlddomination.be> [Thu, 14 Mar 2019 09:38:20 +0100] rev 12497
[DX] adding error messages to {ResultSet,ActionsRegistry}.possible_actions
Try to make it more accessible, when we first encountered these errors
it it didn't made any sense to us.
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Tue, 12 Mar 2019 23:45:15 +0100] rev 12496
[server/querier] remove useless indirection QuerierHelper._annotate
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Tue, 12 Mar 2019 23:04:57 +0100] rev 12495
[server] remove useless indirection ExecutionPlan.sqlannotate
Simpler is better. Use directly ExecutionPlan.querier.sqlgen_annotate.
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Tue, 12 Mar 2019 23:20:50 +0100] rev 12494
[web] removed unused imports in basecomponents
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 13 Mar 2019 14:01:10 +0100] rev 12493
[test] Depends on psycopg2-binary
Avoids the following warning:
The psycopg2 wheel package will be renamed from release 2.8; in order
to keep installing from binary please use "pip install psycopg2-binary"
instead. For details see:
<http://initd.org/psycopg/docs/install.html#binary-install-from-pypi
Laurent Peuch <cortex@worlddomination.be> [Tue, 12 Mar 2019 11:40:59 +0100] rev 12492
[doc/changelog] the removal of next_tabindex produce an error not in the changelog
When one tried to migrate to 3.25, the error "class X initialization doesn't
have a settabindex argument" can happen but the word "settabindex" is not
present in the changelog which makes it hard to find to which modification this
error is related.
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 11 Mar 2019 14:34:14 +0100] rev 12491
Merge with branch 3.26
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 08 Mar 2019 14:35:59 +0100] rev 12490
[py3.7,test] Use cubicweb-file >= 2.2.2
This includes changeset aa4a3a3d0c18 fixing import of
os.errno.
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 08 Mar 2019 11:58:30 +0100] rev 12489
[flake8] Fix errors in cubicweb/ext/test/unittest_rest.py
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 08 Mar 2019 11:56:05 +0100] rev 12488
[test] Shorten prefix string in test_rql_role_with_unknown_vid
With Python3.7, this test fails as the error message returned by
rest_publish() is:
<p>an error occurred while interpreting this rql directive: ObjectNotFound('toto')</p>
while we previously assumed a comma after 'toto'.
Fixing this by only shortening the prefix used in out.startswith().
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 08 Mar 2019 11:52:31 +0100] rev 12487
[flake8] fix errors in cubicweb_i18ntestcube/views.py test file
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 08 Mar 2019 11:50:20 +0100] rev 12486
[test] Pass __module__ upon instantiation of RegistrableInstance
This gets rid of the deprecation warning from logilab.common.registry:
DeprecationWarning: instantiate MyAFS with __module__=__name__
and solves a test error on Python 3.7.
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 08 Mar 2019 12:00:47 +0100] rev 12485
Added tag 3.26.8 for changeset 91f75319a726
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 07 Mar 2019 11:56:01 +0100] rev 12484
[pkg] Version 3.26.8
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:28:17 +0100] rev 12483
[doc] didn't had any questions
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:30:31 +0100] rev 12482
[doc] missing import, cw now require this explicitely
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:30:12 +0100] rev 12481
[doc] add actual link to previous post
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:29:54 +0100] rev 12480
[doc] missing import in code example
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:29:44 +0100] rev 12479
[doc] add a note because uiprops.py is not generated anymore by default
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:29:23 +0100] rev 12478
[doc] recommend pip instead of apt for installing things
According to a discussion on XMPP we should recommend pip instead.
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:28:43 +0100] rev 12477
[doc] fix, link to internal doc since it's not the blog post anymore
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:27:56 +0100] rev 12476
[doc] also show command with sqlite since it's recommended
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:26:33 +0100] rev 12475
[doc] fix, the cube name was used, it was the instance named that was needed
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:25:59 +0100] rev 12474
[doc] it's a tutorial, not a blog post anymore
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:25:44 +0100] rev 12473
[doc] make example more redable
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:25:27 +0100] rev 12472
[doc] uses :file:`name` everywhere + indicate file when it's not present
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:23:37 +0100] rev 12471
[doc] english typos
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:23:07 +0100] rev 12470
[doc] pep8/retab in code examples
Laurent Peuch <cortex@worlddomination.be> [Wed, 27 Feb 2019 13:41:34 +0100] rev 12469
[doc] correct import for i18n
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:46:39 +0100] rev 12468
[doc] pep8 and retab in tutorial code example
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 19:08:44 +0100] rev 12467
[doc] correct pip command to have needed dependancies to use the start command
I know we want to remove this command but in the meantime having this
documentation working seems like something good.
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:57:24 +0100] rev 12466
[doc] explain the difference between a relation and an attribute
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:57:05 +0100] rev 12465
[doc] plural
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:56:42 +0100] rev 12464
[doc] misc, put every reference to something in the code between backquotes
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:54:46 +0100] rev 12463
[doc] bold to make reading more obvious
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:54:23 +0100] rev 12462
[doc] style, switch to bullet points list to make things easier to read
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:53:39 +0100] rev 12461
[doc] explains what the <X.Y.Z> means
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:53:03 +0100] rev 12460
[doc] command output style has changed
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:51:36 +0100] rev 12459
[doc] always put file name for code example and uses :file:`path` syntax everywhere
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:49:24 +0100] rev 12458
[doc] explicitely give the local server url to make this step more obvious
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:48:51 +0100] rev 12457
[doc] start the server in debug mode, it's easier during learning
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:48:07 +0100] rev 12456
[doc] recommend sqlite during tutorial because it's simplier to use
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:47:35 +0100] rev 12455
[doc] add a link to every cube documentation page
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:47:03 +0100] rev 12454
[doc] make this step more obvious
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:42:29 +0100] rev 12453
[doc] move to latest CW version for cube creation
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:15:26 +0100] rev 12452
[doc] missng import for i18n in example
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:10:47 +0100] rev 12451
[doc] unused import in example
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 15:25:23 +0100] rev 12450
[doc] output has changed
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 15:18:09 +0100] rev 12449
[doc] blanks spaces to allow example to breath and be more lisible
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 15:16:22 +0100] rev 12448
[doc] default tests template has changed
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 15:13:45 +0100] rev 12447
[doc] default generated filename as changed
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 10:05:38 +0100] rev 12446
[doc] rst syntax bug, blank line needed before item list
Laurent Peuch <cortex@worlddomination.be> [Fri, 22 Feb 2019 15:16:26 +0100] rev 12445
[doc] add link to cubes contribution document
Laurent Peuch <cortex@worlddomination.be> [Fri, 22 Feb 2019 15:48:34 +0100] rev 12444
[doc] link to current documentation, not old cubicweb.org doc
Laurent Peuch <cortex@worlddomination.be> [Tue, 12 Feb 2019 15:51:21 +0100] rev 12443
[doc] translate french to english
Laurent Peuch <cortex@worlddomination.be> [Tue, 12 Feb 2019 14:59:42 +0100] rev 12442
[doc] typo, 'CW' doesn't exist in the example
Laurent Peuch <cortex@worlddomination.be> [Tue, 12 Feb 2019 14:59:13 +0100] rev 12441
[doc] always indicate the file in which the code should be put
Laurent Peuch <cortex@worlddomination.be> [Tue, 12 Feb 2019 14:58:50 +0100] rev 12440
[doc] respect pep8 in code examples
Laurent Peuch <cortex@worlddomination.be> [Tue, 12 Feb 2019 14:58:26 +0100] rev 12439
[doc] serie a small improvments
Laurent Peuch <cortex@worlddomination.be> [Tue, 12 Feb 2019 14:55:02 +0100] rev 12438
[doc] typo, the field is "name" not "title"
Laurent Peuch <cortex@worlddomination.be> [Tue, 12 Feb 2019 14:53:48 +0100] rev 12437
[doc] fix, command "create" is missing base cube
Laurent Peuch <cortex@worlddomination.be> [Tue, 12 Feb 2019 14:48:52 +0100] rev 12436
[doc] improve blog tutorial first steps and explain common errors
Laurent Peuch <cortex@worlddomination.be> [Tue, 12 Feb 2019 11:38:19 +0100] rev 12435
[doc] new behavior in virtualenv since 3.26
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 29 Jan 2019 14:04:28 +0100] rev 12434
[skeleton] use python3 flake8
In tox "flake8" environment, use python 3 virtualenv, so we can check for
python3 incompatible syntax.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 29 Jan 2019 14:02:19 +0100] rev 12433
[skeleton] drop whitelist_externals for flake8
whitelist_externals makes sense when used with sitepackages=true.
In this case it will always rely on $VIRTUAL_ENV/bin/flake8 so, the
whitelist_externals has no effect.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Mon, 29 Oct 2018 10:04:31 +0100] rev 12432
Fix flake8 issues since release 3.6.0
Flake8 had a new release which raise new issues, namely:
W504: line break after binary operator
F841: local variable 'ex' is assigned to but never used
W605: invalid escape sequence
F821: undefined name 'buffer' (noqa seems the only way to avoid this false positive)
Also pin flake8>=3.6 in our tests and make explicit that we use python3 to run
flake8 tests.
Laurent Wouters <lwouters@cenotelie.fr> [Tue, 09 Oct 2018 16:24:12 +0200] rev 12431
Fix typo in RDFS URI
Laurent Wouters <lwouters@cenotelie.fr> [Tue, 24 Apr 2018 10:19:42 +0200] rev 12430
[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.
Samuel Trégouët <samuel.tregouet@logilab.fr> [Thu, 16 Aug 2018 12:31:44 +0200] rev 12429
[py37] `async` is now a reserved keyword
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 11 Jul 2018 09:18:57 +0200] rev 12428
[skeleton] Use "py3" as tox environment instead of "py34"
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 28 Jun 2018 10:17:15 +0200] rev 12427
[views/startup] drop a duplicate rql query in manage view
Counting entities in `nb` is already done above this code, regression introduced by a85db6fa
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 15 Jun 2018 17:42:50 +0200] rev 12426
Depend on cubicweb-file >= 2.0.0
I applied V1 of the patch, but V2 contained this extra hunk...
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 11 Jun 2018 16:50:38 +0200] rev 12425
[test] Update webconfig's tests accounting for cubicweb-file being now a package
WebconfigTC.test_locate_all_files and WebconfigTC.test_locate_resource
assumed that cubicweb-file was installed in <share>/cubes/file whereas,
from the latest release, it is now a standard Python package thus
installed in site-packages as cubicweb_file. We simply update base
directory of these two tests.
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Wed, 06 Jun 2018 18:54:24 +0200] rev 12424
[widgets.js] fix obvious bug detected by sonar
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Wed, 06 Jun 2018 18:37:16 +0200] rev 12423
[views/uicfg] obvious bug detected by sonar
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 06 Jun 2018 14:20:16 +0200] rev 12422
[style] Make toolsutils.py flake8-clean
Run `autopep8 --max-line-length 100 -i cubicweb/toolsutils.py` and fixed
unused imports.
David Douard <david.douard@logilab.fr> [Tue, 24 Apr 2018 15:21:38 +0200] rev 12421
[test/rset] typo
David Douard <david.douard@logilab.fr> [Tue, 24 Apr 2018 14:04:43 +0200] rev 12420
[test/rset] flake8
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 05 Mar 2019 13:52:52 +0100] rev 12419
[py3] import configparser from six.moves instead of using a try/except
Using six is better than the try/except because it clearly indicates
compatibility code. Also, when using tools such as vermin which relies
on AST, it helps getting rid of false compatibility errors.
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:28:17 +0100] rev 12418
[doc] didn't had any questions
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:30:31 +0100] rev 12417
[doc] missing import, cw now require this explicitely
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:30:12 +0100] rev 12416
[doc] add actual link to previous post
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:29:54 +0100] rev 12415
[doc] missing import in code example
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:29:44 +0100] rev 12414
[doc] add a note because uiprops.py is not generated anymore by default
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:29:23 +0100] rev 12413
[doc] recommend pip instead of apt for installing things
According to a discussion on XMPP we should recommend pip instead.
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:28:43 +0100] rev 12412
[doc] fix, link to internal doc since it's not the blog post anymore
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:27:56 +0100] rev 12411
[doc] also show command with sqlite since it's recommended
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:26:33 +0100] rev 12410
[doc] fix, the cube name was used, it was the instance named that was needed
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:25:59 +0100] rev 12409
[doc] it's a tutorial, not a blog post anymore
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:25:44 +0100] rev 12408
[doc] make example more redable
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:25:27 +0100] rev 12407
[doc] uses :file:`name` everywhere + indicate file when it's not present
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:23:37 +0100] rev 12406
[doc] english typos
Laurent Peuch <cortex@worlddomination.be> [Tue, 26 Feb 2019 16:23:07 +0100] rev 12405
[doc] pep8/retab in code examples
Laurent Peuch <cortex@worlddomination.be> [Wed, 27 Feb 2019 13:41:34 +0100] rev 12404
[doc] correct import for i18n
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:46:39 +0100] rev 12403
[doc] pep8 and retab in tutorial code example
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 19:08:44 +0100] rev 12402
[doc] correct pip command to have needed dependancies to use the start command
I know we want to remove this command but in the meantime having this
documentation working seems like something good.
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:57:24 +0100] rev 12401
[doc] explain the difference between a relation and an attribute
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:57:05 +0100] rev 12400
[doc] plural
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:56:42 +0100] rev 12399
[doc] misc, put every reference to something in the code between backquotes
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:54:46 +0100] rev 12398
[doc] bold to make reading more obvious
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:54:23 +0100] rev 12397
[doc] style, switch to bullet points list to make things easier to read
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:53:39 +0100] rev 12396
[doc] explains what the <X.Y.Z> means
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:53:03 +0100] rev 12395
[doc] command output style has changed
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:51:36 +0100] rev 12394
[doc] always put file name for code example and uses :file:`path` syntax everywhere
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:49:24 +0100] rev 12393
[doc] explicitely give the local server url to make this step more obvious
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:48:51 +0100] rev 12392
[doc] start the server in debug mode, it's easier during learning
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:48:07 +0100] rev 12391
[doc] recommend sqlite during tutorial because it's simplier to use
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:47:35 +0100] rev 12390
[doc] add a link to every cube documentation page
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:47:03 +0100] rev 12389
[doc] make this step more obvious
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:42:29 +0100] rev 12388
[doc] move to latest CW version for cube creation
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:15:26 +0100] rev 12387
[doc] missng import for i18n in example
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 18:10:47 +0100] rev 12386
[doc] unused import in example
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 15:25:23 +0100] rev 12385
[doc] output has changed
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 15:18:09 +0100] rev 12384
[doc] blanks spaces to allow example to breath and be more lisible
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 15:16:22 +0100] rev 12383
[doc] default tests template has changed
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 15:13:45 +0100] rev 12382
[doc] default generated filename as changed
Laurent Peuch <cortex@worlddomination.be> [Thu, 21 Feb 2019 10:05:38 +0100] rev 12381
[doc] rst syntax bug, blank line needed before item list
Laurent Peuch <cortex@worlddomination.be> [Fri, 22 Feb 2019 15:16:26 +0100] rev 12380
[doc] add link to cubes contribution document
Philippe Pepiot <philippe.pepiot@logilab.fr> [Wed, 27 Feb 2019 13:36:31 +0100] rev 12379
Merge 3.26
Laurent Peuch <cortex@worlddomination.be> [Fri, 22 Feb 2019 15:48:34 +0100] rev 12378
[doc] link to current documentation, not old cubicweb.org doc
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 13 Feb 2019 14:40:39 +0100] rev 12377
Explicitly require repoze.lru for Pyramid tests
This used to be pulled by pyramid but the dependency got dropped in
pyramid version 1.10, see:
https://docs.pylonsproject.org/projects/pyramid/en/latest/whatsnew-1.10.html#backward-incompatibilities
We already have an explicit dependency in setup.py, but it was missing
for tests.
Perhaps we could simply use '.[pyramid]' in this requirements file? Not
sure what side effect it'd have though...
Laurent Peuch <cortex@worlddomination.be> [Wed, 13 Feb 2019 17:25:09 +0100] rev 12376
[cubicweb-ctl] make uid option obvious
Laurent Peuch <cortex@worlddomination.be> [Wed, 13 Feb 2019 17:32:41 +0100] rev 12375
[README] point to xmpp room for contributors
Laurent Peuch <cortex@worlddomination.be> [Tue, 12 Feb 2019 15:31:12 +0100] rev 12374
[doc] link to README regarding how to contribute to the code base
Laurent Peuch <cortex@worlddomination.be> [Tue, 12 Feb 2019 15:23:29 +0100] rev 12373
[README] improve contribution section with links and command examples
Laurent Peuch <cortex@worlddomination.be> [Wed, 13 Feb 2019 11:39:46 +0100] rev 12372
[README] point to logilab's jenkins in tests section
Laurent Peuch <cortex@worlddomination.be> [Tue, 12 Feb 2019 16:11:54 +0100] rev 12371
[pyramid] improve pyramid warning with link to doc on how to write pyramid.ini file
Laurent Peuch <cortex@worlddomination.be> [Tue, 12 Feb 2019 15:51:21 +0100] rev 12370
[doc] translate french to english
Laurent Peuch <cortex@worlddomination.be> [Tue, 12 Feb 2019 14:59:42 +0100] rev 12369
[doc] typo, 'CW' doesn't exist in the example
Laurent Peuch <cortex@worlddomination.be> [Tue, 12 Feb 2019 14:59:13 +0100] rev 12368
[doc] always indicate the file in which the code should be put
Laurent Peuch <cortex@worlddomination.be> [Tue, 12 Feb 2019 14:58:50 +0100] rev 12367
[doc] respect pep8 in code examples
Laurent Peuch <cortex@worlddomination.be> [Tue, 12 Feb 2019 14:58:26 +0100] rev 12366
[doc] serie a small improvments
Laurent Peuch <cortex@worlddomination.be> [Tue, 12 Feb 2019 14:55:02 +0100] rev 12365
[doc] typo, the field is "name" not "title"
Laurent Peuch <cortex@worlddomination.be> [Tue, 12 Feb 2019 14:53:48 +0100] rev 12364
[doc] fix, command "create" is missing base cube
Laurent Peuch <cortex@worlddomination.be> [Tue, 12 Feb 2019 14:48:52 +0100] rev 12363
[doc] improve blog tutorial first steps and explain common errors
Laurent Peuch <cortex@worlddomination.be> [Tue, 12 Feb 2019 14:43:45 +0100] rev 12362
[doc] how to install pyramid or twisted application server
Laurent Peuch <cortex@worlddomination.be> [Tue, 12 Feb 2019 11:38:19 +0100] rev 12361
[doc] new behavior in virtualenv since 3.26
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 29 Jan 2019 14:04:28 +0100] rev 12360
[skeleton] use python3 flake8
In tox "flake8" environment, use python 3 virtualenv, so we can check for
python3 incompatible syntax.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 29 Jan 2019 14:02:19 +0100] rev 12359
[skeleton] drop whitelist_externals for flake8
whitelist_externals makes sense when used with sitepackages=true.
In this case it will always rely on $VIRTUAL_ENV/bin/flake8 so, the
whitelist_externals has no effect.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Mon, 29 Oct 2018 16:39:21 +0100] rev 12358
Add changelog note for running tests with pytest-xdist
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 26 Oct 2018 17:12:26 +0200] rev 12357
Make test database template creation concurrent
build_db_cache() is used in tests to create test database templates, i.e.
DEFAULT_EMPTY_DB_ID (which is __default_empty_db__) and custom template
database using CubicwebTC test_db_id/pre_setup_database API.
When running tests in parallel using multiple processes, build_db_cache() may
try to build the same database twice. Avoid this by adding synchronisation of
process by using a file lock.
So when two processes require the same template database, one build the
database and others wait it to be created.
Use filelock (https://github.com/benediktschmitt/py-filelock) library to have a
portable (unix / windows) way for handling locks.
Also filelock is packaged in debian: https://packages.debian.org/source/python-filelock
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 26 Oct 2018 17:00:05 +0200] rev 12356
Make test database cache lookup concurrent
has_cache() is used to dertermine if the template database already exists or
not.
When running tests accross multiple process, has_cache() wasn't aware of
databases created by other processes because it used a cache to generate the
cache...
Since the discovering discover_cached_db() time is quite reasonable (it's just
about listing file in a directory), let re-generate the cache on cache miss.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Mon, 29 Oct 2018 10:04:31 +0100] rev 12355
Fix flake8 issues since release 3.6.0
Flake8 had a new release which raise new issues, namely:
W504: line break after binary operator
F841: local variable 'ex' is assigned to but never used
W605: invalid escape sequence
F821: undefined name 'buffer' (noqa seems the only way to avoid this false positive)
Also pin flake8>=3.6 in our tests and make explicit that we use python3 to run
flake8 tests.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Mon, 29 Oct 2018 10:09:19 +0100] rev 12354
Stabilize flake8 tests on 3.26 branch
Use basepython=python2 or flake8 installed with python3 will raise "[F821]
undefined name 'buffer'"
Pin flake8 < 3.6 which has new checks that doesn't pass on our current code base.
Laurent Wouters <lwouters@cenotelie.fr> [Tue, 09 Oct 2018 16:24:12 +0200] rev 12353
Fix typo in RDFS URI
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 02 Oct 2018 16:04:52 +0200] rev 12352
[doc] Do not rely on lgc's sphinx_ext
This module is broken (getting an ImportError) and I don't want to fix
it. The only usage we make of it is for the "autodocstring" directive,
and I don't know what it does.
Based on the context, replacing autodocstring with either automodule or
autoclass and removing sphinx_ext from required Sphinx extensions.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 06 Sep 2018 13:44:06 +0200] rev 12351
Added tag 3.26.7 for changeset ee4ad63c91e5
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 06 Sep 2018 13:43:56 +0200] rev 12350
[pkg] Version 3.26.7
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 24 Aug 2018 17:19:02 +0200] rev 12349
Fix possible double import of cubes
For a new-style cube, if we import "cubicweb_<name>" and then import
"cubes.<name>", the cube will be imported twice. cubes.<name> and then
cubicweb_name is ok though...
When using pyramid, we try to find which cube define a "includeme" by importing
them with the name "cubes.<name>", so we (possibly ?) double import all new-style cube.
This case may also occur in tests with PyramidCWTest.
Touching the import loader to fix this scares me, so let's fix this by testing
"cubicweb_<name>" *before* "cubes.name" (for old style cubes, importing
cubicweb_<name> raise ImportError).
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 22 Aug 2018 16:04:39 +0200] rev 12348
[autoform] Make RelationField.fromcardinality a class method factory
Instead of having the "RelationField" class hard-coded in this factory
method (thus preventing any subclass to properly use it), we make that
method a classmethod and instantiate the actual class instead of the
base one.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 22 Aug 2018 16:02:30 +0200] rev 12347
[autoform] Use fieldclass from kwargs in guess_field for non-final relations
This follows up on af969080e7e6 in which a "fieldclass" kwarg has been
added in EntityFieldsForm.field_by_name() before calling guess_field().
In this changeset, this value was only used for final relation but the
way non-final relation actually also changed since we also use
guess_field from these relation (previously, the field class specified
through uicfg was instantiated directly in
EntityFieldsForm.field_by_name()). So in the non-final case in
guess_field() we simply try to retrieve "fieldclass" from kwargs and
fall back to RelationField.
Samuel Trégouët <samuel.tregouet@logilab.fr> [Thu, 16 Aug 2018 12:31:44 +0200] rev 12346
[py37] `async` is now a reserved keyword
Philippe Pepiot <philippe.pepiot@logilab.fr> [Wed, 18 Jul 2018 13:53:00 +0200] rev 12345
Merge 3.26
Philippe Pepiot <philippe.pepiot@logilab.fr> [Wed, 18 Jul 2018 13:48:13 +0200] rev 12344
Added tag 3.26.6, debian/3.26.6-1 for changeset 8362503a9248
Philippe Pepiot <philippe.pepiot@logilab.fr> [Wed, 18 Jul 2018 13:47:45 +0200] rev 12343
[pkg] version 3.26.6
Olivier Giorgis <olivier.giorgis@logilab.fr> [Wed, 18 Jul 2018 11:27:05 +0200] rev 12342
[py3] Replace unicode keyword which is unknown in python3
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 11 Jul 2018 09:18:57 +0200] rev 12341
[skeleton] Use "py3" as tox environment instead of "py34"
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 28 Jun 2018 18:19:08 +0200] rev 12340
Added tag 3.26.5 for changeset 76d7b0aa94d2
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 28 Jun 2018 18:18:33 +0200] rev 12339
[pkg] Version 3.26.5
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 28 Jun 2018 16:49:57 +0200] rev 12338
Merge with 3.26
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 28 Jun 2018 12:19:16 +0200] rev 12337
[py3] Use "utf-8" as input encoding for docutils in rest extension
Docutils says that "unicode" is an unknown encoding on Python3. Not sure
where "unicode" as an encoding comes (it's there since showtime) but
"utf-8" seems more appropriate.
From now on, rendering of CubicWeb's rst directive (e.g. ..winclude)
works on Python 3. Accordingly, we extend wdoc's test to demonstrate
this. For this we need to install docutils in tox's web environment.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 28 Jun 2018 11:19:14 +0200] rev 12336
[py3] Avoid setting attribute on Element instance in wdoc view
This change is needed to make "wdoc" view work on Python 3. Indeed,
before this patch, we used to set a "parent" attribute on Element
instances, which is not permitted since Python 3.3 as
xml.etree.ElementTree uses the C implementation by default.
To get rid of this "parent" attribute, we rework the XML nodes
processing logic to return and retrieve a node along with its parent in
several place of the code. Namely, build_toc_index() now accepts the
"parent" value for "node" and inserts it in the "index" dict (thus avoid
`node.parent = <value>`). Respectively, every query to the "index" dict
is updated to also retrieve the "parent" (thus avoiding `<value> =
node.parent`). Later in InlineHelpView class, the "index" dict is bound
to "tocindex" attribute so we adjust how it is queried in respective
methods.
Tests cubicweb/web/test/unittest_views_wdoc.py now pass on Python 3.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 28 Jun 2018 10:07:20 +0200] rev 12335
[test] Add a trivial test for "wdoc" view
We just make sure it gets rendered without errors (which wasn't the case
before the previous patch).
It does not work on Python 3; this will be fixed in next changeset.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 28 Jun 2018 10:06:26 +0200] rev 12334
[py3] Open rst file in text mode in wdoc view
Otherwise, UStringIO complains that it receives bytes.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 28 Jun 2018 11:11:10 +0200] rev 12333
[ext/rest] Drop "handle_io_errors" argument to docutils' FileInput
This argument is deprecated and ignore in docutils since version 0.10.
Besides, its default value is None which is the same as we passed.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 28 Jun 2018 10:38:04 +0200] rev 12332
[wdoc] Remove fallback about xml.etree module
Module xml.etree exists since python 2.5.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 28 Jun 2018 10:15:33 +0200] rev 12331
[wdoc] Avoid usage of deprecated xlm elementree getchildren() method
Use list(node) as suggested by the deprecation warning.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 28 Jun 2018 09:43:23 +0200] rev 12330
[style] Make cubicweb/web/views/wdoc.py flake8-clean
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 28 Jun 2018 09:38:38 +0200] rev 12329
[py3] Use six.text_type instead of unicode in wdoc views
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 28 Jun 2018 10:17:15 +0200] rev 12328
[views/startup] drop a duplicate rql query in manage view
Counting entities in `nb` is already done above this code, regression introduced by a85db6fa
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 19 Jun 2018 09:13:40 +0200] rev 12327
Merge with 3.26
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 18 Jun 2018 10:04:08 +0200] rev 12326
Added tag 3.26.4, debian/3.26.4-1 for changeset e1c1af68db86
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 18 Jun 2018 08:58:47 +0200] rev 12325
[pkg] Version 3.26.4
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 15 Jun 2018 17:45:26 +0200] rev 12324
[py3] ensure AjaxController return bytes
publish() must return bytes, when the @ajaxfunc decorated method return None, this raised:
TypeError: You cannot set Response.body to a text object (use Response.text)
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 13 Jun 2018 11:09:17 +0200] rev 12323
[py3] Let InstanceCommand.run_arg() always return an int
The caller of this method (which is method "run_args") does `max(status,
self.run_arg(appid))` and run_arg might return None if the underlying
<cmdname>_instance method returns None. On python3 max(1, None) breaks
with "TypeError: unorderable types: int() > NoneType()". So we enforce
run_arg() method to return an integer even if the underlying method
returns None.
This fixes call of "cubicweb-ctl i18ninstance" with Python3.
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 18 Jun 2018 08:47:03 +0200] rev 12322
[test] Use cubicweb-file < 2.0.0
From version 2.0.0, cubicweb-file moved to new-style layout (Python
package) but we still expect it to be an old-style cube in CubicWeb's
tests (WebconfigTC in web/test/unittest_webconfig.py).
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 06 Jun 2018 11:56:15 +0200] rev 12321
[py3] Decode subprocess stdout in toolsutils.show_diffs()
On Python 3, subprocess' pipes are bytes stream so we must decode them
before printing. Without this change, diff of configuration files (e.g.
all-in-one.conf as displayed upon instance upgrade) will rendered as a
single line on Python 3.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr> [Thu, 03 May 2018 16:47:51 +0200] rev 12320
[python3] make sure staticcontroller returns a bytes instance
The ``publish()`` method of controller is supposed to return a
bytes intsance. Returning a text_type instance will crash later
on in the Pyramid response handler when assigning content to
``response.body`` (at least in Python3)::
>>> from pyramid.response import Response
>>> r = Response()
>>> r.body = ''
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/adim/.virtualenvs/…/response.py", line 562, in _body__set
raise TypeError(msg)
TypeError: You cannot set Response.body to a text object (use Response.text)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr> [Thu, 03 May 2018 14:05:26 +0200] rev 12319
[python3] use inspect.getfullargspec instead of inspect.getargspec
The latter is now deprecated
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 15 Jun 2018 17:45:26 +0200] rev 12318
[py3] ensure AjaxController return bytes
publish() must return bytes, when the @ajaxfunc decorated method return None, this raised:
TypeError: You cannot set Response.body to a text object (use Response.text)
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 13 Jun 2018 11:09:17 +0200] rev 12317
[py3] Let InstanceCommand.run_arg() always return an int
The caller of this method (which is method "run_args") does `max(status,
self.run_arg(appid))` and run_arg might return None if the underlying
<cmdname>_instance method returns None. On python3 max(1, None) breaks
with "TypeError: unorderable types: int() > NoneType()". So we enforce
run_arg() method to return an integer even if the underlying method
returns None.
This fixes call of "cubicweb-ctl i18ninstance" with Python3.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 15 Jun 2018 17:42:50 +0200] rev 12316
Depend on cubicweb-file >= 2.0.0
I applied V1 of the patch, but V2 contained this extra hunk...
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 11 Jun 2018 16:50:38 +0200] rev 12315
[test] Update webconfig's tests accounting for cubicweb-file being now a package
WebconfigTC.test_locate_all_files and WebconfigTC.test_locate_resource
assumed that cubicweb-file was installed in <share>/cubes/file whereas,
from the latest release, it is now a standard Python package thus
installed in site-packages as cubicweb_file. We simply update base
directory of these two tests.
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Wed, 06 Jun 2018 18:54:24 +0200] rev 12314
[widgets.js] fix obvious bug detected by sonar
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Wed, 06 Jun 2018 18:37:16 +0200] rev 12313
[views/uicfg] obvious bug detected by sonar
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 06 Jun 2018 14:20:16 +0200] rev 12312
[style] Make toolsutils.py flake8-clean
Run `autopep8 --max-line-length 100 -i cubicweb/toolsutils.py` and fixed
unused imports.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 06 Jun 2018 11:56:15 +0200] rev 12311
[py3] Decode subprocess stdout in toolsutils.show_diffs()
On Python 3, subprocess' pipes are bytes stream so we must decode them
before printing. Without this change, diff of configuration files (e.g.
all-in-one.conf as displayed upon instance upgrade) will rendered as a
single line on Python 3.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr> [Thu, 03 May 2018 16:47:51 +0200] rev 12310
[python3] make sure staticcontroller returns a bytes instance
The ``publish()`` method of controller is supposed to return a
bytes intsance. Returning a text_type instance will crash later
on in the Pyramid response handler when assigning content to
``response.body`` (at least in Python3)::
>>> from pyramid.response import Response
>>> r = Response()
>>> r.body = ''
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/adim/.virtualenvs/…/response.py", line 562, in _body__set
raise TypeError(msg)
TypeError: You cannot set Response.body to a text object (use Response.text)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr> [Thu, 03 May 2018 14:05:26 +0200] rev 12309
[python3] use inspect.getfullargspec instead of inspect.getargspec
The latter is now deprecated
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
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.
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
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.
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 20 Mar 2017 11:35:58 +0100] rev 12081
[doc] Fill release notes for 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.
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().
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>).
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
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 20 Mar 2017 17:04:10 +0100] rev 12076
[pkg] Version 3.24.7
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.
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.
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.
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.
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).
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 17 Mar 2017 17:32:04 +0100] rev 12070
[pkg] Depends on yams >= 0.45.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
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 20 Mar 2017 10:28:01 +0100] rev 12068
Merge with 3.24 branch
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
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 20 Mar 2017 08:58:25 +0100] rev 12066
[pkg] Version 3.24.6
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 20 Mar 2017 08:57:17 +0100] rev 12065
Merge public heads
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.
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.
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.
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,
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
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 16 Mar 2017 17:25:07 +0100] rev 12059
[sobjects] Fix a trivial flake8 error
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.
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.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 10:10:44 +0100] rev 12056
[sobjects] Fix flake8 errors in services.py
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.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 15 Mar 2017 09:15:32 +0100] rev 12054
[repo] Fix flake8 error
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.
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).
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.
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
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.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 18:26:05 +0100] rev 12048
[cleanup] Drop non sense sentence in docstring
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.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 18:21:22 +0100] rev 12046
Fix flake8 some errors
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 18:18:51 +0100] rev 12045
[test] Use existing reference to repo_source
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.
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.
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.
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.
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.
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
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
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 17:44:03 +0100] rev 12037
[devtools] Stop using repo.new_session
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.
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.
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.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 16:31:08 +0100] rev 12033
[session] Drop unused class
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
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
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)
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
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.
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.
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.
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).
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.
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
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 10 Mar 2017 11:25:24 +0100] rev 12022
[repo] Drop no more used ShuttingDown exception
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.
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).
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.
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.
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.
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.
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.
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 06 Mar 2017 14:50:00 +0100] rev 12014
[server] Make cubicweb/server/utils.py flake8-clean
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.
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.
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.
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
Samuel Trégouët <samuel.tregouet@logilab.fr> [Thu, 16 Feb 2017 10:56:45 +0100] rev 12009
[skeleton] call includeme from new cube
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.
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
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.
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.
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)
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.
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 06 Mar 2017 15:22:16 +0100] rev 12002
[test] Make unittest_serverctl.py flake8-clean
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.
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 06 Mar 2017 15:16:53 +0100] rev 12000
[pyramid] Drop useless "init_instance" module
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.
David Douard <david.douard@logilab.fr> [Wed, 08 Feb 2017 16:05:00 +0100] rev 11998
[server] fix a typo in a docstring
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.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 23 Feb 2017 10:59:56 +0100] rev 11996
[web/views] Fix a docstring
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()
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.
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.
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.
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.
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.
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.
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.
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...
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
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).
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.
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).
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
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...
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.
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.
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.
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
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.
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()
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.
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.
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 ;)).
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'.
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()
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.
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.
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.
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.
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
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).
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
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.
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
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]
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.
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.
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.
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
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.
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
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 06 Feb 2017 15:43:19 +0100] rev 11953
[server] Ignore computed relations in "relations" integrity checker
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.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 07 Feb 2017 18:18:22 +0100] rev 11951
[doc] Add 3.25 release notes
[ci skip]
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 27 Jan 2017 18:09:56 +0100] rev 11950
[repository] possibility to disable connections pooling
Add a new configuration option 'connections-pooler-enabled' (default yes). If
set to no, disable connection pooling and open new connections to the database
on demand. This allow to use CubicWeb with other poolers (such as pgbouncer).
Florent Cayré <florent.cayre@logilab.fr> [Thu, 02 Feb 2017 14:58:39 +0100] rev 11949
[js] Fix loading image URL
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 06 Feb 2017 11:21:31 +0100] rev 11948
[migration] Move pyramid-related migration after "entities" table modifications
Otherwise, we getting into `add_entity_type('CWSession')` we try to insert a
CWEType without any 'asource' column (per 3.24's schema) whereas the backend
still wants it.
Closes #17054035.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 03 Feb 2017 13:37:32 +0100] rev 11947
Merge 3.24.5 into default branch
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 10 Jan 2017 16:08:55 +0100] rev 11946
[entities] Introduce an IDublinCore adapter
Move all dc_ methods from AnyEntity to the new IDublinCore adapter and proxy
them through a __getattr__ method on AnyEntity.
Current test suite should be enough.
Closes #3119992.
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 27 Jan 2017 11:05:07 +0100] rev 11945
[skeleton] Add an entry point and configuration for running a Pyramid application
We add a `pyramid_main` function in __init__.py that instantiate the WSGI
application using "cubicweb.pyramid"; this is defined as an entry point (in
setup.py) so that pserve_ can find it.
Alongside comes a development.ini file which includes basic settings so that
running a Pyramid+CubicWeb application works (only the "instance=<appid>" may
be passed as a command-line argument). Logging is also configured there, but
only includes the cube at stake and cubicweb (others could be added if
needed).
.. _perse: \
http://docs.pylonsproject.org/projects/pyramid/en/1.8-branch/pscripts/pserve.html
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 27 Jan 2017 09:58:30 +0100] rev 11944
[cwconfig] Issue a warning when a "core" ctl plugin failed to load
This is often because of a missing dependency, the warning would indicate this
hopefully.
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 27 Jan 2017 13:36:00 +0100] rev 11943
[dataimport] Fix "existing_relations" parameter name in ExtEntitiesImporter
Olivier CAYROL (Logilab) <Olivier.Cayrol@logilab.fr> [Thu, 15 Jan 2015 18:01:28 +0100] rev 11942
[ical] Create ICal events or todos depending on component type returned by adapter
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 31 Jan 2017 11:06:28 +0100] rev 11941
Added tag 3.24.5, debian/3.24.5-1, centos/3.24.5-1 for changeset 70d28e632206
Sylvain Thénault <sylvain.thenault@logilab.fr> [Tue, 31 Jan 2017 10:41:04 +0100] rev 11940
Prepare 3.24.5
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 30 Jan 2017 10:18:31 +0100] rev 11939
[devtools] Skip computed relations when attempting to auto-populate test database
Fix the automatic database population underlying automatic test to avoid attempt
to create computed relations.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 30 Jan 2017 18:14:45 +0100] rev 11938
[migration] Stop asking confirm to commit
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 30 Jan 2017 17:17:17 +0100] rev 11937
[migration] Fix crash on 3.24 migration
Some sql using a column droped the line above crash migration of cw < 3.24.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 30 Jan 2017 10:18:31 +0100] rev 11936
[devtools] Skip computed relations when attempting to auto-populate test database
Fix the automatic database population underlying automatic test to avoid attempt
to create computed relations.
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 30 Jan 2017 11:23:13 +0100] rev 11935
[test] Use our BaseTestCase in unittest_rtags.py
We need it DeprecatedInstanceWithoutModule for assertWarns method. Use this
instead of unittest2 directly with a try/except block to get rid of flake8
error about import not being one top of file.
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 30 Jan 2017 10:22:23 +0100] rev 11934
[server] Add a blank line before _CnxSetPool to fix PEP8 error
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 30 Jan 2017 10:19:58 +0100] rev 11933
[pkg] Use logilab-common's master repository in dev requirements
Should follow-up on 7b2247098f58 after integration on logilab-common side.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 20 Jan 2017 16:39:44 +0100] rev 11932
[rtags] pass module name to RegistrableInstance
Instantiate a RegistrableInstance without passing the module name is deprecated
in https://www.logilab.org/patch/10047069
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 27 Jan 2017 17:42:16 +0100] rev 11931
[repository] move cnxset pool handling to a helper class
The class has responsability to handle connections pool operations in a single
public attribute 'cnxsets'.
On Repository _get_cnxset() and _free_cnxset() are replaced by cnxsets.get()
and cnxsets.release().
Drop multiple access to private attributes and methods from outside of Repository.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 27 Jan 2017 15:53:15 +0100] rev 11930
[pkg] Fix some error on building documentation
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 27 Jan 2017 16:26:09 +0100] rev 11929
Merge 3.24.4 into default branch
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 27 Jan 2017 13:41:24 +0100] rev 11928
Added tag 3.24.4, debian/3.24.4-1, centos/3.24.4-1 for changeset 35fd54c0065d
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 27 Jan 2017 13:30:24 +0100] rev 11927
Prepare 3.24.4
Florent Cayré <florent.cayre@gmail.com> [Fri, 20 Jan 2017 03:48:11 +0100] rev 11926
[source,native] Generalize the IntegrityError constraint parsing regex
This allows catching constraint-related errors that have been translated
by psycopg2, replacing surrounding english quotes by french quotes + space
for instance.
Closes #17047951.
Samuel Trégouët <samuel.tregouet@logilab.fr> [Wed, 18 Jan 2017 16:50:48 +0100] rev 11925
[pyramid] use pyramid.request `path_info` property instead of `path`
path is concatenation of SCRIPT_NAME and PATH_INFO
we just need PATH_INFO here
Samuel Trégouët <samuel.tregouet@logilab.fr> [Fri, 13 Jan 2017 11:36:51 +0100] rev 11924
[pyramid] fix login route with language-mode = url-prefix
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 18 Nov 2016 10:28:41 +0100] rev 11923
[devtools] Make timeout error in qunit tests configurable and use SkipTest in test_jscript.py
This is grafted from 87443f279b0f in default branch (got tired of CI failing
because of these unreliable tests).
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 26 Jan 2017 16:34:56 +0100] rev 11922
[web] Handle unspecified value in TZDatetimeField
`field._ensure_correctly_typed(self, form, value)` should return None if value
is None.
Closes #17050181.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 26 Jan 2017 16:33:15 +0100] rev 11921
[web] Handle unspecified 'date' or 'time' in JQueryDateTimePicker.process_field_data()
dict.get() may return None, which has no attribute strip.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Mon, 23 Jan 2017 15:35:19 +0100] rev 11920
[cwconfig] create a virtual "cubes" package
_CubesImporter now handle import of "cubes" and return a virtual module so that
"cubes" is always importable without having to create a __init__.py in
CUBES_DIR and add CUBES_DIR/.. to sys.path.
Drop custom code in setup.py used to create CUBES_DIR/__init__.py and drop now
useless warning when cubicweb is installed in develop mode
Update test_cubes_path() and ensure 'cubes.file' is not loaded before testing
its import. This test seems to have mistakes because cubes are loaded
automatically when discovering cw commands (cubes.<x>.ccplugin), not sure how
this should be fixed definitely.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 20 Jan 2017 18:17:04 +0100] rev 11919
Change hooks control (deny_all_hooks_but / allow_all_hooks_but) to be more predictable
Prior to this, if one execute code like:
with cnx.hooks.deny_all_hooks_but('metadata'):
with cnx.hooks.deny_all_hooks_but():
# mycode
'metadata' hooks will be activated anyway in the inner block, which is rather
unexpected (of course in real life you only see the latest hooks control
statement, the former being higher in the call stack). This is due to the
underlying usage of old `enable_hook_categories` / `disable_hook_categories`
methods, which were introduced much before the now official context manager
based API (with `cnx.[deny|all]_all_hooks_but(...)`).
To move on, this patch drop the two legacy methods, rename and privatize related
internal state on the connection (`hooks_mode` becomes `_hooks_mode`,
`disabled_hook_cats` and `enabled_hook_cats` become `_hooks_categories`) and
reimplement the `_hooks_control` context manager to simply update them.
See the added unit test for details.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 24 Jan 2017 14:09:13 +0100] rev 11918
[cwconfig] make appobjects_cubes_modnames() public
The method is used in cubicweb.cwvreg without underscore and outside of the
config class, so let's make this method public.
Fix autoreload with twisted.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 20 Jan 2017 15:16:18 +0100] rev 11917
Fix str(Unauthorized)
which is really problematic on python 3 where __unicode__ is never called
anymore. This was caused because in PY3, CubicWebException.__str__ was referencing
__unicode__ implementation of CubicWebException, not of its subclass that
implements it.
Fix a flake8 style warning about lambda assignment as a bonus.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 20 Jan 2017 09:55:08 +0100] rev 11916
[test] avoid using a deprecated feature of yams
handle_file() now require a module name (yams@d9120d7)
Alain Leufroy <alain@leufroy.fr> [Tue, 12 May 2015 22:14:24 +0200] rev 11915
[test] add some tests to web.views.baseviews
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 23 Jan 2017 10:44:00 +0100] rev 11914
[tox] Drop "touch {envdir}/share/cubicweb/cubes/__init__.py" command on py34 env
This was useful when we installed cubicweb in "develop" mode
but we do not do this anymore.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 23 Jan 2017 11:02:21 +0100] rev 11913
Drop support for https-url in all-in-one.conf
This feature allowing an instance to have both anonymous and authenticated
(https) url is not used anymore, let's drop it.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 20 Jan 2017 16:53:28 +0100] rev 11912
[test] use TemporaryDirectory context manager
For consistency with others tests, use TemporaryDirectory from
cubicweb.devtools.testlib.
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 20 Jan 2017 14:32:34 +0100] rev 11911
[tox] Drop "exclude" option from flake8 config and adjust flake8-ok-files.txt accordingly
Some files listed in flake8-ok-files.txt were excluded of flake8 run because
of the "exclude" option in tox.ini. Some of them were non-existent files
(moved), some others were actually non-flake8-compliant. In the latter case,
we adjust trivial errors (blank lines, module import not on top of file) but
remove others (like cubicweb/test/unittest_utils.py) from
flake8-ok-files.txt.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 20 Jan 2017 10:31:04 +0100] rev 11910
[autoform] Go through guess_field even when field class is specified using uicfg
guess_field does not only find the proper field class for some
attribute/relation, but also do some basic configuration depending on e.g.
constraints. Before this patch, if one was specifying explicitly the field class
using uicfg.autoform_field, this automatic configuration wasn't happening.
Change form.field_by_name and ff.guess_field so explicit class are also
automatically configured now.
Closes #14474840
Florent Cayré <florent.cayre@gmail.com> [Fri, 20 Jan 2017 03:54:43 +0100] rev 11909
[uilib] Fix incorrect serialization of python dicts into javascript objects
Valid javascript object keys must be surrounded by quotes unless they are valid javascript identifiers. Valid identifiers are a defined by complex and changing specs, so it is much simpler to always use quotes.
Closes #17046704.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 12 Jan 2017 13:40:25 +0100] rev 11908
[repository] Fix connection-pool-size not set to 1 with quick_start enabled
config.load_schema() and config.init_cube() reload configuration options from
config file, so a manually set connections-pool-size (eg. when quick_start is
enabled) wasn't working.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 19 Jan 2017 11:12:35 +0100] rev 11907
[migration] Enhance assertion message to get a chance to fix the problem
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 19 Jan 2017 11:12:07 +0100] rev 11906
[migration] Skip virtual rtypes when adding relation definition through add_cube
Virtual rtypes should be skipped as they are added dynamically on loading
schema. Those are skipped by e.g. schema serialisation or add_entity_type, do
the same thing here.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 19 Jan 2017 11:10:47 +0100] rev 11905
[migration] Avoid unnecessary intermediary commit when migrating a schema
Those are low-hanging fruit following changes in ac74476d686c (Fix addition of
entity type including boundary constraints on its own attributes): this is no
more necesary to commit the get a new relation type definition in the schema.
At some point we could/should probably do more on this topic to avoid
intermediary commit on e.g. entity type addition, but this requires more work.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 18 Jan 2017 15:04:27 +0100] rev 11904
[migration] Fix addition of entity type including boundary constraints on its own attributes
This was failing because of the sequence of sql executing when adding an
attribute:
1. add entity type <commit>
2. add relation type for attribute 1 <commit>
3. add attribute 1 and associated constraints <commit>
etc.
In the case of e.g. start/end constraint, we were trying to add the constraint
before addition of the constrained attribute (e.g. add constraint on 'start'
referencing 'end', but only 'start' has been added yet, not 'end').
This patch fix this by:
* adding the relation type to the schema without having to commit, but keeping
the operation to revert the addition if necessary - this allows to a single
commit for all attributes of the entity type ;
* using a LateOperation on constraint operation, so we ensure attributes are
actually added before any constraint is added.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 19 Jan 2017 09:53:31 +0100] rev 11903
[schema sync] Refactor AfterAddCWRTypeHook and AfterAddCWComputedRTypeHook so the latter inherit from the former
and enhance their docstring.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 18 Jan 2017 12:36:02 +0100] rev 11902
Drop embed-allowed option, gone away for a long time
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 04 Jan 2017 10:02:05 +0100] rev 11901
Never record undo information for session or data import
for session, it may causes unlimited database size expansion while it makes no sense
to undo this kind of changes. For data import, they are created programatically hence
we may not want to undo this either.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 19 Jan 2017 14:53:05 +0100] rev 11900
[cwvreg] load registry using modules names instead of directories
Introspect cubicweb, cubes and apphome using pkgutil to generate the full list
of modules names for loading registries.
Avoiding using bogus logilab.common.modutils.modpath_from_file().
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 19 Jan 2017 15:27:39 +0100] rev 11899
[schema] load schema from modules names instead of directories
Introspect cubicweb, cubes and apphome using pkgutil to generate the full list
of modules names for loading the schema.
Keep historical behavior and check if source .py file exists if a module is
found using python bytecode file (.pyc and .pyo)
Loading schema from apphome require apphome to be present in sys.path and that
"schema" module resolve to a file located in apphome.
Update migraction tests to explicitely update sys.path when loading schema from
different apps, use a contextmanager for this so it's more readable.
Require updated logilab-common and yams
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 18 Jan 2017 17:16:00 +0100] rev 11898
[devtools/test] Skip qunit tests in case of timeout
Follow-up on 87443f279b0f where other similar tests got
adjusted not to fail (in particular in our CI environment).
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 18 Feb 2016 14:22:07 +0100] rev 11897
[autoform] Avoid two calls to field.process_form for the same field in some cases
when some entity is being created and data include non-inlined relations, the
values for this relation are now stored for later usage, avoiding two calls
to field's process_form method, which may be unexpected for custom fields.
This has been discovered in saem_ref#f5444b1f9770.
Reorganize imports in the test along the way.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 19 Dec 2016 17:22:48 +0100] rev 11896
[pyramid] Don't use unsafe_cnx_context_manager for write queries
we may have clumsy error that hide previous problems on attempting to commit the transaction.
Closes #16753531
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 14 Dec 2016 08:37:11 +0100] rev 11895
Repair database wrt indexes / unique constraints
* recreate indexes dropped by 3.23 migration (but it's still unclear why)
* attempt drop remaining extra indexes (there may be a bunch of these on old instances)
* warn about missing expected indexes
Closes #16666137
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 14 Dec 2016 17:06:24 +0100] rev 11894
Enhance postgres index filter with values from real life
This has been found on fairly old instances of ours (cwo/elo). Dunno if we
really want this in, it may lead to false negatives.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 14 Dec 2016 17:04:29 +0100] rev 11893
Extract functions to list expected/found database indexes from check_indexes
so they may be used from other contexts.
Use consistent naming along the way: always use indexes, not indices.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 24 Nov 2016 15:36:26 +0100] rev 11892
Simplify and fix _cw.drop_entity_cache
* it's never called with an eid as argument, beside in a useless case in test
(removed)
* the only place where it's called from outside the tests is in full-text
reindexation in server.checkintegrity: we could removed the request
implementation and move it in unittest_rset, byt I decided to keep it for
consistency with all other entity cache handling methods
* get back a fix from Julien Cristau for the connection's implementation,
quoting is commit message:
When removing an entity from the transaction's cache, clear the
entity's own cache
May avoid issues where an entity object is still accessible somewhere else
(e.g. an operation) after dropping it from the transaction's cache, with a
stale attribute or relation cache.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 18 Nov 2016 17:50:56 +0100] rev 11891
[entity/optimization] Cache rset when entity.related is called with entities=False
If fail to see why we couldn't cache in this case, while this is important for
optimization reason: when doing a single HTTP request, some queries are done two
or three times because of predicates / uicfg or alike.
Also always store tuple and not list in the cache, because:
* else we get some regression
* and inconsistent result type (tuple or list)
* and it simply feels better to cache an unmutable object.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 14 Dec 2016 08:47:06 +0100] rev 11890
Ensure in 3.24 migration that entities from LDAP have consistent cwuri
Closes #16666157
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Wed, 14 Dec 2016 13:34:08 +0100] rev 11889
[doc/book] fix error in markup
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 09 Nov 2016 16:14:17 +0100] rev 11888
[rtags] Allow to 'derive' rtags
Since some releases, rtags (structure underlying uicfg) have selector and may be
copied using something like:
new_rtags = deepcopy(original_rtags)
new_rtags.__module__ = __name__
new_rtags.__select__ = custom_selector
The problem is that starting from that, both rtags wil diverge and changes in
original_rtags won't be considered, while we usually want to set a few specific
rules only in new_rtags. To fix this problem, this cset introduces the notion of
"derivated/parent" rtag, eg:
new_rtags = original_rtags.derive(__name__, custom_selector)
Beside easier copying, when using the above method changes in original_rtags
which are not overriden by new_rtags will be considered since it only hold its
specific rules but look among its parent chain for non-found keys.
Along the way, flake8 unittest_rtags.
Closes #16164880
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 09 Nov 2016 16:08:23 +0100] rev 11887
[test] Use bare unittest in unittest_rtags
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 09 Nov 2016 16:07:10 +0100] rev 11886
[rtags] Docstring fix
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 09 Nov 2016 16:05:06 +0100] rev 11885
[cleanup] flake8 rtags.py
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 14 Dec 2016 11:13:46 +0100] rev 11884
[pkg] Require passlib >= 1.7.0
Since bc9d901cb9e6 we use 1.7.0 API, update packaging accordingly.
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Sun, 04 Dec 2016 23:45:52 +0100] rev 11883
[web/http_headers] do not crash when IfModifiedSince is empty string (closes #16527954)
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 07 Dec 2016 14:07:35 +0100] rev 11882
[pkg] Set an upper bound to passlib
We're using a deprecated API and are getting the following deprecation
warning:
::
the method passlib.context.CryptContext.encrypt() is deprecated as of
Passlib 1.7, and will be removed in Passlib 2.0, use CryptContext.hash()
instead.
So let's make sure we're getting a working library.
[ci skip]
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 09 Dec 2016 15:08:52 +0100] rev 11881
[cwconfig] Retrieve real path of cubes directory
Since logilab-common 1.3.0, we have real path expansion
modutils.modpath_from_file. But the extrapath parameter that is passed from
cubicweb.schema reader may still have symlinks, so expand them here to
hopefully have consistent comparison in modpath_from_file.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 07 Dec 2016 14:11:23 +0100] rev 11880
[server] Use CryptContext's hash method instead of deprecated encrypt method
Getting rid of the following deprecation warning:
::
the method passlib.context.CryptContext.encrypt() is deprecated as of
Passlib 1.7, and will be removed in Passlib 2.0, use CryptContext.hash()
instead.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 07 Dec 2016 14:13:20 +0100] rev 11879
Merge public heads
Julien Cristau <julien.cristau@logilab.fr> [Thu, 22 Oct 2015 16:58:12 +0200] rev 11878
[cwctl] on upgrade, clear instance_md5_version cache
The generate-static-datadir depends on a correct
config.instance_md5_version(), and we just invalidated it by
upgrading the instance.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr> [Tue, 15 Dec 2015 08:35:13 +0100] rev 11877
[twisted] add request error handler to avoid finishing it twice
And avoid stack traces like::
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 783, in __bootstrap
self.__bootstrap_inner()
File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
--- <exception caught here> ---
[...]
File "/usr/lib/python2.7/dist-packages/twisted/python/threadpool.py", line 196, in _worker
result = context.call(ctx, function, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 118, in callWithContext
return self.currentContext().callWithContext(ctx, func, *args, **kw)
File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 81, in callWithContext
return func(*args,**kw)
File "/home/me/envs/grshell-cw/cubicweb/statsd_logger.py", line 121, in __call__
return self.callable(*args, **kw)
File "/home/me/envs/grshell-cw/cubicweb/etwist/server.py", line 131, in render_request
code=500, twisted_request=request)
File "/home/me/envs/grshell-cw/cubicweb/etwist/http.py", line 22, in __init__
self._finalize()
File "/home/me/envs/grshell-cw/cubicweb/etwist/http.py", line 46, in _finalize
self._twreq.finish()
File "/usr/lib/python2.7/dist-packages/twisted/web/server.py", line 228, in finish
return http.Request.finish(self)
File "/usr/lib/python2.7/dist-packages/twisted/web/http.py", line 931, in finish
"Request.finish called on a request after its connection was lost; "
exceptions.RuntimeError: Request.finish called on a request after its connection was lost; use Request.notifyFinish to keep track of this.
Rémi Cardona <remi.cardona@logilab.fr> [Fri, 04 Sep 2015 18:05:51 +0200] rev 11876
[web/tests] Hide DeprecationWarnings
Julien Cristau <julien.cristau@logilab.fr> [Thu, 19 Nov 2015 12:25:45 +0100] rev 11875
[web] remove next_tabindex()
It's hard to see it work reliably in view of multiple server processes.
If something like that is needed it should probably be built on the
client (js) side.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 23 Nov 2016 17:19:51 +0100] rev 11874
[views/optimization] Ensure we call rset.possible_actions with the same argument
rset.possible_actions (which should definitly not be an ResultSet method, but
that's another story) has been designed to hold a cache to compute possible
actions for a only once, since this may be a fairly costly operation (notably
because of the 'has_editable_relations' predicates). But this has been broken by
introduction of a new 'view' parameter which is not given by every call.
To fix this, this cset adds the missing view argument where necessary and
reimplements the rset's method to assert it's always called with the same key.
Unfortunatly, those changes have to be ported to squareui and bootstrap cubes as
well.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 18 Nov 2016 18:19:10 +0100] rev 11873
[schema/optimization] Ensure read permissions are deactivated when we're checking a permission
When called from a web request, since we *are* checking some permission, read
permissions don't have to be introduced in this query.
We may avoid that since there now more any differences between web and repo
connections, so let's do it.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 18 Nov 2016 18:16:21 +0100] rev 11872
[web] Enhance query log file
* Add an overall page generation time
* Don't log URL without any query (e.g. static files)
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 24 Nov 2016 14:26:12 +0100] rev 11871
[massive store] Don't store eids_seq_range as a store attribute
since it's not considered after object's initialization.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 24 Nov 2016 16:58:50 +0100] rev 11870
Flake8 bits with some copyright updates
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 24 Nov 2016 16:58:27 +0100] rev 11869
[test] Use plain unittest in unittest_views_forms.py
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 24 Nov 2016 16:32:14 +0100] rev 11868
Some py3k related fixes: use text_type instead of unicode
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 24 Nov 2016 15:39:52 +0100] rev 11867
[cwctl] Kill deprecated ordered_instances method
no need to keep bw compat for this.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 02 Dec 2016 10:10:58 +0100] rev 11866
[test/cleanup] Use plain unittest
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 02 Dec 2016 10:10:42 +0100] rev 11865
[test/cleanup] flake8 unittest_rqlannotation.py
Arthur Lutz <arthur.lutz@logilab.fr> [Fri, 25 Nov 2016 13:10:10 +0100] rev 11864
[debian] logilab >= 1.2.2 in requires (only in build depends)
Related to #16404515.
Arthur Lutz <arthur.lutz@logilab.fr> [Fri, 25 Nov 2016 13:07:06 +0100] rev 11863
[debian] move unittest2 to requires not recommends closes #16404515
Philippe Pepiot <philippe.pepiot@logilab.fr> [Wed, 23 Nov 2016 17:25:31 +0100] rev 11862
[devtools] named context for boxes subTest for consistency
David Douard <david.douard@logilab.fr> [Wed, 23 Nov 2016 18:38:46 +0100] rev 11861
Added tag 3.24.3, debian/3.24.3-1, centos/3.24.3-1 for changeset bb5904cd284e
David Douard <david.douard@logilab.fr> [Wed, 23 Nov 2016 18:36:55 +0100] rev 11860
[pkg] 3.24.3
David Douard <david.douard@logilab.fr> [Wed, 23 Nov 2016 12:24:04 +0100] rev 11859
[cwconfig] ensure CubicWebNoAppConfiguration returns a typed value (closes #16364459)
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 18 Nov 2016 18:15:14 +0100] rev 11858
[views/optimization] Makes has_editable_relations predicate less costly by using generator
The `has_editable_relations` predicate is used to say if the 'modify' action
should appear. To do so, it checks if anything is editable (ie. something in the
attributes, relations or inlined section of the automatic form).
This may be costly since it may have to check several permissions. To optimize
this a bit, this cset turns list into generator so that we'll avoid unnecessary
work as soon as we find a match.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 17 Nov 2016 11:03:19 +0100] rev 11857
[cwconfig] Trim down allowed exceptions in gettext language setting
I can't see any valid reason to pass on ImportError and AttributeError. In
particular, the latter shadowed a Python 3 error until 4f43e64603ef.
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 21 Nov 2016 14:52:33 +0100] rev 11856
[pkg] Configure "universal" wheel build
According to https://packaging.python.org/distributing/#wheels,
we should create universal wheels (no 2to3 step, no C extension).
Configure this in setup.cfg.
[ci skip]
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 21 Nov 2016 15:17:32 +0100] rev 11855
[rqlrewrite] Test and fix potential NameError
We were referencing a loop variable, which may lead to a name error and show a
potential error if there are several matching variables.
To avoid this, introduce a list to hold every encountered variable and process
all of them later.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 16 Nov 2016 15:55:35 +0100] rev 11854
flake8 uicfg
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 16 Nov 2016 15:52:55 +0100] rev 11853
[uicfg] Remove unpredictability from autoform_section initialization
It was attempting to guess smart default values by looking at the opposite
relation (neg_role), but depending on the (random) ordering of the schema, it
may or may not have been set yet, leading to unpredictable result with varying
hash seed.
Remove those fuzzy lookup all at once, it may change some (unreliable) things in
your app but at least it's still a bit easier to explain.
Closes #16272968
Sylvain Thénault <sylvain.thenault@logilab.fr> [Mon, 21 Nov 2016 14:55:27 +0100] rev 11852
[schema/optimization] Wrap rql expressions into EXISTS node when checking individual permissions
Some RQL expression may retrieve several results. It makes sense to wrap them
into an EXISTS node to optimized things a bit. This is already done by security
insertion of 'read' rql expressions.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Fri, 18 Nov 2016 17:44:52 +0100] rev 11851
[views/optimization] Prefetch state'names and comment format in wfhistory component
This will avoid later queries to retrieve them.
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 18 Nov 2016 10:28:41 +0100] rev 11850
[devtools] Make timeout error in qunit tests configurable and use SkipTest in test_jscript.py
The reason is that the latter tests quite often fail in our CI environment,
possibly due to concurrent execution of the browser, and this makes it hard to
identify a truly failing build there. So skip tests with a timeout error.
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 21 Nov 2016 14:18:43 +0100] rev 11849
Added tag 3.24.2, debian/3.24.2-1, centos/3.24.2-1 for changeset 296077513782
And drop erroneous 0.34.2 tag.
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 21 Nov 2016 14:05:37 +0100] rev 11848
Added tag 0.34.2, debian/0.34.2-1, centos/0.34.2-1 for changeset 296077513782
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 21 Nov 2016 13:47:03 +0100] rev 11847
[pkg] Version 3.24.2
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 21 Nov 2016 13:44:59 +0100] rev 11846
Merge with 3.23 head
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 17 Nov 2016 17:26:49 +0100] rev 11845
[migration] Fix 3.23.0 migration script, broken by a703f00718c2
* first query use "IN" where it should use "=" -> crash
* second query is missing an interpolation -> crash
* third query is attempting to remove constraint that have already been removed
by the second query -> crash
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 21 Nov 2016 09:29:52 +0100] rev 11844
[doc] Add 3.24 release date and reference in index pages
[ci skip]
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 18 Nov 2016 17:08:35 +0100] rev 11843
Closing "oldstable" branch
We now release-based branch naming.
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 18 Nov 2016 17:07:43 +0100] rev 11842
Closing "stable" branch
We now release-based branch naming.
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 18 Nov 2016 15:42:10 +0100] rev 11841
Merge 3.24 branch
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 17 Nov 2016 11:00:01 +0100] rev 11840
[pkg] Bump version to 3.25.0.dev0
David Douard <david.douard@logilab.fr> [Fri, 18 Nov 2016 15:00:43 +0100] rev 11839
Added tag 3.24.1, debian/3.24.1-1, centos/3.24.1-1 for changeset da52fda6f15b
David Douard <david.douard@logilab.fr> [Fri, 18 Nov 2016 14:58:58 +0100] rev 11838
[debian] update changelog's time tag
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 18 Nov 2016 13:55:12 +0100] rev 11837
[pyramid] Drop reference to pyramid_cubicweb in ctl command docstring
[ci skip]
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 17 Nov 2016 17:08:29 +0100] rev 11836
[debian] Rework split of cubicweb-ctl package
It does not appear simple to have the .install files work. So just copy
cubicweb-ctl script in DESDIR of cubicweb-ctl binary package and remove
.install files.
Related to #16133259.
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 18 Nov 2016 09:14:25 +0100] rev 11835
[skeleton] Rephrase long description of Debian package into something meaningful
[ci skip]
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 18 Nov 2016 08:42:10 +0100] rev 11834
[skeleton] Depends on python-cubicweb in debian packaging
[ci skip]
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 18 Nov 2016 14:26:03 +0100] rev 11833
[debian] Have a single python-cubicweb binary for the library
But keep distinct meta-packages for dependencies of the
HTTP server (Twisted/Pyramid) and database backend.
Related to #16133259.
David Douard <david.douard@logilab.fr> [Tue, 15 Nov 2016 10:13:47 +0100] rev 11832
[debian] Update debian packaging (closes #16133259)
- use dh_python, pybuild and debhelper>=9,
- refactor and simplify the debian/rules,
- rename binary packages (but cubicweb-ctl) to python-xxx
- remove daemon handling stuff (initscripts...) from cubicweb-ctl (one should
now use a standard WSGI delivery method),
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 17 Nov 2016 16:03:02 +0100] rev 11831
[pkg] Version 3.24.1
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 17 Nov 2016 16:14:21 +0100] rev 11830
[tox] Use `python -m check_manifest` instead of check-manifest program
To make sure we use Python from tox's virtualenv.
David Douard <david.douard@logilab.fr> [Mon, 14 Nov 2016 16:23:22 +0000] rev 11829
add debian buildpackage-generated files to hgignore
Florent Cayré <florent.cayre@gmail.com> [Tue, 15 Nov 2016 00:12:34 +0100] rev 11828
[test] Fix language negotiation test
At least when executed alone (there seems to be a test isolation
problem which I could not figure out).
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 10 Nov 2016 18:25:50 +0100] rev 11827
[pyramid] No more need for an internal connection when user is cached
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 10 Nov 2016 18:23:45 +0100] rev 11826
[web] req.lang should be None or a non-empty string
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 17 Nov 2016 10:15:11 +0100] rev 11825
[web] Simplify a bit language handling
Drop `set_default_language` and `set_user_language` by considering that:
* before being bound to the user, request will have the site's default language
* cnx has the user's preferred language, hence get it back to the request when
it's bound to a connection
The first point requires some change to cubicweb's vreg faking so it doesn't
break.
That should be enough.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 17 Nov 2016 10:53:04 +0100] rev 11824
Fix AttributeError for "lang" on repo/client connections
This is a regression introduced by b48020a80dc3, which removed call to
set_language from the `req._set_user` method. This is fine, but we still want a
language on connections, so we've to handle it if necesary in
Connection.__enter__ (i.e. once connection is properly open).
When using pyramid front-end, which has a users cache, we've to cache its
language as well because we must not access its preferred_language method since
it's not bound to a proper connection.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 17 Nov 2016 10:47:52 +0100] rev 11823
Alias ugettext to gettext method of cwGNUTranslations in Python 3
The former does not exist in Python 3, but we rely on it.
This fixes test_login_bad_password in cubicweb/pyramid/test/test_login.py
which has never passed since being introduced in 6392f34fcdad.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr> [Wed, 16 Nov 2016 14:38:11 +0100] rev 11822
[devctl] make i18n custom message extractors work with legacy layouts
distname needs to be "cubicweb_<cubename>", even with legacy layouts
for pkg.load_entry_point() to work
closes #16272177
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 16 Nov 2016 17:12:09 +0100] rev 11821
Fix (new) flake8 errors
They showed up on upgrade of flake8/pep8.
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 15 Nov 2016 11:44:05 +0100] rev 11820
[pyramid] Try "eid" first when retrieving a subresource of ETypeResource
So that Pyramid traversal works as existing CubicWeb URL publishing.
Florent Cayré <florent.cayre@logilab.fr> [Tue, 15 Nov 2016 12:20:02 +0100] rev 11819
Fix AttributeError on postcommit when db-create adds non-system CWSource entities
In this case, `Repository.add_source` is called from an operation, not from
`Repository.init_sources_from_database`, thus the attribute `sources_by_eid`
does not exist.
Closes #16251078.