[Erp5-report] r28809 - in /erp5/trunk/bt5/erp5_commerce: SkinTemplateItem/portal_skins/erp5...
nobody at svn.erp5.org
nobody at svn.erp5.org
Fri Sep 4 01:49:30 CEST 2009
Author: lucas
Date: Fri Sep 4 01:49:28 2009
New Revision: 28809
URL: http://svn.erp5.org?rev=28809&view=rev
Log:
- increased the performance once this is a front page script
Modified:
erp5/trunk/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/WebSite_getProductList.xml
erp5/trunk/bt5/erp5_commerce/bt/revision
Modified: erp5/trunk/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/WebSite_getProductList.xml
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/WebSite_getProductList.xml?rev=28809&r1=28808&r2=28809&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/WebSite_getProductList.xml [utf8] (original)
+++ erp5/trunk/bt5/erp5_commerce/SkinTemplateItem/portal_skins/erp5_commerce_widget_library/WebSite_getProductList.xml [utf8] Fri Sep 4 01:49:28 2009
@@ -58,26 +58,28 @@
#TODO : USE CACHE\n
# The goal of this script is to get all the products from all the visible Web Sections\n
# and it must select randomly which product must be displayed for a given context.\n
-from random import randrange\n
+from random import choice\n
\n
web_site = context.getWebSiteValue() or context.REQUEST.get(\'current_web_site\')\n
-product_list = []\n
kw[\'portal_type\'] = \'Product\'\n
-kw[\'limit\'] = limit\n
\n
# Getting all the products from all the visible Web Section.\n
+product_dict = {}\n
for web_section in web_site.WebSite_getMainSectionList():\n
- product_list.extend([x.uid for x in web_section.getDocumentValueList(all_versions=1, all_languages=1, **kw) if x.uid not in product_list])\n
+ for product in web_section.getDocumentValueList(all_versions=1, all_languages=1, **kw):\n
+ product_dict[product.uid] = product\n
\n
-if len(product_list) > limit:\n
- random_index_list = []\n
- while len(random_index_list) < limit:\n
- random_number = randrange(0, len(product_list))\n
- if random_number not in random_index_list:\n
- random_index_list.append(random_number)\n
- product_list = [product_list[x] for x in random_index_list]\n
+if len(product_dict) > limit:\n
+ random_uid_list = []\n
+ key_list = product_dict.keys()\n
+ while len(random_uid_list) < limit:\n
+ random_uid = choice(key_list)\n
+ key_list.remove(random_uid)\n
+ random_uid_list.append(random_uid)\n
+ product_list = [product_dict.get(uid) for uid in random_uid_list]\n
+else:\n
+ product_list = product_dict.values()\n
\n
-product_list = context.portal_catalog(portal_type=\'Product\', uid=product_list)\n
return product_list\n
@@ -137,22 +139,24 @@
<string>limit</string>
<string>kw</string>
<string>random</string>
- <string>randrange</string>
+ <string>choice</string>
<string>_getattr_</string>
<string>context</string>
<string>web_site</string>
- <string>product_list</string>
<string>_write_</string>
+ <string>product_dict</string>
<string>_getiter_</string>
<string>web_section</string>
+ <string>_apply_</string>
+ <string>product</string>
+ <string>len</string>
+ <string>random_uid_list</string>
+ <string>key_list</string>
+ <string>random_uid</string>
<string>append</string>
<string>$append0</string>
- <string>_apply_</string>
- <string>x</string>
- <string>len</string>
- <string>random_index_list</string>
- <string>random_number</string>
- <string>_getitem_</string>
+ <string>uid</string>
+ <string>product_list</string>
</tuple>
</value>
</item>
Modified: erp5/trunk/bt5/erp5_commerce/bt/revision
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_commerce/bt/revision?rev=28809&r1=28808&r2=28809&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_commerce/bt/revision [utf8] (original)
+++ erp5/trunk/bt5/erp5_commerce/bt/revision [utf8] Fri Sep 4 01:49:28 2009
@@ -1,1 +1,1 @@
-198
+200
More information about the Erp5-report
mailing list