[Erp5-report] r14944 - in /erp5/trunk/bt5/erp5_dms_mysql_innodb_catalog: CatalogMethodTempl...

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Jun 25 11:22:38 CEST 2007


Author: ivan
Date: Mon Jun 25 11:22:38 2007
New Revision: 14944

URL: http://svn.erp5.org?rev=14944&view=rev
Log:
Refactor query generation script. Do not use getSecurityManager().

Modified:
    erp5/trunk/bt5/erp5_dms_mysql_innodb_catalog/CatalogMethodTemplateItem/portal_catalog/erp5_mysql_innodb/SQLCatalog_makeAdvancedSearchQuery.xml
    erp5/trunk/bt5/erp5_dms_mysql_innodb_catalog/bt/revision

Modified: erp5/trunk/bt5/erp5_dms_mysql_innodb_catalog/CatalogMethodTemplateItem/portal_catalog/erp5_mysql_innodb/SQLCatalog_makeAdvancedSearchQuery.xml
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_dms_mysql_innodb_catalog/CatalogMethodTemplateItem/portal_catalog/erp5_mysql_innodb/SQLCatalog_makeAdvancedSearchQuery.xml?rev=14944&r1=14943&r2=14944&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_dms_mysql_innodb_catalog/CatalogMethodTemplateItem/portal_catalog/erp5_mysql_innodb/SQLCatalog_makeAdvancedSearchQuery.xml (original)
+++ erp5/trunk/bt5/erp5_dms_mysql_innodb_catalog/CatalogMethodTemplateItem/portal_catalog/erp5_mysql_innodb/SQLCatalog_makeAdvancedSearchQuery.xml Mon Jun 25 11:22:38 2007
@@ -71,28 +71,30 @@
             <value> <string encoding="cdata"><![CDATA[
 
 """\n
-This scripts parses a long string and does the following:\n
-- processes arguments for searching by any category\n
-- selects search mode\n
-- adds creation and modification date clauses\n
-- searches\n
-- if requested, filters result so that only the user\'s docs are returned\n
-- if requested, filters result to return only the newest versions\n
+  This scripts parses a long string and does the following:\n
+    - processes arguments for searching by any category\n
+    - selects search mode\n
+    - adds creation and modification date clauses\n
+    - searches\n
+    - if requested, filters result so that only the user\'s docs are returned\n
+    - if requested, filters result to return only the newest versions\n
+\n
+  At the end the script generates one big complex query to retrieve objects.\n
 """\n
-from Products.ZSQLCatalog.SQLCatalog import Query\n
-from Products.ZSQLCatalog.SQLCatalog import ComplexQuery\n
-\n
-if not sstr: return None\n
-\n
-args = context.parseSearchString(sstr)\n
-query_list = []\n
+\n
+from Products.ZSQLCatalog.SQLCatalog import Query, ComplexQuery\n
+\n
+if not search_string: \n
+  return None\n
+\n
+# extract search arguments\n
+args = context.parseSearchString(search_string)\n
 \n
 # process searching by category\n
-cats = []\n
 bases = context.portal_categories.getBaseCategoryList()\n
 for k,v in args.items():\n
   if k in bases:\n
-    args[k + \'_relative_url\'] = k + \'/\' + v\n
+    args[\'%s_relative_url\' %k] = \'%s/%s\' %(k, v)\n
 \n
 # expand simplified notation of search mode\n
 mode = args.get(\'mode\')\n
@@ -100,7 +102,8 @@
             \'boolean\' : \'in_boolean_mode\',\n
             \'expanded\': \'with_query_expansion\'}\n
 if mode and modemap.has_key(mode):\n
-  args[\'SearchableText\'] = dict(query=args[\'SearchableText\'], search_mode=modemap[mode])\n
+  args[\'SearchableText\'] = dict(query = args[\'SearchableText\'], \n
+                                search_mode = modemap[mode])\n
 \n
 # a hack because SQLCatalog wants table.key now \n
 # dunno if it is a bug or a feature\n
@@ -108,31 +111,30 @@
   args[\'full_text.SearchableText\'] = args[\'SearchableText\']\n
   args.pop(\'SearchableText\')\n
 \n
-cf = kw.get(\'creation_from\')\n
-ct = kw.get(\'creation_to\')\n
-mf = kw.get(\'modification_from\')\n
-mt = kw.get(\'modification_to\')\n
+creation_from = kw.get(\'creation_from\')\n
+creation_to = kw.get(\'creation_to\')\n
+modification_from = kw.get(\'modification_from\')\n
+modification_to = kw.get(\'modification_to\')\n
 \n
 wheres = []\n
-if cf:\n
-  wheres.append(\'creation_date >"\' + cf.strftime(\'%Y-%m-%d\') + \'"\')\n
-if ct:\n
-  wheres.append(\'creation_date <"\' + cf.strftime(\'%Y-%m-%d\') + \'"\')\n
-if mf:\n
-  wheres.append(\'modification_date >"\' + cf.strftime(\'%Y-%m-%d\') + \'"\')\n
-if mt:\n
-  wheres.append(\'modification_date <"\' + cf.strftime(\'%Y-%m-%d\') + \'"\')\n
+if creation_from:\n
+  wheres.append(\'creation_date >"\' + creation_from.strftime(\'%Y-%m-%d\') + \'"\')\n
+if creation_to:\n
+  wheres.append(\'creation_date <"\' + creation_from.strftime(\'%Y-%m-%d\') + \'"\')\n
+if modification_from:\n
+  wheres.append(\'modification_date >"\' + creation_from.strftime(\'%Y-%m-%d\') + \'"\')\n
+if modification_to:\n
+  wheres.append(\'modification_date <"\' + creation_from.strftime(\'%Y-%m-%d\') + \'"\')\n
 if wheres != []:\n
   args[\'where_expression\'] = \' AND \'.join(wheres)\n
 \n
 # We search in any language by default\n
-if args.get(\'language\') == \'0\': args.pop(\'language\')\n
+if args.get(\'language\') == \'0\': \n
+  args.pop(\'language\')\n
 \n
 # User wants only his documents\n
 if args.get(\'mine\'): \n
-  sm = getSecurityManager()\n
-  u = sm.getUser()\n
-  args[\'owner\'] = u\n
+  args[\'owner\'] = context.portal_membership.getAuthenticatedMember()\n
 \n
 query_list = []\n
 for k, v in args.items():\n
@@ -142,7 +144,8 @@
   return ComplexQuery(*query_list, **dict(operator = \'AND\',\n
                                           order_by = \'reference\')) \n
 \n
-return ComplexQuery(*query_list, **dict(operator = \'AND\')) \n
+return ComplexQuery(*query_list, \n
+                    **dict(operator = \'AND\')) \n
 \n
 ####################################\n
 # NOT SUPPORTED YET VERY WELL\n
@@ -195,7 +198,7 @@
         </item>
         <item>
             <key> <string>_params</string> </key>
-            <value> <string>sstr, **kw</string> </value>
+            <value> <string>search_string, **kw</string> </value>
         </item>
         <item>
             <key> <string>errors</string> </key>
@@ -221,7 +224,7 @@
                         <key> <string>co_varnames</string> </key>
                         <value>
                           <tuple>
-                            <string>sstr</string>
+                            <string>search_string</string>
                             <string>kw</string>
                             <string>Products.ZSQLCatalog.SQLCatalog</string>
                             <string>Query</string>
@@ -230,8 +233,6 @@
                             <string>_getattr_</string>
                             <string>context</string>
                             <string>args</string>
-                            <string>query_list</string>
-                            <string>cats</string>
                             <string>bases</string>
                             <string>_getiter_</string>
                             <string>k</string>
@@ -241,14 +242,12 @@
                             <string>modemap</string>
                             <string>dict</string>
                             <string>_getitem_</string>
-                            <string>cf</string>
-                            <string>ct</string>
-                            <string>mf</string>
-                            <string>mt</string>
+                            <string>creation_from</string>
+                            <string>creation_to</string>
+                            <string>modification_from</string>
+                            <string>modification_to</string>
                             <string>wheres</string>
-                            <string>getSecurityManager</string>
-                            <string>sm</string>
-                            <string>u</string>
+                            <string>query_list</string>
                             <string>_apply_</string>
                             <string>idx</string>
                             <string>newest</string>

Modified: erp5/trunk/bt5/erp5_dms_mysql_innodb_catalog/bt/revision
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_dms_mysql_innodb_catalog/bt/revision?rev=14944&r1=14943&r2=14944&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_dms_mysql_innodb_catalog/bt/revision (original)
+++ erp5/trunk/bt5/erp5_dms_mysql_innodb_catalog/bt/revision Mon Jun 25 11:22:38 2007
@@ -1,1 +1,1 @@
-567
+570




More information about the Erp5-report mailing list