X-Git-Url: https://scm.cri.minesparis.psl.eu/git/Plinn.git/blobdiff_plain/3c4367d8e03450e9a73e61f4247145d2b6c86a33..959d888c17d1403d2eeecc19bc4b5e2c8d1debf6:/skins/generic/search.py?ds=sidebyside diff --git a/skins/generic/search.py b/skins/generic/search.py deleted file mode 100755 index 0d02e57..0000000 --- a/skins/generic/search.py +++ /dev/null @@ -1,144 +0,0 @@ -##parameters= -from Products.CMFCore.utils import getToolByName -from ZTUtils import make_query as mq -from ZTUtils import make_hidden_input -from Products.Plinn.utils import translate -def _(message) : return translate(message, context).encode('utf-8') - -utool = getToolByName(context, 'portal_url') -portal_url = utool() -ctool = getToolByName(context, 'portal_catalog') -mtool = getToolByName(context,'portal_membership') -homeDir = mtool.getHomeFolder(verifyPermission=True) -options = {} -indexes = {} -for i in ctool.indexes() : - indexes[i] = True -hasindex = indexes.has_key - -form = context.REQUEST.form -query = {} -skip_vars = ['strCreator', 'ajax', 'b_start'] - -# list typed criterions -select_vars = ( 'review_state' - , 'Subject' - , 'portal_type' - ) -noFollowVars = [] - -# first cleaning: remove empty values / dict cast. -for k, v in form.items() : - if not v : continue - if k in select_vars : - if same_type( v, [] ): - v = filter( None, v ) - if not v: - continue - if hasattr(v, 'has_key') : - v = dict(v.items()) - - query[ k ] = v - -# simplifications / cleaning again -if query.has_key('portal_type') : - try : query['portal_type'].remove('Member Data') - except (ValueError, AttributeError) : pass -else : - query['portal_type'] = context.portal_types.objectIds() - noFollowVars.append('portal_type') - -# clean parameters that are not indexes -for k in skip_vars: - if query.has_key(k) : - del query[k] - -# expand creator search item -if form.has_key('strCreator') and form['strCreator'].strip() : - query['listCreators'] = [ m.getId() for m in context.portal_membership.looseSearchMembers(form['strCreator']) ] - -# 'mofified' index solving -if query.has_key('modified') : - def resolveDate(modified) : - today = context.ZopeTime().earliestTime() - dateResolution = {'yesterday' : (today-1).Date() - , 'lastWeek' : (today-7).Date() - , 'lastMonth' : (today-31).Date() - } - member = mtool.getAuthenticatedMember() - if member : - lastLoginTime = member.getProperty('last_login_time', None) - if lastLoginTime : - dateResolution['lastLogin'] = lastLoginTime - return dateResolution.get(modified) - - date = resolveDate(query['modified']) - if date : - query['modified'] = {'query':date, 'range':'min'} - else : - del query['modified'] - -sort_on = query.get('sort_on', 'fTitle') -if hasindex(sort_on) : - query['sort_on'] = sort_on - query['sort_order'] = query.get('sort_order', 'ascending') -else : - if query.has_key('sort_on') : query.pop('sort_on') - if query.has_key('sort_order') : query.pop('sort_order') - -def makeColumnHeader(indexName) : - toggleSortOrder = indexName == sort_on - columnQuery = query.copy() - for name in noFollowVars : - if columnQuery.has_key(name) : - columnQuery.pop(name) - columnQuery['sort_on'] = indexName - sort_order = query.get('sort_order', 'ascending') - if toggleSortOrder : - if sort_order == 'ascending' : - sort_order = 'reverse' - elif sort_order == 'reverse' : - sort_order = 'ascending' - columnQuery['sort_order'] = sort_order - url = '%s/search?%s' % (portal_url, mq(**columnQuery)) - - toggleImg = None - if toggleSortOrder : # e.g. selected - if query['sort_order'] == 'ascending' : - toggleImg = {'src':'%s/arrowUp.gif' % portal_url - ,'alt' : _('ascending sort')} - - elif query['sort_order'] == 'reverse' : - toggleImg = {'src':'%s/arrowDown.gif' % portal_url - ,'alt' : _('ascending sort')} - return {'url':url, 'img':toggleImg} - - -options['makeColumnHeader'] = makeColumnHeader -results = ctool( **query ) -options['results'] = results -options['resultsLength'] = len(results) -if homeDir and results : - options['canSaveAsTopic'] = True - args = query.copy() - for name in noFollowVars : - try : args.pop(name) - except : pass - if form.has_key('modified') : - possibleValues = {'yesterday' : 1 - ,'lastWeek' : 7 - ,'lastMonth' : 31} - value = possibleValues.get(form['modified']) - if value : - d = {'critType' : 'Friendly Date Criterion' - ,'value' : value - ,'operation': 'max' - ,'daterange': 'old'} - args['modified'] = d - else : - try : del args['modified'] - except KeyError : pass - options['queryAsHiddenInputs'] = make_hidden_input(**args) -else : - options['canSaveAsTopic'] = False -return context.search_results_template(**options)