[Erp5-report] r21519 - in /erp5/trunk/bt5/erp5_web: SkinTemplateItem/portal_skins/erp5_web/...

nobody at svn.erp5.org nobody at svn.erp5.org
Thu Jun 12 05:02:18 CEST 2008


Author: yo
Date: Thu Jun 12 05:02:17 2008
New Revision: 21519

URL: http://svn.erp5.org?rev=21519&view=rev
Log:
2008-06-12 yo
* Refactor WebSection_getDocumentValueList, so that it can be mostly shared with km. Now this script relies on a custom Z SQL Method to generate a good query.

Added:
    erp5/trunk/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_getDocumentValueListBase.xml
    erp5/trunk/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_zGetDocumentValueList.xml
Modified:
    erp5/trunk/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_getDocumentValueList.xml
    erp5/trunk/bt5/erp5_web/bt/change_log
    erp5/trunk/bt5/erp5_web/bt/revision

Modified: erp5/trunk/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_getDocumentValueList.xml
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_getDocumentValueList.xml?rev=21519&r1=21518&r2=21519&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_getDocumentValueList.xml (original)
+++ erp5/trunk/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_getDocumentValueList.xml Thu Jun 12 05:02:17 2008
@@ -65,86 +65,9 @@
         </item>
         <item>
             <key> <string>_body</string> </key>
