From 92cbee68bc4604918ac2320e1049201e49a88bce Mon Sep 17 00:00:00 2001 From: Julien Muchembled <jm@nexedi.com> Date: Wed, 22 Apr 2015 12:30:01 +0200 Subject: [PATCH] simulation: specialise tester must not sort before comparing decision and prevision The order of specialise categories is important. --- .../ERP5/Document/CategoryMembershipEquivalenceTester.py | 7 +------ product/ERP5/Document/SpecialiseEquivalenceTester.py | 4 ++++ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/product/ERP5/Document/CategoryMembershipEquivalenceTester.py b/product/ERP5/Document/CategoryMembershipEquivalenceTester.py index c6ca18ba70..903b07e11e 100644 --- a/product/ERP5/Document/CategoryMembershipEquivalenceTester.py +++ b/product/ERP5/Document/CategoryMembershipEquivalenceTester.py @@ -59,7 +59,7 @@ class CategoryMembershipEquivalenceTester(Predicate, EquivalenceTesterMixin): # What about using getCategoryMembershipList for Simulation Movements ? return movement.getAcquiredCategoryMembershipList(property) - def _compare(self, prevision_movement, decision_movement): + def _compare(self, prevision_movement, decision_movement, sorted=sorted): """ If prevision_movement and decision_movement don't match, it returns a list : (prevision_value, decision_value, message, mapping) @@ -68,11 +68,6 @@ class CategoryMembershipEquivalenceTester(Predicate, EquivalenceTesterMixin): if getattr(decision_movement, 'isPropertyRecorded', lambda x:False)(tested_property): decision_value = decision_movement.getRecordedProperty(tested_property) - if not isinstance(decision_value, (list, tuple)): - if decision_value is None: - decision_value = [] - else: - decision_value = [decision_value] else: decision_value = self._getTestedPropertyValue(decision_movement, tested_property) diff --git a/product/ERP5/Document/SpecialiseEquivalenceTester.py b/product/ERP5/Document/SpecialiseEquivalenceTester.py index 5f05e0876e..6e2c16fc2c 100644 --- a/product/ERP5/Document/SpecialiseEquivalenceTester.py +++ b/product/ERP5/Document/SpecialiseEquivalenceTester.py @@ -43,6 +43,10 @@ class SpecialiseEquivalenceTester(CategoryMembershipEquivalenceTester): movement_specialise_type = () movement_exclude_specialise_type = () + def _compare(self, prevision_movement, decision_movement, sorted=lambda x:x): + return super(SpecialiseEquivalenceTester, self)._compare( + prevision_movement, decision_movement, sorted) + def _getTestedPropertyValue(self, movement, property): if movement.getPortalType() == 'Simulation Movement': return movement.getCategoryMembershipList(property) -- 2.30.9