From f27211062a9e85c689eaa79e91862789d58b2670 Mon Sep 17 00:00:00 2001
From: Yoshinori Okuji <yo@nexedi.com>
Date: Thu, 20 Oct 2005 15:12:17 +0000
Subject: [PATCH] Cleanup and bugfix on setCategoryMembership. Now
 portal_type-based coloring is working.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@4087 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/CMFCategory/CategoryTool.py | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/product/CMFCategory/CategoryTool.py b/product/CMFCategory/CategoryTool.py
index b8272ca13d..cf05c66d17 100755
--- a/product/CMFCategory/CategoryTool.py
+++ b/product/CMFCategory/CategoryTool.py
@@ -573,7 +573,10 @@ class CategoryTool( UniqueObject, Folder, Base ):
       # XXX We must use filters in the future
       # where_expression = self._buildQuery(spec, filter, kw)
       portal_type = kw.get('portal_type', ())
-      if spec is (): spec = portal_type
+      if type(portal_type) == type(''):
+        portal_type = (portal_type,)
+      if spec is (): 
+        spec = portal_type
       #LOG("set Category",0,str(category_list))
 
       default_dict = {}
@@ -590,7 +593,7 @@ class CategoryTool( UniqueObject, Folder, Base ):
         if not my_base_id in base_category_list:
           # Keep each membership which is not in the
           # specified list of base_category ids
-          new_category_list += [path]
+          new_category_list.append(path)
         else:
           if spec is ():
             # If spec is (), then we should keep nothing
@@ -600,14 +603,11 @@ class CategoryTool( UniqueObject, Folder, Base ):
             # Only keep this if not in our spec
             try:
               my_type = self.unrestrictedTraverse(path).portal_type
-              keep_it = 1
-              for spec_type in spec:
-                if spec_type == my_type:
-                  keep_it = 0
+              keep_it = (my_type not in spec)
             except (KeyError, AttributeError):
               keep_it = 0
           if keep_it:
-            new_category_list += [path]
+            new_category_list.append(path)
           elif keep_default:
             # We must remember the default value
             # for each replaced category
@@ -618,25 +618,25 @@ class CategoryTool( UniqueObject, Folder, Base ):
       for path in default_dict.values():
         if base or len(base_category_list) > 1:
           if path in category_list:
-            default_new_category_list += [path]
+            default_new_category_list.append(path)
         else:
           if path[len(base_category_list[0])+1:] in category_list:
-            default_new_category_list += [path]
+            default_new_category_list.append(path)
       # Before we append new category values (except default values)
       # We must make sure however that multiple links are possible
       default_path_found = {}
       for path in category_list:
-        if path is not '':
+        if path != '':
           if base or len(base_category_list) > 1:
             # Only keep path which are member of base_category_list
             if self.getBaseCategoryId(path) in base_category_list:
               if path not in default_new_category_list or default_path_found.has_key(path):
                 default_path_found[path] = 1
-                new_category_list += [path]
+                new_category_list.append(path)
           else:
-            new_path = base_category_list[0] + '/' + path
+            new_path = '/'.join((base_category_list[0], path))
             if new_path not in default_new_category_list:
-              new_category_list += [new_path]
+              new_category_list.append(new_path)
       #LOG("set Category",0,str(new_category_list))
       #LOG("set Category",0,str(default_new_category_list))
       self._setCategoryList(context, tuple(default_new_category_list + new_category_list))
-- 
2.30.9