1. 22 Nov, 2019 7 commits
  2. 21 Nov, 2019 4 commits
  3. 19 Nov, 2019 1 commit
    • Jérome Perrin's avatar
      Test Suite for Coding Style test · 82206749
      Jérome Perrin authored
      A new test suite to perform static check on business templates using  `CodingStyleTestCase`.
      
      This runs a coding style test for each business template, after installing the business template and its dependencies listed in business template metadata.
      
      ---
      
      In order to start with a test suite with no failure, business templates that does not pass this test today (because they don't install or because pylint issues still needs to be reviewed) are skipped with an ad-hoc  `bt/skip_coding_style_test` in the business template. Note that this file is not created by business template system as it is a temporary measure, business templates must pass pylint and other checks from `CodingStyleTestCase`.
      
      ---
      
      I took the approach of creating one independent test per business template, instead of the approach of creating a site with all business templates like we did in testNamingConventions or testHTML. This appears as another "Coding Style" test, like Performance or Scalability tests.
      
      The idea behind this was that if we extend our business template checks ( for example when we translate the [ERP5 Module Creation Guidelines](https://www.erp5.com/documentation/developer/guideline/module) to some scripts we can run on a business template ), we can check that each business template contain what it should contain and not just that the global result is OK.
      
      
      
      /reviewed-on nexedi/erp5!629
      82206749
  4. 18 Nov, 2019 5 commits
  5. 15 Nov, 2019 2 commits
  6. 14 Nov, 2019 9 commits
  7. 13 Nov, 2019 2 commits
  8. 12 Nov, 2019 3 commits
    • Jérome Perrin's avatar
      fixup! pdm: introduce a asCellRange script for Measure · 08bf6d94
      Jérome Perrin authored
      from a41f71c3 :
      > Remove the TALES for lines, columns and tab on the matrix box because
      > the default behavior is to call this updateCellRange script
      
      that's not true, we have to list the asCellRange script explicitly.
      08bf6d94
    • Arnaud Fontaine's avatar
      ZODB Components: ModuleSecurityInfo() should also apply to the alias module,... · eabcb211
      Arnaud Fontaine authored
      ZODB Components: ModuleSecurityInfo() should also apply to the alias module, not only to the versioned one.
      
      This fixes an Unauthorized error when GitLoginError is imported from
      erp5.component.module.Git defining ModuleSecurityInfo() for __name__
      (erp5.component.module.erp5_version.Git).
      
      Note that when migrating the content of a Product, ModuleSecurityInfo() first
      parameter must be __name__.
      
      Traceback (innermost last):
        [...]
        Module script, line 1, in BusinessTemplate_handleException
         - <PythonScript at /erp5/BusinessTemplate_handleException used for /erp5/portal_templates/832>
         - Line 1
          from erp5.component.module.Git import GitLoginError
        Module Products.ERP5Type.patches.Restricted, line 305, in guarded_import
          return orig_guarded_import(mname, globals, locals, fromlist, level)
        Module AccessControl.ZopeGuards, line 305, in guarded_import
          raise Unauthorized("import of '%s' is unauthorized" % mname)
      Unauthorized: import of 'erp5.component.module.Git' is unauthorized
      eabcb211
    • Arnaud Fontaine's avatar
      ZODB Components: Alias module was not added to sys.modules if the module it... · 223d4818
      Arnaud Fontaine authored
      ZODB Components: Alias module was not added to sys.modules if the module it points to had already been loaded before.
      223d4818
  9. 11 Nov, 2019 1 commit
  10. 08 Nov, 2019 6 commits
    • Roque's avatar
      erp5_forge: bug module domain · 40b23070
      Roque authored
      40b23070
    • Roque's avatar
      erp5_crm: new domain in support request list · 93df28d7
      Roque authored
      93df28d7
    • Roque's avatar
      erp5_base: common script to generate domains · b381ef8f
      Roque authored
      b381ef8f
    • Roque's avatar
    • Roque's avatar
      erp5_web_project_ui: initial commit for project.nexedi.net · 86b1843b
      Roque authored
      - new skin folder with project quick view form, scripts and gadgets
      - front page redirects to custom project module
      86b1843b
    • Jérome Perrin's avatar
      patches/pylint: fix regression with namedtuples · 5027502c
      Jérome Perrin authored
      with namedtuples and unicode literals enabled, our patch break with:
      
          Module py2stdlib, line 266, in infer_named_tuple
            ''' % {'name': name, 'fields': attributes})
          Module Products.ERP5Type.patches.pylint, line 74, in string_build
            encoding = _guess_encoding(data)
          Module astroid.builder, line 65, in _guess_encoding
            if string.startswith('\xef\xbb\xbf'):
          UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 0: ordinal not in range(128)
      
      because pylint/astroid uses string_build to evaluate the named tuple and the source code enabled 
      unicode_literals future, string_build is called with an unicode object.
      
          -> for inferred in node.func.infer():
            astroid-1.3.8-py2.7.egg/astroid/bases.py(391)infer()
          -> return self._explicit_inference(self, context, **kwargs)
            astroid-1.3.8-py2.7.egg/astroid/brain/py2stdlib.py(266)infer_named_tuple()
          -> ''' % {'name': name, 'fields': attributes})
          > erp5/product/ERP5Type/patches/pylint.py(77)string_build()
          -> data = data.encode('utf-8')
          (Pdb) up
          > astroid-1.3.8-py2.7.egg/astroid/brain/py2stdlib.py(266)infer_named_tuple()
          -> ''' % {'name': name, 'fields': attributes})
          (Pdb) l
          249     def infer_named_tuple(node, context=None):
          250         """Specific inference function for namedtuple CallFunc node"""
          251         class_node, name, attributes = infer_func_form(node, nodes.Tuple._proxied,
          252                                                        context=context)
          253         fake = AstroidBuilder(MANAGER).string_build('''
          254     class %(name)s(tuple):
          255         _fields = %(fields)r
          256         def _asdict(self):
          257             return self.__dict__
          258         @classmethod
          259         def _make(cls, iterable, new=tuple.__new__, len=len):
          260             return new(cls, iterable)
          261         def _replace(_self, **kwds):
          262             result = _self._make(map(kwds.pop, %(fields)r, _self))
          263             if kwds:
          264                 raise ValueError('Got unexpected field names: %%r' %% list(kwds))
          265             return result
          266  ->     ''' % {'name': name, 'fields': attributes})
          (Pdb) pp name
          u'NamedTuple'
          (Pdb) pp attributes
          [u'foo', u'bar']
          (Pdb) pp [ (arg, arg.value) for arg in node.args ]
          [(<Const(unicode) l.4 [checkPythonSourceCodelXOzr3] at 0x7f9f1caee250>,
            u'NamedTuple'),
           (<Const(unicode) l.4 [checkPythonSourceCodelXOzr3] at 0x7f9f1caeebd0>,
            u'foo bar')]
          
          
      
      /reviewed-on !978
      5027502c