# set request-/session-values for new index requestkey = 'filter%s%i' % (filterStereotype, index) sessionkey = '%s_%s' % (requestkey, self.id) REQUEST.set(requestkey, requestvalue) standard.set_session_value(self, sessionkey, requestvalue) # increase index if filterStereotype == 'value' and requestvalue != '': index += 1 request.set('qfilters', index + 1) standard.set_session_value(zmscontext, 'qfilters_%s' % zmscontext.id, index + 1) # apply filter for filterIndex in range(100): suffix = '%i_%s' % (filterIndex, zmscontext.id) sessionattr = standard.get_session_value(zmscontext, 'filterattr%s' % suffix, '') sessionop = standard.get_session_value(zmscontext, 'filterop%s' % suffix, '%') sessionvalue = standard.get_session_value(zmscontext, 'filtervalue%s' % suffix, '') if sessionattr and sessionvalue: res = standard.filter_list(res, sessionattr, sessionvalue, sessionop) # Order res = zmscontext.evalMetaobjAttr('sortChildNodes', records=res, prepare=False) request.set('res', res) return res # --// /recordSet_Prepare //--
def filter_list(self, l, i, v, o='%'): warn(self, 'filter_list', 'Products.zms.standard.filter_list') return standard.filter_list(l, i, v, o)
def recordSet_Filter(self, REQUEST): metaObj = self.getMetaobj(self.meta_id) res = REQUEST['res'] # foreign key filterattr = 'fk_key' filtervalue = 'fk_val' sessionattr = '%s_%s' % (filterattr, self.id) sessionvalue = '%s_%s' % (filtervalue, self.id) standard.set_session_value( self, sessionattr, REQUEST.form.get(filterattr, standard.get_session_value(self, sessionattr, ''))) standard.set_session_value( self, sessionvalue, REQUEST.form.get( filtervalue, standard.get_session_value(self, sessionvalue, ''))) if REQUEST.get('btn') == 'BTN_RESET': standard.set_session_value(self, sessionattr, '') standard.set_session_value(self, sessionvalue, '') if standard.get_session_value(self,sessionattr, '') != '' and \ standard.get_session_value(self,sessionvalue, ''): res = standard.filter_list( res, standard.get_session_value(self, sessionattr), standard.get_session_value(self, sessionvalue), '==') masterType = [ x for x in metaObj['attrs'][1:] if x['id'] == standard.get_session_value(self, sessionattr) ][0]['type'] master = [ x for x in self.getParentNode().objectValues(['ZMSCustom']) if x.meta_id == masterType ][0] masterMetaObj = self.getMetaobj(masterType) masterAttrs = masterMetaObj['attrs'] masterRows = master.getObjProperty(masterAttrs[0]['id'], REQUEST) masterRows = standard.filter_list( masterRows, masterAttrs[1]['id'], standard.get_session_value(self, sessionvalue), '==') REQUEST.set('masterMetaObj', masterMetaObj) REQUEST.set('masterRow', masterRows[0]) # init filter from request. for filterIndex in range(100): for filterStereotype in ['attr', 'op', 'value']: requestkey = 'filter%s%i' % (filterStereotype, filterIndex) sessionkey = '%s_%s' % (requestkey, self.id) requestvalue = REQUEST.form.get( requestkey, standard.get_session_value(self, sessionkey, '')) if REQUEST.get('btn') == 'BTN_RESET': requestvalue = '' REQUEST.set(requestkey, requestvalue) standard.set_session_value(self, sessionkey, requestvalue) standard.set_session_value( self, 'qfilters_%s' % self.id, REQUEST.form.get( 'qfilters', standard.get_session_value(self, 'qfilters_%s' % self.id, 1))) # apply filter for filterIndex in range(100): suffix = '%i_%s' % (filterIndex, self.id) sessionattr = standard.get_session_value(self, 'filterattr%s' % suffix, '') sessionop = standard.get_session_value(self, 'filterop%s' % suffix, '%') sessionvalue = standard.get_session_value(self, 'filtervalue%s' % suffix, '') if sessionattr and sessionvalue: metaObjAttr = self.getMetaobjAttr(self.meta_id, sessionattr) sessionvalue = self.formatObjAttrValue(metaObjAttr, sessionvalue, REQUEST['lang']) res = standard.filter_list(res, sessionattr, sessionvalue, sessionop) REQUEST.set('res', res) return res