1. 12 Jul, 2019 2 commits
    • Denis Laxalde's avatar
      [debian] Update description of cubicweb-ctl* packages · d0cedb5fb790
      Denis Laxalde authored
      init scripts are no longer shipped.
      Avoid mentionning "start" and "stop" command which should not be used in
      production environments.
      branch : 3.26
    • Denis Laxalde's avatar
      [debian] Introduce a cubicweb-ctl3 binary package · 3b48af0ec776
      Denis Laxalde authored
      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.
      branch : 3.26
  2. 10 Jul, 2019 2 commits
    • Jérémy Bobbio (Lunar)'s avatar
      [pkg] Add new autopkgtest for skeleton packaging · d1b5fd6129bd
      Jérémy Bobbio (Lunar) authored
      When running `cubicweb-ctl newcube`, the generated template provides
      debian packaging. So let's add automated tests for that using
      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.
      branch : 3.26
    • Jérémy Bobbio (Lunar)'s avatar
      [skeleton] Update Debian packaging template · 376168d1b14a
      Jérémy Bobbio (Lunar) authored
      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.
      branch : 3.26
  3. 26 Jun, 2019 1 commit
  4. 17 Jun, 2019 1 commit
  5. 02 Jul, 2019 2 commits
  6. 27 Jun, 2019 3 commits
    • Denis Laxalde's avatar
      [autoform] Fix display_fields handling · 9f03df82f8de
      Denis Laxalde authored
      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.
      branch : 3.26
    • Denis Laxalde's avatar
      Flake8 cubicweb/web/views/autoform.py · c96aa316d06b
      Denis Laxalde authored
        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
      branch : 3.26
    • Denis Laxalde's avatar
      [py3] unicode() -> six.text_type in autoform · ea89ca9017c4
      Denis Laxalde authored
      branch : 3.26
  7. 26 Jun, 2019 2 commits
  8. 25 Jun, 2019 7 commits
  9. 20 Jun, 2019 1 commit
  10. 10 Jun, 2019 1 commit
  11. 13 Jun, 2019 1 commit
  12. 07 Jun, 2019 2 commits
  13. 06 Jun, 2019 1 commit
  14. 23 May, 2019 3 commits
  15. 21 May, 2019 1 commit
  16. 16 May, 2019 1 commit
    • Julien Tayon's avatar
      [ldapfeed] FIX: Unique Key violation when synchronizing with LDAPfeed · 3f125fdbcd70
      Julien Tayon authored
      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.
      branch : 3.26
  17. 15 Mar, 2019 1 commit
    • Denis Laxalde's avatar
      Skip tests for ldapsource with python >= 3.7 · f59439bac0a8
      Denis Laxalde authored
      Until someone works on fixing these, this should make our CI green
      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 4d68d20427de)
      branch : 3.26
  18. 16 May, 2019 2 commits
    • Denis Laxalde's avatar
      Flake8 crypto module · bfab695b740a
      Denis Laxalde authored
      branch : 3.26
    • Denis Laxalde's avatar
      Make crypto module python3-compatible · 7abe23cbfda1
      Denis Laxalde authored
      * Remove usage of unicode() and decode the base64-encoded string in
      * 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.
      branch : 3.26
  19. 15 May, 2019 3 commits
  20. 08 Apr, 2019 1 commit
    • Denis Laxalde's avatar
      Account for new psycopg2 exception classes mapping · afafc8fd9a45
      Denis Laxalde authored
      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:
      branch : 3.26
  21. 16 Apr, 2019 1 commit
    • Philippe Pepiot's avatar
      [devtools/testlib] avoid hidding AttributeError in create_user() · 2508ba96fad2
      Philippe Pepiot authored
      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 ?
      branch : 3.26
  22. 05 Apr, 2019 1 commit