From c18fd4911643717412a5e2105448d558a9a4c34a Mon Sep 17 00:00:00 2001
From: Kazuhiko Shiozaki <kazuhiko@nexedi.com>
Date: Tue, 24 Jun 2014 21:40:59 +0200
Subject: [PATCH] cast the recorded value to list in
 CategoryMembershipEquivalenceTester.

This reapplies commit 648d702006e6216eb275e81fe49f1d60ea5abb51
---
 .../ERP5/Document/CategoryMembershipEquivalenceTester.py  | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/product/ERP5/Document/CategoryMembershipEquivalenceTester.py b/product/ERP5/Document/CategoryMembershipEquivalenceTester.py
index 903b07e11e..cf071f74f4 100644
--- a/product/ERP5/Document/CategoryMembershipEquivalenceTester.py
+++ b/product/ERP5/Document/CategoryMembershipEquivalenceTester.py
@@ -68,6 +68,14 @@ class CategoryMembershipEquivalenceTester(Predicate, EquivalenceTesterMixin):
     if getattr(decision_movement, 'isPropertyRecorded',
                lambda x:False)(tested_property):
       decision_value = decision_movement.getRecordedProperty(tested_property)
+      # The following may be only for compatibility. Although current code does
+      # not seem to produce non-list values here, we really have existing data
+      # with such values, e.g. aggregate=None.
+      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)
-- 
2.30.9