Merge 3.26
authorPhilippe Pepiot <philippe.pepiot@logilab.fr>
Wed, 27 Feb 2019 13:36:31 +0100
changeset 12379 04348101688a
parent 12378 9dcb5e4e705b (current diff)
parent 12377 15a068b2def5 (diff)
child 12380 5efff873705e
Merge 3.26
cubicweb/__pkginfo__.py
cubicweb/pyramid/core.py
doc/tutorials/base/blog-in-five-minutes.rst
tox.ini
--- a/.hgignore	Fri Feb 22 15:48:34 2019 +0100
+++ b/.hgignore	Wed Feb 27 13:36:31 2019 +0100
@@ -32,3 +32,4 @@
 ^doc/_build
 ^doc/js_api/
 test-results.xml
+ve
--- a/.hgtags	Fri Feb 22 15:48:34 2019 +0100
+++ b/.hgtags	Wed Feb 27 13:36:31 2019 +0100
@@ -630,3 +630,4 @@
 76d7b0aa94d2ac2e4b431949f20fe1fc51b1a6b1 3.26.5
 8362503a92482e74a674c78fe009cf6ff346c817 3.26.6
 8362503a92482e74a674c78fe009cf6ff346c817 debian/3.26.6-1
+ee4ad63c91e5406e29f079f1f2d3774361798ac8 3.26.7
--- a/README	Fri Feb 22 15:48:34 2019 +0100
+++ b/README	Wed Feb 27 13:36:31 2019 +0100
@@ -28,6 +28,9 @@
 
 Details at https://cubicweb.readthedocs.io/en/3.26/tutorials/base/blog-in-five-minutes
 
+You can also look at the latest builds on Logilab's jenkins:
+https://jenkins.logilab.org/
+
 Documentation
 -------------
 
@@ -47,4 +50,17 @@
 *in the message body* of emails. When submitting a revised version of a patch
 series, a prefix indicating the iteration number ``<n>`` of the series should
 be added to email subject prefixes; this can be achieved by specifying a
-``--flag v<n>`` option to ``hg email`` command.
+``--flag v<n>`` option to ``hg email`` command. If needed you can also use the
+--in-reply-to option.
+
+Examples:
+
+    hg email --to cubicweb-devel@lists.cubicweb.org --intro -r <start>::<end>
+    hg email --flag V2 --to cubicweb-devel@lists.cubicweb.org -r <start>::<end>
+
+If you have any questions you can also come on Logilab's public XMPP room using
+a XMPP client: public@conference.jabber.logilab.org
+
+Mailing list: https://lists.cubicweb.org/mailman/listinfo/cubicweb-devel
+Patchbomb extension: https://www.mercurial-scm.org/wiki/PatchbombExtension
+Good practice on sending email patches: https://www.mercurial-scm.org/wiki/ContributingChanges#Emailing_patches
--- a/cubicweb/etwist/twconfig.py	Fri Feb 22 15:48:34 2019 +0100
+++ b/cubicweb/etwist/twconfig.py	Wed Feb 27 13:36:31 2019 +0100
@@ -76,7 +76,7 @@
         ('uid',
          {'type' : 'string',
           'default': None,
-          'help': 'if this option is set, use the specified user to start \
+          'help': 'unix user, if this option is set, use the specified user to start \
 the repository rather than the user running the command',
           'group': 'main', 'level': WebConfiguration.mode == 'system'
           }),
--- a/cubicweb/pyramid/auth.py	Fri Feb 22 15:48:34 2019 +0100
+++ b/cubicweb/pyramid/auth.py	Wed Feb 27 13:36:31 2019 +0100
@@ -214,6 +214,11 @@
                 YOU SHOULD STOP THIS INSTANCE unless your really know what you
                 are doing !!
 
