[Erp5-report] r10637 - /erp5/trunk/bt5/erp5_dms/ExtensionTemplateItem/searchUtils.py

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Oct 10 15:52:13 CEST 2006


Author: bartek
Date: Tue Oct 10 15:52:11 2006
New Revision: 10637

URL: http://svn.erp5.org?rev=10637&view=rev
Log:
changed search syntax a bit (more reliance on security), added docstring

Modified:
    erp5/trunk/bt5/erp5_dms/ExtensionTemplateItem/searchUtils.py

Modified: erp5/trunk/bt5/erp5_dms/ExtensionTemplateItem/searchUtils.py
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_dms/ExtensionTemplateItem/searchUtils.py?rev=10637&r1=10636&r2=10637&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_dms/ExtensionTemplateItem/searchUtils.py (original)
+++ erp5/trunk/bt5/erp5_dms/ExtensionTemplateItem/searchUtils.py Tue Oct 10 15:52:11 2006
@@ -1,14 +1,42 @@
+'''
+RULES
+
+Single arguments:
+    - arg:value translates into arg='value' in query
+    - quotes are cleared
+    - if value contains spaces, punctuation or anything else it has to be put in quotes
+    - file is source_reference (original file name)
+    - language, version, reference
+
+Multiple arguments:
+    - arg:xxx works the same way
+    - arg:(xxx,yyy) ORs both (do not put space after comma)
+    - arg:all translates into empty tuple, which implies all available values
+    - state (simulation_state), type (portal_type)
+
+Everything else is treated as SearchableText
+'''
+
 
 import re
 
 # parsing defined here
-simulation_states=('released','public','submitted')
-r=re.compile('(\w+:"[^"]+"|\w+:[\w/\-.]+)')
+simulation_states=()
+r=re.compile('(\w+:"[^"]+"|\w+:[\(\),\w/\-.]+)')
 filetyper=lambda s:('source_reference','%%.%s' % s)
 filestripper=lambda s: ('source_reference',s.replace('"',''))
-addarchived=lambda s: ('simulation_state',simulation_states+('archived',))
-paramsmap=dict(file=filestripper,type='portal_type',reference='reference',filetype=filetyper,archived=addarchived,\
+#addarchived=lambda s: ('simulation_state',simulation_states+('archived',))
+state=lambda s:('simulation_state',parsestates(s))
+type=lambda s:('portal_type',parsestates(s))
+paramsmap=dict(file=filestripper,type=type,reference='reference',filetype=filetyper,state=state,\
         language='language',version='version')
+
+def parsestates(s):
+    if s=='all':
+        return ()
+    if s[0]=='(' and s[-1]==')':
+        return [i for i in s[1:-1].split(',') if i!='']
+    return s.replace('"','').replace("'","")
 
 def analyze(params):
     params['SearchableText']=''
@@ -38,5 +66,5 @@
 
 if __name__=='__main__':
     #searchstring='byle cisnie zego file:"ble ble.doc" filetype:doc type:Text poza tym reference:abc-def'
-    searchstring='byle "cisnie zego" file:"ble ble.doc" type:Text poza tym reference:abc-def dupa:kwas/zbita'
+    searchstring='byle "cisnie zego" state:draft file:"ble ble.doc" type:"Web Site" poza tym reference:abc-def dupa:kwas/zbita'
     print parseSearchString(searchstring)




More information about the Erp5-report mailing list