--- /dev/null
+## Script (Python) "doFormSearch"
+##parameters=REQUEST
+##title=Pre-process form variables, then return catalog query results.
+##
+vars = REQUEST.form
+form_vars = {}
+skip_vars = ['strCreator']
+select_vars = ( 'review_state'
+ , 'Subject'
+ , 'portal_type'
+ )
+date_vars = ('created',
+ )
+epoch = DateTime("1970/01/01 00:00:00 GMT")
+
+for k, v in vars.items():
+
+ if k in select_vars:
+ if same_type( v, [] ):
+ v = filter( None, v )
+ if not v:
+ continue
+
+ if k in date_vars:
+ if v == epoch and vars.get(k+'_usage') == 'range:min':
+ skip_vars.append(k+'_usage')
+ continue
+
+ form_vars[ k ] = v
+
+if form_vars.has_key('portal_type') :
+ try : form_vars['portal_type'].remove('Member Data')
+ except ValueError : pass
+else :
+ form_vars['portal_type'] = context.portal_types.objectIds()
+
+for k in skip_vars:
+ if form_vars.has_key(k) :
+ del form_vars[k]
+
+if vars.has_key('strCreator') :
+ form_vars['Creator'] = [ m.id for m in context.portal_membership.looseSearchMembers(vars['strCreator']) ]
+
+results = context.portal_catalog( form_vars )
+return {'results':results, 'searchArgs':form_vars}