1. 15 Jun, 2017 1 commit
    • Arnaud Fontaine's avatar
      SolverProcess may not be 'solved' when there are several 'solve()' Activities... · 509b2ca4
      Arnaud Fontaine authored
      SolverProcess may not be 'solved' when there are several 'solve()' Activities executed in parallel (#KMS-1126).
      
        1. Two POLs diverge.
           => Solver Process is created ('draft').
        2. User 'Accept Decision' (Accept Solver) on all of them:
           1) Two Accept Solvers are created in the Solver Process, one per divergence.
           2) SolverProcess.solve() is called, on each Accept Solver:
              1/ AcceptSolver.startSolving() ()
                 => Through solver_workflow 'Script (after)': SolverProcess.startSolving()
                    => Solver Process is in 'solving' state.
              2/ AcceptSolver.activate().solve()
                 => One solve() Activity per Accept Solver.
                    => AcceptSolver.succeed()
                       => Through solver_workflow 'Script (after)': SolverProcess.succeed()
      
      The last step, 'SolverProcess.succeed()', will only be executed if and only if
      all the other Accept Solver of the Solver Process are in 'solved' state. However,
      if both Activities are executed in parallel, each Activity does not see the result
      of the other, and thus the other Accept Solver is still in 'solving' state. At
      the end the Solver Process may stay in 'solving' state.
      
      Considering that transitions of solver_process_workflow are *only* done through
      solver_workflow and thus depend on the states of its '* Solver' states, it's better
      to just remove solver_process_workflow to avoid concurrency problems and also because
      it's not really used anyway.
      509b2ca4
  2. 11 May, 2017 1 commit
    • Arnaud Fontaine's avatar
      Prevent 'draft' Solver Process from being created when there is already a 'solving' one (#KH-1107). · 93e5f537
      Arnaud Fontaine authored
        1. 'Solve Divergences' action:
           => Display Delivery_viewSolveDivergenceDialog.listbox:
              -> Delivery_getSolverDecisionList
                 -> Delivery_getSolverProcess => create Solver Process in 'draft' state and build Solver Decisions
        2. Clicking 'Update' button updates Solver Decisions.
        3. Click 'Solve Divergences' button after either 'Adopt Prevision' or 'Accept Decision'.
           => SolverProcess.solve():
              Solver Process transit to 'solving' state and 'solve' Activity is created.
      
      Before this Activity is executed, user can still select 'Solve Divergences'
      action and this will create another 'Solver Process' as the current one is not
      in 'draft' state anymore. Moreover, another user can still 'Adopt Prevision'
      (while the first user selected 'Accept Decision') and this will be actually be
      applied despite the first user choice.
      
      Instead, create Solver Process when transiting to 'diverged' state and do not
      display 'Solve Divergences' button nor allow access to 'Solve Divergences
      Dialog' (Delivery_viewSolveDivergenceDialog) if there is a Solver Process in
      'solving' state.
      93e5f537
  3. 20 Feb, 2017 1 commit
    • Arnaud Fontaine's avatar
      Portal Type as Classes: Fix memory leak: reset erp5.* classes were never GC (#20170126-19C38D8). · 73b747dd
      Arnaud Fontaine authored
      zope.{interface,component} implement Interfaces through __implements__,
      __implemented__ (both implementedBy instances) and __provides__ (ClassProvides
      instance) attributes set on the class itself through implementedByFallback
      (zope.interface.declarations).
      
      However, this implementation creates circular references by referencing the
      class itself and thus erp5.* classes (and all its Accessors instances) were
      never GC even after a reset.
      
      When running testXHTML and installing the Unit Tests bt5s:
        * After 10 resets:  21MB leak (~  7% of Zope process USS).
        * After 20 resets:  70MB leak (~ 18% of Zope process USS).
        * After 28 resets: 122MB leak (~ 26% of Zope process USS).
      73b747dd
  4. 10 Nov, 2016 1 commit
    • Arnaud Fontaine's avatar
      Backport: Base_callDialogMethod: Do not redirect when form has a password field. · a0185283
      Arnaud Fontaine authored
      If it is the case *and* the action script does not redirect, the password will be
      in user's browser history.
      There can be two different reasons to not redirect:
      - not following the API (ie, intentionally not redirecting)
      - letting an exception reach ZPublisher
      Also, if the non-redirection causes an HTML page to be rendered, resources
      loaded by that page will have a referrer containing the password, leaking it
      to potentially foreign servers.
      a0185283
  5. 04 Nov, 2016 1 commit
  6. 19 Oct, 2016 1 commit
    • Arnaud Fontaine's avatar
      Backport 6fd21826 ListBox fix from master branch (#KMS-819). · da78761d
      Arnaud Fontaine authored
      ListBox: Navigation methods should not be created when rendering ListBox (#20161014-741678).
      
      These methods were generated when rendering the ListBox and with the id
      of the ListBox in their name. However, a customer reported the following
      problem on Accounting Periods ListBox:
      
        1. Display Accounting Period ListBox on ZEO-1.
             => The ListBox will be rendered and 'listbox_period_list_*' methods will be generated on ZEO-1.
        2.  Click on 'Next Page' button and the user is redirect to ZEO-2 where the ListBox has never been generated.
             => The method does not exist yet and thus a 404 error is raised.
      
      Instead of having one method per ListBox ID, only one is now created (eg
      listbox_setPage() for SelectionTool.setPage()) at Zope startup and the
      ListBox ID previously defined in the method name is now defined in the
      value attributes of the buttons.
      da78761d
  7. 06 Sep, 2016 1 commit
  8. 21 Jul, 2016 1 commit
  9. 20 Jul, 2016 1 commit
  10. 07 Jul, 2016 1 commit
  11. 28 Mar, 2016 1 commit
  12. 23 Mar, 2016 1 commit
  13. 04 Mar, 2016 1 commit
  14. 02 Mar, 2016 2 commits
  15. 01 Feb, 2016 2 commits
  16. 28 Jan, 2016 1 commit
    • Arnaud Fontaine's avatar
      erp5_core: Fix ListMode view for ListBox with several tabs. · fa3caa00
      Arnaud Fontaine authored
      1. On Tab1, from PurchaseSupply_view, click on 'Purchase Supply Lines':
         Base_viewListMode??proxy_form_id=PurchaseSupply_view&proxy_field_id=listbox
      
         This Python Script initialise 'list_mode_proxy_selection' with the
         above 2 GET parameters and then displays PurchaseSupply_view.listbox
         indirectly but current Form is Base_viewListModeRenderer.
      
      2. On Tab2, from SaleSupply_view, click on 'Sale Supply Lines':
         Base_viewListMode?proxy_form_id=SaleSupply_view&proxy_field_id=listbox
      
         This Python Script initialise 'list_mode_proxy_selection' with the
         above 2 GET parameters and then displays SaleSupply_view.listbox
         indirectly but current Form is Base_viewListModeRenderer.
      
      3. On Tab1, filter Purchase Supply Lines.
      
         As proxy_form_id and proxy_field_id are not given, then
         Base_viewListModeRender fallbacks on 'list_mode_proxy_selection'
         values to find out the Form ID to be called and wrongly display
         SaleSupply_view.listbox (2.).
      fa3caa00
  17. 19 Jan, 2016 1 commit
  18. 15 Dec, 2015 1 commit
  19. 14 Dec, 2015 2 commits
  20. 08 Dec, 2015 1 commit
    • Arnaud Fontaine's avatar
      erp5_simulation: Display Divergence dialog even if there is nothing to solve... · c84f39af
      Arnaud Fontaine authored
      erp5_simulation: Display Divergence dialog even if there is nothing to solve (same as legacy Simulation Dialog).
      
      This fixes the following Site Error when there is no Divergence to solve:
        AttributeError: 'NoneType' object has no attribute 'SolverProcess_getSolverDecisionList'
      
      This may happen if user selects 'Solve Divergence' Action and solve
      Divergences, then immediately goes back and selects again this action
      whereas there is actually no Divergence to solve.
      c84f39af
  21. 07 Dec, 2015 1 commit
  22. 02 Dec, 2015 2 commits
    • Arnaud Fontaine's avatar
      Revert "simulation: allow to use solve divergence dialog when state is calculating" · 71f4f649
      Arnaud Fontaine authored
      This reverts commit 5fac6732:
      
        When the Divergence is solved and user goes back to the main view, the
        button is visible but when user clicks ont it and if Activities have
        been processed in the meantime, this will raise an AttributeError
        because newSolverProcess returns None and there is nothing to display.
      
        This happens even when adding Delivery_isDivergent() as a guard
        because it still returns True if Activities are running in background.
      71f4f649
    • Arnaud Fontaine's avatar
      erp5_pdm: Provide a count_method on Resource Modules by default. · 50e4092c
      Arnaud Fontaine authored
      count_method was removed from Base_viewFieldLibrary/my_view_mode_module_listbox
      used by Resource Module ListBox (76282344) for performance issues when
      countFolder is called with a Module containing > ~50k documents but this
      should not be relevant for Resource Modules.
      50e4092c
  23. 25 Nov, 2015 4 commits
  24. 19 Nov, 2015 4 commits
  25. 18 Nov, 2015 6 commits
    • Arnaud Fontaine's avatar
      simulation: Add getTestedPropertyList() is still widely used so define it for compatibility sake. · 899b05c7
      Arnaud Fontaine authored
      Followup of: "simulation: improve equivalence testers explanations messages".
      899b05c7
    • Arnaud Fontaine's avatar
      simulation: Define getTestedProperty() on mixin rather than subclasses. · 035530d4
      Arnaud Fontaine authored
      This makes more sense as all Tester inherits from EquivalenceTesterMixin,
      even project-specific EquivalenceTester classes.
      
      Followup of: "simulation: improve equivalence testers explanations messages".
      035530d4
    • Arnaud Fontaine's avatar
      Fix conflicts between 2a188797 and df04eb69. · b0ff7ee6
      Arnaud Fontaine authored
      * 2a188797: "simulation: improve equivalence testers explanations messages"
      * df04eb69: "Implement delivery.getQuantity() == 0."
      b0ff7ee6
    • Sebastien Robin's avatar
      simulation: improve equivalence testers explanations messages (part 2) · 50b6baf3
      Sebastien Robin authored
      Default values for tested_property and tested_property_title must not
      be of type tuple any more since theses properties are no longer multi
      valued
      50b6baf3
    • Sebastien Robin's avatar
      simulation: improve equivalence testers explanations messages · 2a188797
      Sebastien Robin authored
      With latest simulation, the explanation given to user when solving a
      divergence was not good enough :
      - Property ids were displayed without possibility to display
        business word (like displaying 'stop_date' instead of
        'Delivery Date'
      - Some message was displayed in the solve divergence dialog whatever
        was the equivalence tester behind. Therefore, customizations of
        messages made a equivalence tester level were not displayed to user
      
      Therefore, following was done:
      - in solve divergence dialog, include the message generated by the
        equivalence tester
      - use tested_property_title to allow using business words to describe
        properties having divergence
      - most equivalence testers are written in a way to evaluate divergence
        on a single property. To have better UI configuration of such equivalence
        testers, change tested_property and tested_property_title properties
        type from "lines" to "string". This required to add some backward
        compatible code.
      - use Variation Divergence Tester to show a case of an equivalence
        tester using different properties. For this, add a property sheet
        dedicated to multi properties equivalence testers
      - update propertysheets to allow translating tested_property_title
      
      Conflicts:
      	product/ERP5/Document/DateTimeEquivalenceTester.py
      2a188797
    • Arnaud Fontaine's avatar
      08d6d578