X-Git-Url: https://scm.cri.ensmp.fr/git/Plinn.git/blobdiff_plain/174a626682442c7b8513117e91ba6b8e956b818d..de068d5b8a1fd46a70f75f4e20e581ee846f866d:/skins/photo_theme/doFormSearch.py?ds=inline diff --git a/skins/photo_theme/doFormSearch.py b/skins/photo_theme/doFormSearch.py new file mode 100755 index 0000000..d917835 --- /dev/null +++ b/skins/photo_theme/doFormSearch.py @@ -0,0 +1,45 @@ +## 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}