+                Please refer to to cubicweb-pyramid documentation on how to
+                write this pyramid.ini file:
+                https://cubicweb.readthedocs.io/en/latest/book/pyramid/settings/#pyramid-settings-file
+                Without it authentication WON'T work.
+
             ''')
 
         policies.append(
--- a/cubicweb/pyramid/core.py	Fri Feb 22 15:48:34 2019 +0100
+++ b/cubicweb/pyramid/core.py	Wed Feb 27 13:36:31 2019 +0100
@@ -413,8 +413,12 @@
 
     cwcfg = config.registry['cubicweb.config']
     for cube in cwcfg.cubes():
-        pkgname = 'cubes.' + cube
-        mod = __import__(pkgname)
-        mod = getattr(mod, cube)
+        try:
+            pkgname = 'cubicweb_{}'.format(cube)
+            mod = __import__(pkgname)
+        except ImportError:
+            pkgname = 'cubes.{}'.format(cube)
+            mod = __import__(pkgname)
+            mod = getattr(mod, cube)
         if hasattr(mod, 'includeme'):
-            config.include('cubes.' + cube)
+            config.include(pkgname)
--- a/cubicweb/server/serverconfig.py	Fri Feb 22 15:48:34 2019 +0100
+++ b/cubicweb/server/serverconfig.py	Wed Feb 27 13:36:31 2019 +0100
@@ -115,7 +115,7 @@
         ('uid',
          {'type' : 'string',
           'default': None,
-          'help': 'if this option is set, use the specified user to start \
+          'help': 'unix user, if this option is set, use the specified user to start \
 the repository rather than the user running the command',
           'group': 'main', 'level': (CubicWebConfiguration.mode == 'installed') and 0 or 1,
           }),
--- a/cubicweb/web/formfields.py	Fri Feb 22 15:48:34 2019 +0100
+++ b/cubicweb/web/formfields.py	Wed Feb 27 13:36:31 2019 +0100
@@ -1074,10 +1074,10 @@
     :class:`~cubicweb.web.formwidgets.Select`.
     """
 
-    @staticmethod
-    def fromcardinality(card, **kwargs):
+    @classmethod
+    def fromcardinality(cls, card, **kwargs):
         kwargs.setdefault('widget', fw.Select(multiple=card in '*+'))
-        return RelationField(**kwargs)
+        return cls(**kwargs)
 
     def choices(self, form, limit=None):
         """Take care, choices function for relation field instance should take
@@ -1267,7 +1267,9 @@
                 if isinstance(cstr, SizeConstraint) and cstr.max is not None:
                     kwargs['max_length'] = cstr.max
         return fieldclass(**kwargs)
-    return RelationField.fromcardinality(card, **kwargs)
+    else:
+        fieldclass = kwargs.pop('fieldclass', RelationField)
+        return fieldclass.fromcardinality(card, **kwargs)
 
 
 FIELDS = {
--- a/cubicweb/web/views/autoform.py	Fri Feb 22 15:48:34 2019 +0100
+++ b/cubicweb/web/views/autoform.py	Wed Feb 27 13:36:31 2019 +0100
@@ -16,7 +16,7 @@
 # You should have received a copy of the GNU Lesser General Public License along
 # with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
 """
-.. autodocstring:: cubicweb.web.views.autoform::AutomaticEntityForm
+.. autoclass:: AutomaticEntityForm
 
 Configuration through uicfg
 ```````````````````````````
--- a/doc/book/admin/config.rst	Fri Feb 22 15:48:34 2019 +0100
+++ b/doc/book/admin/config.rst	Wed Feb 27 13:36:31 2019 +0100
@@ -28,7 +28,7 @@
 Cubicweb resources configuration
 --------------------------------
 
-.. autodocstring:: cubicweb.cwconfig
+.. automodule:: cubicweb.cwconfig
 
 
 .. _DatabaseInstallation:
--- a/doc/book/admin/setup.rst	Fri Feb 22 15:48:34 2019 +0100
+++ b/doc/book/admin/setup.rst	Wed Feb 27 13:36:31 2019 +0100
@@ -64,6 +64,12 @@
   apt-get update
   apt-get install cubicweb cubicweb-dev
 
+  # if you want pyramid, the recommended application server
+  apt-get install pyramid-cubicweb
+
+  # or if you want twisted (considered deprecated)
+  apt-get install cubicweb-twisted
+
 ``cubicweb`` installs the framework itself, allowing you to create new
 instances. ``cubicweb-dev`` installs the development environment
 allowing you to develop new cubes.
@@ -155,7 +161,11 @@
 
 Finally, install |cubicweb| and its dependencies, by running::
 
-  pip install cubicweb
+  # for pyramid, the recommended application server
+  pip install cubicweb[pyramid]
+
+  # or for twisted, considered deprecated (used by "cubicweb-ctl")
+  pip install cubicweb[etwist]
 
 Many other :ref:`cubes <AvailableCubes>` are available. A list is available at
 `PyPI <http://pypi.python.org/pypi?%3Aaction=search&term=cubicweb&submit=search>`_
--- a/doc/book/devrepo/repo/hooks.rst	Fri Feb 22 15:48:34 2019 +0100
+++ b/doc/book/devrepo/repo/hooks.rst	Wed Feb 27 13:36:31 2019 +0100
@@ -4,7 +4,7 @@
 Hooks and Operations
 ====================
 
-.. autodocstring:: cubicweb.server.hook
+.. automodule:: cubicweb.server.hook
 
 
 Example using dataflow hooks
--- a/doc/conf.py	Fri Feb 22 15:48:34 2019 +0100
+++ b/doc/conf.py	Wed Feb 27 13:36:31 2019 +0100
@@ -54,7 +54,6 @@
 extensions = [
   'sphinx.ext.autodoc', 
   'sphinx.ext.viewcode',
-  'logilab.common.sphinx_ext',
   ]
 
 autoclass_content = 'both'
--- a/doc/index.rst	Fri Feb 22 15:48:34 2019 +0100
+++ b/doc/index.rst	Wed Feb 27 13:36:31 2019 +0100
@@ -117,6 +117,7 @@
     :maxdepth: 1
     :glob:
 
+    How to contribute to the code base <https://hg.logilab.org/master/cubicweb/file/tip/README#l39>
     dev/*
 
 Indexes
--- a/doc/tutorials/base/blog-in-five-minutes.rst	Fri Feb 22 15:48:34 2019 +0100
+++ b/doc/tutorials/base/blog-in-five-minutes.rst	Wed Feb 27 13:36:31 2019 +0100
@@ -8,11 +8,17 @@
 For Debian or Ubuntu users, first install the following packages
 (:ref:`DebianInstallation`)::
 
-    cubicweb, cubicweb-dev, cubicweb-blog
+    cubicweb, cubicweb-dev, cubicweb-twisted, cubicweb-blog
 
 Windows or Mac OS X users must install |cubicweb| from source (see
 :ref:`SourceInstallation` and :ref:`WindowsInstallation`).
 
+You can also install those packages using pip in a virtualenv::
+
+   virtualenv venv
+   source venv/bin/activate
+   pip install cubicweb[etwist] cubicweb-dev cubicweb-blog
+
 Then create and initialize your instance::
 
     cubicweb-ctl create blog myblog
@@ -39,7 +45,12 @@
 
 The `-D` option activates the debugging mode. Removing it will launch the instance
 as a daemon in the background, and ``cubicweb-ctl stop myblog`` will stop
-it in that case. 
+it in that case.
+
+.. Note::
+
+   If you get a traceback when going on the web interface make sure your
+   version of twisted is **inferior** to 17.
 
 .. _AboutFileSystemPermissions:
 
@@ -76,4 +87,3 @@
 You'll have to restart the instance after modification in one of those files.
 
 This is it. Your blog is functional and running. Visit http://localhost:8080 and enjoy it!
-
--- a/requirements/test-misc.txt	Fri Feb 22 15:48:34 2019 +0100
+++ b/requirements/test-misc.txt	Wed Feb 27 13:36:31 2019 +0100
@@ -25,6 +25,7 @@
 waitress >= 0.8.9
 wsgicors >= 0.3
 pyramid_multiauth
+repoze.lru
 
 ## cubicweb/sobject/test
 cubicweb-comment == 1.12.2