From 2a16967d770cea183fda5434ecffd424d15ac980 Mon Sep 17 00:00:00 2001
From: Kazuhiko Shiozaki <kazuhiko@nexedi.com>
Date: Thu, 30 May 2013 00:04:50 +0200
Subject: [PATCH] fixup e9b75a2762 (optimise
 ERP5Site_getKnowledgePadListForUser).

---
 .../ERP5Site_getKnowledgePadListForUser.xml   | 26 ++++++++-----------
 product/ERP5/tests/testKM.py                  |  4 ---
 2 files changed, 11 insertions(+), 19 deletions(-)

diff --git a/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/ERP5Site_getKnowledgePadListForUser.xml b/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/ERP5Site_getKnowledgePadListForUser.xml
index 16c574b0a1..e901465b54 100644
--- a/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/ERP5Site_getKnowledgePadListForUser.xml
+++ b/bt5/erp5_knowledge_pad/SkinTemplateItem/portal_skins/erp5_knowledge_pad/ERP5Site_getKnowledgePadListForUser.xml
@@ -56,31 +56,27 @@ isAnonymousKnowledgePadUsed = request.get(\'is_anonymous_knowledge_pad_used\', 0
 \n
 def filterKnowledgePadListForContext(results, mode, \n
                                      default_pad_group):\n
-  filtered_results = []\n
-  append = filtered_results.append\n
+  # call getObject() explicitly so that further getter methods do not\n
+  # invoke getObject().\n
+  results = [x.getObject() for x in results]\n
+
   # in Web Mode we can have a temporary object created based on current language, document by reference\n
   real_context = context.Base_getRealContext()\n
   real_context_url = real_context.getRelativeUrl()\n
   if mode == \'erp5_front\':\n
     # leave only those not having a publication_section as \n
     # this means belonging to root\n
-    for x in results:\n
-      x = x.getObject()\n
-      if x.getPublicationSection() is None and x.getGroup() is None:\n
-        append(x)\n
+    results = filter(lambda x: x.getPublicationSection() is None and \\\n
+                              x.getGroup() is None, results)\n
   elif mode == \'web_front\':\n
     # Web Site must at least one Pad referenced by context\n
-    for x in results:\n
-      x = x.getObject()\n
-      if real_context_url in x.getPublicationSectionList() and x.getGroup() is None:\n
-        append(x)\n
+    results = filter(lambda x: real_context_url in x.getPublicationSectionList() and \\\n
+                              x.getGroup() is None, results)\n
   elif mode == \'web_section\':\n
     # Web Sections, Web Pages can "reuse" tabs\n
-    for x in results:\n
-      x = x.getObject()\n
-      if real_context_url in x.getPublicationSectionList() and x.getGroup() == default_pad_group:\n
-        append(x)\n
-  return filtered_results\n
+    results = filter(lambda x: real_context_url in x.getPublicationSectionList() or \\\n
+                                x.getGroup() == default_pad_group, results)\n
+  return results\n
 \n
 \n
 kw = {\'portal_type\': \'Knowledge Pad\',\n
diff --git a/product/ERP5/tests/testKM.py b/product/ERP5/tests/testKM.py
index 4149def4f1..b10e4ee663 100644
--- a/product/ERP5/tests/testKM.py
+++ b/product/ERP5/tests/testKM.py
@@ -222,10 +222,6 @@ class TestKM(TestKMMixIn):
     self.assertEqual(1, len(website_pads))
     self.assertEqual(website, website_pads[0].getPublicationSectionValue())
 
-    # depending on context we should have different list of pads for user
-    self.assertNotEqual(portal.ERP5Site_getKnowledgePadListForUser(),
-                        website.ERP5Site_getKnowledgePadListForUser())
-    
     # check Web Section
     pad_group = 'default_section_pad' #None
     websection = self.websection
-- 
2.30.9