An error occurred fetching the project authors.
  1. 23 Jul, 2024 1 commit
    • Jérome Perrin's avatar
      core: handle price 0 or None in Inventory API · 2c525e57
      Jérome Perrin authored
      The methods used in indexing did not make a difference between the case
      where the price is None (ie. price is not set) or where the price is
      set to 0 - in both cases this was saved as NULL in stock.total_price
      column. This is incorrect, we need to keep the distinction between
      these two cases also for inventory calculation.
      We had some places where we select IFNULL(stock.total_price, 0) to work
      around this, we don't plan to change the existing ones for now, but
      while discussing on !1974
      we concluded that a newly idenfified case of a problem consequence of
      these NULL should be handled by fixing the indexation. To benefit from
      the fix, impacted instances will have to reindex documents present in
      the stock table with stock.total_price is null.
      2c525e57
  2. 31 May, 2024 1 commit
    • Jérome Perrin's avatar
      ERP5TypeTestCase: rework default manager password generation · 445e8fa8
      Jérome Perrin authored
      The default manager user (ERP5TypeTestCase) now have a random password
      generated at the beginning of test. The password is stored as a class
      attribute of the test case instance.
      Many tests have been updated to not generate manager user and use the
      existing one instead. When tests need to create users (for example
      users in the root acl_users), we try to give them a random password and
      to delete the users afterward.
      
      For functional tests, the approach is that ERP5TypeFunctionalTestCase
      sets cookies with manager username and password before running zelenium
      tests, so that in case tests want to log in again as manager, they can
      read the username and password from cookies.
      
      Another significant changes is that we no longer have the same user in
      ERP5/acl_users and /acl_users, some tests were logging in as the root
      user in ways that never seemed intentional.
      
      This also revealed (through test_manager_actions_on_portal from
      testERP5Core) that some tests were running with a user without all the
      expected permissions and the "Manager Components" actions was not
      visible for the default manager user. Fixing this also revealed that
      two actions ("Manage Components" and "Manage Callables") had the same
      priority, so the later was modified to use a different priority.
      445e8fa8
  3. 05 Mar, 2024 1 commit
  4. 21 Feb, 2024 1 commit
  5. 17 May, 2023 1 commit
  6. 02 May, 2023 1 commit
    • Jérome Perrin's avatar
      core: expose `is_source` on `MovementHistoryListBrain` · e1ae4c69
      Jérome Perrin authored
      This can be useful when making a report on movements and when we list
      properties of the movements that depend on the side but are not
      directly exposed on MovementHistoryListBrain. One use case was
      `Movement_getSpecificReference`, which shows `source_reference` when
      the brain is for the source and `destination_reference` otherwise.
      
      With this new approach, instead of guessing we record the "is_source"
      information at indexing time, when we know this for sure.
      
      This also simplifies `MovementHistoryListBrain.date` and
      `MovementHistoryListBrain.mirror_date` which no longer need to guess
      the side and fix a problem that because this guessing was done using
      `movement.getSourceUid()` - which cause security errors when users can
      not access the source of the movement.
      e1ae4c69
  7. 03 Mar, 2023 1 commit
  8. 19 Dec, 2022 1 commit
    • Jérome Perrin's avatar
      *: rewrite with lib2to3.fixes.fix_asserts and ad-hoc assertin · 2e366054
      Jérome Perrin authored
      The add-hoc assertin filter:
      
      --
      
      from typing import List
      
      import lib2to3
      
      from lib2to3.fixer_base import BaseFix
      from lib2to3.fixer_util import Comma, Name
      
      class FixAssertIn(BaseFix):
      
        PATTERN = """
            power< any+ trailer< '.' meth=("assertTrue" | "assertFalse")>
            trailer< '('
              comparison< (needle=any ( comp_op<'not' 'in'> | 'in' ) haystack=any) >
            ')' > >
        """
      
        def transform(self, node: lib2to3.pytree.Node,
                      results: List[lib2to3.pytree.Base]):
      
          needle = results['needle']
          haystack = results['haystack']
          meth = results["meth"][0]
      
          method_map = {True: 'assertIn', False: 'assertNotIn'}
          method_in = meth.value == 'assertTrue'
          if 'not' in str(needle.parent.children[1]):
            method_in = not method_in
          meth.replace(Name(method_map[method_in], prefix=meth.prefix))
      
          needle.parent.children = [needle, Comma(), haystack]
      2e366054
  9. 21 Sep, 2022 1 commit
  10. 04 May, 2022 1 commit
    • Arnaud Fontaine's avatar
      py2/py3: Make Products code compatible with both python2 and python3. · a17bb910
      Arnaud Fontaine authored
      Done through various 2to3 fixers (zope.fixers, modernize, future) and manual
      changes. This is a single commit so that we have a clearer picture of how code
      converted with my2to3 should look like.
      
      Except straightforward @implementer decorator 2to3 fixer, only product/ folder
      was considered as the goal was to be able to create an ERP5Site.
      
      * Use @implementer decorator introduced in zope.interface 3.6.0 (2010):
      
        The implements syntax used under Python 2.X does not work under 3.X, since it
        depends on how metaclasses are implemented and this has changed. Instead it
        now supports a decorator syntax (also under Python 2.X).
      
        Applied thanks to 2to3 `zope.fixers` package.
      
      * Use `six.moves` rather than `future` install_aliases() feature because the
        latter use unicode_literals and "wraps" module aliases so that unicode() are
        returned for text rather than str() (Python2 standard library). This notably
        breaks BusinessTemplate code which uses urllib quote() for filesystem paths...
      
      * No more unbound methods in python3 so use six.get_unbound_function().
      
      * dict.(iteritems,iterkeys,itervalues)() => six.\1(dict) thanks to `dict_six`
        2to3 fixer from `modernize`:
        $ python-modernize -w -f dict_six product/
      
      * Manually make sure that dict.{items,values,keys}() returns a real list when it
        is latter modified rather than a dict_{items,values,keys} (ensure_list()). By
        default, 2to3 blindly does list(dict.{items,values,keys}()) which is not
        acceptable from performances point of view. With my2to3, this will be possible
        to handle such case automatically.
      
      * Replace cStringIO.StringIO() by six.moves.cStringIO() (a module alias for
        cStringIO.StringIO() on py2 and io.StringIO() on py3).
      
      * Use six.text_type which maps to unicode() on py2 and str() on py3. This also
        makes a clearer difference between text and binary strings.
      
      * Replace map()/filter() with lambda function by list comprehension (this has
        the benefit to avoid casting to list for py3 as it returns iterators).
      a17bb910
  11. 29 Apr, 2021 1 commit
  12. 16 Sep, 2020 1 commit
  13. 07 May, 2020 1 commit
  14. 30 Sep, 2019 1 commit
  15. 29 Apr, 2019 1 commit
  16. 03 Oct, 2017 1 commit
  17. 11 Sep, 2017 1 commit
  18. 06 Jan, 2017 1 commit
    • Vincent Pelletier's avatar
      CMFCategory: Do not index any Base Category as a related document. · 95e3eaec
      Vincent Pelletier authored
      Without this change, "source/a/b" in non-strict mode indexes:
        (document.uid, source.uid, b.uid, 1)
        (document.uid, source.uid, a.uid, 0)
        (document.uid, source.uid, source.uid, 0)
      This last line does not contain anything which cannot be found by looking
      at the base category uid column, so it is wasting disk (and index) space,
      costing performance.
      But keep indexing a Base Category document if is it not the base category
      for considered relation. It is not clear whether stopping indexation at the
      first encountered Base Category document is intentional, or if recursion
      should only stop when reaching the base category of considered relation.
      With this change, "source/a/b" in non-strict mode indexes:
        (document.uid, source.uid, b.uid, 1)
        (document.uid, source.uid, a.uid, 0)
      removing the redundancy.
      95e3eaec
  19. 23 Dec, 2016 1 commit
  20. 22 Jun, 2016 1 commit
  21. 09 Jun, 2016 1 commit
  22. 08 Jun, 2016 1 commit
  23. 19 Oct, 2015 1 commit
  24. 17 Feb, 2015 1 commit
  25. 02 Feb, 2015 1 commit
  26. 31 Dec, 2014 1 commit
  27. 12 Dec, 2014 1 commit
  28. 06 Nov, 2014 1 commit
  29. 16 Oct, 2014 2 commits
  30. 30 Jan, 2014 1 commit
  31. 13 Sep, 2013 3 commits
  32. 16 Aug, 2013 1 commit
  33. 09 Apr, 2013 1 commit
    • Jérome Perrin's avatar
      Inventory API: remove unecessary joins in the queries · c528eb90
      Jérome Perrin authored
      We were joining catalog for section, node and resource, mainly in order to
      expose _title and _relative_url in brains. We just need to select the
      corresponding uids and let brains do another catalog search to get the object
      when accessed.
      Note that erp5_banking_core is not updated
      c528eb90
  34. 01 Mar, 2013 1 commit
  35. 28 Feb, 2013 1 commit
  36. 26 Feb, 2013 1 commit
    • Aurel's avatar
      Implement cache of getInventory results · cf53db45
      Aurel authored
      Create a sql cache for getInventory call
      Remove full-inventory optimisation as it now useless
      Implement full-inventory feature directly into stock
      Make erp5_pdm depends on this optimisation
      Install optimisation for all unit tests
      cf53db45
  37. 21 Feb, 2013 1 commit