def create_filter(self, filter_set, repoman): filter = None name = filter_set.pop(0) if filter_set.pop(0) == "And": filter = Filter.Filter(name, Filter.And) else: filter = Filter.Filter(name, Filter.Or) # Get rid of 'begin items' and 'end items' strings filter_set.pop(0) filter_set.pop() while len(filter_set) > 0: filter_type = filter_set.pop(0) if filter_type == "BEGIN ITEM": key = filter_set.pop(0) op = Operations.opForName(filter_set.pop(0)) value = eval(filter_set.pop(0)) filter.add_item(FilterItem(key, op, value)) elif filter_type == "BEGIN GROUP": group = filter_set.pop(0) isMember = eval(filter_set.pop(0)) filter.add_item(FilterGroup(group, isMember, repoman)) else: target = self.get(filter_set.pop(0)) value = eval(filter_set.pop(0)) filter.add_item(FilterFilter(target, value)) # Get rid of 'end item', 'end group' or 'end filterfilter' strings filter_set.pop(0) return filter