-            <value> <string>"""\n
- This script is part of ERP5 Web\n
-\n
- ERP5 Web is a business template of ERP5 which provides a way\n
- to create web sites which can display selected\n
- ERP5 contents through multiple custom web layouts.\n
-\n
- This script returns a list of document values (ie. objects or brains)\n
- which are considered as part of this section. It can be\n
- a list of web pages (usual case), a list of products\n
- (online catalog), a list of tenders (e-government), etc.\n
-\n
- The default implementation provided here consists in\n
- listing documents which meet the predicate defined\n
- by the section (ex. which are part of a given publication_section)\n
- and which are in "published" state and of a "Web Page" portal_type.\n
-\n
- It should be noted that document selection should be implemented\n
- as much as possible using the Domain API.\n
-\n
- This script can be changed to meet other requirements. For example\n
- one may want to display a list of products in a section. In this case,\n
- this script must return a list of documents of type "Product"\n
- with a "validated" state and in the appropriate product family.\n
-\n
- This script is intended to be overriden by creating a new script\n
- within the Web Section or Web Site instance. It can be also\n
- customised per portal type within portal_skins. Customisation\n
- thourgh local scripts is recommended to host multiple sites\n
- on the same ERP5Site instance.\n
-\n
- The API uses **kw so that it is possible to extend the behaviour of\n
- the default script with advanced features (ex. group by reference,\n
- by version, only select a specific publication state, etc.).\n
-\n
- Here are some suggestions which can either be implemented using\n
- SQL (group_by, order_by) or using additional python scripting\n
- if this is compatible with data size.\n
-\n
- SUGGESTIONS:\n
-\n
- - Prevent showing duplicate references\n
- \n
- - Add documents associated to this section through \'aggregate\'.\n
-\n
- - Display only the latest version and the appropriate language.\n
-"""\n
-from zExceptions import Unauthorized\n
-\n
-try:\n
-  portal = container.getPortalObject()\n
-  portal_catalog = portal.portal_catalog\n
-\n
-  # First find the Web Section or Web Site we belong to\n
-  current_section = context.getWebSectionValue()\n
-\n
-  # Build the list of parameters\n
-  if not kw.has_key(\'portal_type\'):\n
-    kw[\'portal_type\'] = portal.getPortalDocumentTypeList()\n
-\n
-  if language is None:\n
-    language = portal.Localizer.get_selected_language()\n
-\n
-  if validation_state is None:\n
-    validation_state = (\'released\', \'released_alive\', \'published\', \'published_alive\',\n
-                        \'shared\', \'shared_alive\', \'public\', \'validated\')\n
-  if sort_on is None:\n
-    sort_on = [(\'int_index\', \'descending\')]\n
-\n
-  if group_by is None:\n
-    group_by = (\'reference\',)\n
-\n
-  # Return the list of matching documents for the given states\n
-  return current_section.searchResults(language=language,\n
-                                       validation_state=validation_state,\n
-                                       sort_on=sort_on,\n
-                                       group_by=group_by,\n
-                                       **kw)\n
-except Unauthorized:\n
-  return []\n
+            <value> <string># In normal web sites, pages only in a selected language should be displayed.\n
+kw[\'all_languages\'] = False\n
+return context.WebSection_getDocumentValueListBase(**kw)\n
 </string> </value>
         </item>
         <item>
@@ -167,7 +90,7 @@
         </item>
         <item>
             <key> <string>_params</string> </key>
-            <value> <string>language=None, validation_state=None, sort_on=None, group_by=None, **kw</string> </value>
+            <value> <string>**kw</string> </value>
         </item>
         <item>
             <key> <string>errors</string> </key>
@@ -187,28 +110,18 @@
                   <dictionary>
                     <item>
                         <key> <string>co_argcount</string> </key>
-                        <value> <int>4</int> </value>
+                        <value> <int>0</int> </value>
                     </item>
                     <item>
                         <key> <string>co_varnames</string> </key>
                         <value>
                           <tuple>
-                            <string>language</string>
-                            <string>validation_state</string>
-                            <string>sort_on</string>
-                            <string>group_by</string>
                             <string>kw</string>
-                            <string>zExceptions</string>
-                            <string>Unauthorized</string>
+                            <string>False</string>
+                            <string>_write_</string>
+                            <string>_apply_</string>
                             <string>_getattr_</string>
-                            <string>container</string>
-                            <string>portal</string>
-                            <string>portal_catalog</string>
-                            <string>context</string>
-                            <string>current_section</string>
-                            <string>_write_</string>
-                            <string>None</string>
-                            <string>_apply_</string>
+<string>context</string>
                           </tuple>
                         </value>
                     </item>
@@ -220,12 +133,7 @@
         <item>
             <key> <string>func_defaults</string> </key>
             <value>
-              <tuple>
-                <none/>
-                <none/>
-                <none/>
-                <none/>
-              </tuple>
+              <none/>
             </value>
         </item>
         <item>

Added: erp5/trunk/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_getDocumentValueListBase.xml
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_getDocumentValueListBase.xml?rev=21519&view=auto
==============================================================================
--- erp5/trunk/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_getDocumentValueListBase.xml (added)
+++ erp5/trunk/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_getDocumentValueListBase.xml Thu Jun 12 05:02:17 2008
@@ -1,0 +1,232 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Python_magic</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>__ac_local_roles__</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_body</string> </key>
+            <value> <string>"""\n
+ This script is part of ERP5 Web\n
+\n
+ ERP5 Web is a business template of ERP5 which provides a way\n
+ to create web sites which can display selected\n
+ ERP5 contents through multiple custom web layouts.\n
+\n
+ This script returns a list of document values (ie. objects or brains)\n
+ which are considered as part of this section. It can be\n
+ a list of web pages (usual case), a list of products\n
+ (online catalog), a list of tenders (e-government), etc.\n
+\n
+ The default implementation provided here consists in\n
+ listing documents which meet the predicate defined\n
+ by the section (ex. which are part of a given publication_section)\n
+ and which are in "published" state and of a "Web Page" portal_type.\n
+\n
+ It should be noted that document selection should be implemented\n
+ as much as possible using the Domain API.\n
+\n
+ This script can be changed to meet other requirements. For example\n
+ one may want to display a list of products in a section. In this case,\n
+ this script must return a list of documents of type "Product"\n
+ with a "validated" state and in the appropriate product family.\n
+\n
+ This script is intended to be overriden by creating a new script\n
+ within the Web Section or Web Site instance. It can be also\n
+ customised per portal type within portal_skins. Customisation\n
+ thourgh local scripts is recommended to host multiple sites\n
+ on the same ERP5Site instance.\n
+\n
+ The API uses **kw so that it is possible to extend the behaviour of\n
+ the default script with advanced features (ex. group by reference,\n
+ by version, only select a specific publication state, etc.).\n
+\n
+ Here are some suggestions which can either be implemented using\n
+ SQL (group_by, order_by) or using additional python scripting\n
+ if this is compatible with data size.\n
+\n
+ SUGGESTIONS:\n
+\n
+ - Prevent showing duplicate references\n
+ \n
+ - Add documents associated to this section through \'aggregate\'.\n
+\n
+ - Display only the latest version and the appropriate language.\n
+"""\n
+from zExceptions import Unauthorized\n
+\n
+try:\n
+  portal = container.getPortalObject()\n
+\n
+  # First find the Web Section or Web Site we belong to\n
+  current_section = context.getWebSectionValue()\n
+\n
+  # Build the list of parameters\n
+  if language is None:\n
+    language = portal.Localizer.get_selected_language()\n
+\n
+  if validation_state is None:\n
+    validation_state = (\'released\', \'released_alive\', \'published\', \'published_alive\',\n
+                        \'shared\', \'shared_alive\', \'public\', \'validated\')\n
+\n
+  query = current_section.buildSQLQuery(validation_state=validation_state, **kw)\n
+  return current_section.WebSection_zGetDocumentValueList(language=language,\n
+                                                          all_languages=all_languages,\n
+                                                          from_table_list=query[\'from_table_list\'],\n
+                                                          where_expression=query[\'where_expression\'])\n
+except Unauthorized:\n
+  return []\n
+</string> </value>
+        </item>
+        <item>
+            <key> <string>_code</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_filepath</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_owner</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string>language=None, validation_state=None, all_languages=False, **kw</string> </value>
+        </item>
+        <item>
+            <key> <string>errors</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_code</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>co_argcount</string> </key>
+                        <value> <int>3</int> </value>
+                    </item>
+                    <item>
+                        <key> <string>co_varnames</string> </key>
+                        <value>
+                          <tuple>
+                            <string>language</string>
+                            <string>validation_state</string>
+                            <string>all_languages</string>
+                            <string>kw</string>
+                            <string>zExceptions</string>
+                            <string>Unauthorized</string>
+                            <string>_getattr_</string>
+                            <string>container</string>
+                            <string>portal</string>
+                            <string>context</string>
+                            <string>current_section</string>
+                            <string>None</string>
+                            <string>_apply_</string>
+                            <string>query</string>
+                            <string>_getitem_</string>
+                          </tuple>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_defaults</string> </key>
+            <value>
+              <tuple>
+                <none/>
+                <none/>
+                <int>0</int>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>WebSection_getDocumentValueListBase</string> </value>
+        </item>
+        <item>
+            <key> <string>warnings</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>

Added: erp5/trunk/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_zGetDocumentValueList.xml
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_zGetDocumentValueList.xml?rev=21519&view=auto
==============================================================================
--- erp5/trunk/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_zGetDocumentValueList.xml (added)
+++ erp5/trunk/bt5/erp5_web/SkinTemplateItem/portal_skins/erp5_web/WebSection_zGetDocumentValueList.xml Thu Jun 12 05:02:17 2008
@@ -1,0 +1,251 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="SQL" module="Products.ZSQLMethods.SQL"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>__ac_local_roles__</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_arg</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="Args" module="Shared.DC.ZRDB.Aqueduct"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_data</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>all_languages</string> </key>
+                                <value>
+                                  <dictionary/>
+                                </value>
+                            </item>
+                            <item>
+                                <key> <string>from_table_list</string> </key>
+                                <value>
+                                  <dictionary>
+                                    <item>
+                                        <key> <string>type</string> </key>
+                                        <value> <string>list</string> </value>
+                                    </item>
+                                  </dictionary>
+                                </value>
+                            </item>
+                            <item>
+                                <key> <string>language</string> </key>
+                                <value>
+                                  <dictionary/>
+                                </value>
+                            </item>
+                            <item>
+                                <key> <string>where_expression</string> </key>
+                                <value>
+                                  <dictionary/>
+                                </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                    <item>
+                        <key> <string>_keys</string> </key>
+                        <value>
+                          <list>
+<string>language</string>
+<string>all_languages</string>
+<string>from_table_list</string>
+<string>where_expression</string>
+                          </list>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_owner</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>allow_simple_one_argument_traversal</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>arguments_src</string> </key>
+            <value> <string>language\r\n
+all_languages\r\n
+from_table_list:list\r\n
+where_expression</string> </value>
+        </item>
+        <item>
+            <key> <string>cache_time_</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>class_file_</string> </key>
+            <value> <string>ZSQLCatalog.zsqlbrain</string> </value>
+        </item>
+        <item>
+            <key> <string>class_name_</string> </key>
+            <value> <string>ZSQLBrain</string> </value>
+        </item>
+        <item>
+            <key> <string>connection_hook</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>connection_id</string> </key>
+            <value> <string>erp5_sql_connection</string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>WebSection_zGetDocumentValueList</string> </value>
+        </item>
+        <item>
+            <key> <string>max_cache_</string> </key>
+            <value> <int>100</int> </value>
+        </item>
+        <item>
+            <key> <string>max_rows_</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>src</string> </key>
+            <value> <string encoding="cdata"><![CDATA[
+
+SELECT\n
+  t.path AS path, t.uid AS uid, t.version AS version\n
+FROM\n
+  (\n
+    SELECT\n
+      catalog.uid, catalog.path, catalog.int_index,\n
+      catalog.reference, my_versioning.language, my_versioning.version\n
+    FROM\n
+      <dtml-in from_table_list><dtml-var sequence-item> AS <dtml-var sequence-key>,</dtml-in>\n
+      versioning AS my_versioning\n
+    WHERE\n
+      my_versioning.uid = catalog.uid\n
+      AND <dtml-var where_expression>\n
+<dtml-if all_languages>\n
+    GROUP BY\n
+      catalog.reference\n
+    HAVING\n
+      MAX(CASE my_versioning.language WHEN <dtml-sqlvar language type="string"> THEN 3 WHEN \'en\' THEN 2 ELSE 1 END)\n
+        = CASE my_versioning.language WHEN <dtml-sqlvar language type="string"> THEN 3 WHEN \'en\' THEN 2 ELSE 1 END\n
+<dtml-else>\n
+      AND my_versioning.language = <dtml-sqlvar language type="string">\n
+</dtml-if>\n
+  ) AS t\n
+GROUP BY\n
+  t.reference\n
+HAVING\n
+  MAX(t.version) = t.version\n
+ORDER BY\n
+  t.int_index, t.reference\n
+LIMIT 1000\n
+
+
+]]></string> </value>
+        </item>
+        <item>
+            <key> <string>template</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="__newobj__" module="copy_reg"/>
+                </klass>
+                <tuple>
+                  <global name="SQL" module="Shared.DC.ZRDB.DA"/>
+                </tuple>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>__name__</string> </key>
+                        <value> <string encoding="cdata"><![CDATA[
+
+<string>
+
+]]></string> </value>
+                    </item>
+                    <item>
+                        <key> <string>_vars</string> </key>
+                        <value>
+                          <dictionary/>
+                        </value>
+                    </item>
+                    <item>
+                        <key> <string>globals</string> </key>
+                        <value>
+                          <dictionary/>
+                        </value>
+                    </item>
+                    <item>
+                        <key> <string>raw</string> </key>
+                        <value> <string encoding="cdata"><![CDATA[
+
+SELECT\n
+  t.path AS path, t.uid AS uid, t.version AS version\n
+FROM\n
+  (\n
+    SELECT\n
+      catalog.uid, catalog.path, catalog.int_index,\n
+      catalog.reference, my_versioning.language, my_versioning.version\n
+    FROM\n
+      <dtml-in from_table_list><dtml-var sequence-item> AS <dtml-var sequence-key>,</dtml-in>\n
+      versioning AS my_versioning\n
+    WHERE\n
+      my_versioning.uid = catalog.uid\n
+      AND <dtml-var where_expression>\n
+<dtml-if all_languages>\n
+    GROUP BY\n
+      catalog.reference\n
+    HAVING\n
+      MAX(CASE my_versioning.language WHEN <dtml-sqlvar language type="string"> THEN 3 WHEN \'en\' THEN 2 ELSE 1 END)\n
+        = CASE my_versioning.language WHEN <dtml-sqlvar language type="string"> THEN 3 WHEN \'en\' THEN 2 ELSE 1 END\n
+<dtml-else>\n
+      AND my_versioning.language = <dtml-sqlvar language type="string">\n
+</dtml-if>\n
+  ) AS t\n
+GROUP BY\n
+  t.reference\n
+HAVING\n
+  MAX(t.version) = t.version\n
+ORDER BY\n
+  t.int_index, t.reference\n
+LIMIT 1000\n
+
+
+]]></string> </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>

Modified: erp5/trunk/bt5/erp5_web/bt/change_log
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_web/bt/change_log?rev=21519&r1=21518&r2=21519&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_web/bt/change_log (original)
+++ erp5/trunk/bt5/erp5_web/bt/change_log Thu Jun 12 05:02:17 2008
@@ -1,3 +1,6 @@
+2008-06-12 yo
+* Refactor WebSection_getDocumentValueList, so that it can be mostly shared with km. Now this script relies on a custom Z SQL Method to generate a good query.
+
 2008-06-11 yo
 * Make WebSection_getPermanentURL consistent.
 

Modified: erp5/trunk/bt5/erp5_web/bt/revision
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_web/bt/revision?rev=21519&r1=21518&r2=21519&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_web/bt/revision (original)
+++ erp5/trunk/bt5/erp5_web/bt/revision Thu Jun 12 05:02:17 2008
@@ -1,1 +1,1 @@
-643
+644




More information about the Erp5-report mailing list