1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
"""
Defines lookup classes to be used in ResultSet's filter method.
"""
registry = {}
class Lookup:
lookup_name = None
def __init_subclass__(cls, **kwargs):
super().__init_subclass__(**kwargs)
registry[cls.lookup_name] = cls()
def __call__(self, resource_value, requested_value):
raise NotImplementedError
class Exact(Lookup):
lookup_name = 'exact'
def __call__(self, resource_value, requested_value):
return resource_value == requested_value
class In(Lookup):
lookup_name = 'in'
def __call__(self, resource_value, requested_values):
return resource_value in requested_values
|