def from_obj(cls, obj): if 'filters' in obj and isinstance(obj['filters'], list): if not obj['filters']: raise FilterValueError('Empty filters for And/Or') return cls(*[filter_from_obj(f) for f in obj['filters']]) raise FilterValueError('Invalid object for {0}'.format(cls.__name__))
def deserialize(obj): if not isinstance(obj, dict): return BaseFilter(obj) if len(obj) != 1: raise FilterValueError('Malformatted filter') for name, value in obj.items(): break for filter_class in filter_classes: if filter_class.__name__ == name: break else: raise FilterValueError('No such filter: {0}'.format(name)) return filter_class.deserialize_value(value)
def __init__(self, value): if type(self) == BaseFilter and isinstance(value, bool): pass elif isinstance(value, (int, float)): pass elif isinstance(value, tuple(s[0] for s in STR_BASED_DATATYPES)): pass elif isinstance(value, str): for char in '\'"': if char in value: raise FilterValueError( '"{}" character is not allowed on filter values'. format(char)) else: raise FilterValueError('Filter value cannot be {}'.format( type(value).__name__)) self.value = value
def __init__(self, value): self.value = value try: self._regexp_obj = re_compile(value) except re_error as error: raise FilterValueError(str(error))
def deserialize_value(cls, value): if value is not None: raise FilterValueError('Invalid value for {}()'.format( cls.__name__)) return cls()
def deserialize_value(cls, value): if not isinstance(value, list): raise FilterValueError('Invalid value for {}()'.format( cls.__name__)) return cls(*[cls.deserialize(v) for v in value])
def from_obj(cls, obj): if 'value' in obj: return cls(obj['value']) raise FilterValueError('Invalid object for ExactMatch')
def from_obj(cls, obj): if 'value' in obj: return cls(obj['value']) raise FilterValueError('Invalid object for Startswith')
def from_obj(cls, obj): if 'networks' in obj and isinstance(obj['networks'], (tuple, list)): return cls(*obj['networks']) raise FilterValueError('Invalid object for {0}'.format(cls))
def from_obj(cls, obj): if 'filter' in obj: return cls(filter_from_obj(obj['filter'])) raise FilterValueError('Invalid object for Not')
def from_obj(cls, obj): if 'values' in obj and isinstance(obj['values'], list): return cls(*obj['values']) raise FilterValueError('Invalid object for Any')
def from_obj(cls, obj): if 'comparator' in obj and 'value' in obj: return cls(obj['comparator'], obj['value']) raise FilterValueError('Invalid object for Comparison')
def deserialize_value(cls, value): if not isinstance(value, list) or len(value) != 2: raise FilterValueError( 'Invalid value for {}()'.format(cls.__name__) ) return cls(value[0], value[1])
def __init__(self, comparator, value): if comparator not in ('<', '>', '<=', '>='): raise FilterValueError('Invalid operator: ' + comparator) self.comparator = comparator self.value = value
def from_obj(cls, obj): if 'regexp' in obj: return cls(obj['regexp']) raise FilterValueError('Invalid object for Regexp')