From 03c92f9696a1689cb0db70a991f84182bcf09f27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com> Date: Mon, 20 May 2013 11:19:04 +0200 Subject: [PATCH] fix c7cb566542591af6175e5653846c29d1db45ed48 A set setter keeps the default value, so in a sense the order is preserved. --- product/ERP5Type/Accessor/Category.py | 9 ++++++++- product/ERP5Type/tests/testERP5Type.py | 8 +++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/product/ERP5Type/Accessor/Category.py b/product/ERP5Type/Accessor/Category.py index 2bc0d5f711..b1994df3dc 100644 --- a/product/ERP5Type/Accessor/Category.py +++ b/product/ERP5Type/Accessor/Category.py @@ -100,7 +100,14 @@ class SetSetter(ListSetter): """ if type(value) not in (set, frozenset): value = frozenset(value) - return ListSetter.__call__(self, instance, value, *args, **kw) + instance._setCategoryMembership(self._key, value, + spec=kw.get('spec',()), + filter=kw.get('filter', None), + portal_type=kw.get('portal_type',()), + base=kw.get('base', 0), + keep_default=1, + checked_permission=kw.get('checked_permission', None)) + return (instance, ) class DefaultGetter(BaseGetter): diff --git a/product/ERP5Type/tests/testERP5Type.py b/product/ERP5Type/tests/testERP5Type.py index 7d261c9ae1..7c180951a5 100644 --- a/product/ERP5Type/tests/testERP5Type.py +++ b/product/ERP5Type/tests/testERP5Type.py @@ -700,8 +700,14 @@ class TestERP5Type(PropertySheetTestCase, LogInterceptor): self.assertEquals(person.getRegionList(), ['alpha', 'beta']) person.setRegionList(['beta', 'alpha', 'alpha']) self.assertEquals(person.getRegionList(), ['beta', 'alpha', 'alpha']) + # at this point the person have a default region set to the first item in + # the list. + self.assertEquals(person.getDefaultRegion(), 'beta') person.setRegionSet(['alpha', 'beta', 'alpha']) - self.assertEquals(sorted(person.getRegionList()), ['alpha', 'beta']) + self.assertEquals(person.getRegionList(), ['beta', 'alpha']) + # calling a set setter did not change the default region + self.assertEquals(person.getDefaultRegion(), 'beta') + person.setDefaultRegion('alpha') self.assertEquals(person.getDefaultRegion(), 'alpha') self.assertEquals(sorted(person.getRegionSet()), ['alpha', 'beta']) -- 2.30.9