def select_relative_attribute(attribute, value, tiddlers, greater=False, lesser=False): """ Select tiddlers that sort greater or less than the provided value for the provided attribute. """ def normalize_value(value): try: return value.lower() except AttributeError: return value func = ATTRIBUTE_SORT_KEY.get(attribute, normalize_value) if greater: return (tiddler for tiddler in tiddlers if func(getattr(tiddler, attribute, tiddler.fields.get( attribute, None))) > func(value)) elif lesser: return (tiddler for tiddler in tiddlers if func(getattr(tiddler, attribute, tiddler.fields.get( attribute, None))) < func(value)) else: return (tiddler for tiddler in tiddlers)
def select_relative_attribute(attribute, value, tiddlers, greater=False, lesser=False): """ Select tiddlers that sort greater or less than the provided value for the provided attribute. """ func = ATTRIBUTE_SORT_KEY.get(attribute, lambda x : x.lower()) if greater: return [tiddler for tiddler in tiddlers if func(getattr(tiddler, attribute)) > func(value)] elif lesser: return [tiddler for tiddler in tiddlers if func(getattr(tiddler, attribute)) < func(value)] else: return tiddlers
def select_relative_attribute(attribute, value, entities, greater=False, lesser=False, environ=None): """ Select entities that sort greater or less than the provided ``value`` for the provided ``attribute``. """ if environ is None: environ = {} store = environ.get('tiddlyweb.store', None) def normalize_value(value): """lower case the value if it is a string""" try: return value.lower() except AttributeError: return value func = ATTRIBUTE_SORT_KEY.get(attribute, normalize_value) if greater: comparator = gt elif lesser: comparator = lt else: comparator = lambda x, y: True # noqa def _select(entity): """ Return true if entity's attribute is < or > (depending on comparator) the value in the filter. """ stored_entity = get_entity(entity, store) if hasattr(stored_entity, 'fields'): return comparator( func( getattr(stored_entity, attribute, stored_entity.fields.get(attribute, ''))), func(value)) else: return comparator(func(getattr(stored_entity, attribute, None)), func(value)) return filter(_select, entities)
def select_relative_attribute(attribute, value, entities, greater=False, lesser=False, environ=None): """ Select entities that sort greater or less than the provided value for the provided attribute. """ if environ == None: environ = {} store = environ.get('tiddlyweb.store', None) def normalize_value(value): """lower case the value if it is a string""" try: return value.lower() except AttributeError: return value func = ATTRIBUTE_SORT_KEY.get(attribute, normalize_value) for entity in entities: stored_entity = _get_entity(entity, store) if greater: if hasattr(stored_entity, 'fields'): if func( getattr(stored_entity, attribute, stored_entity.fields.get(attribute, None))) > func(value): yield entity else: if func(getattr(stored_entity, attribute, None)) > func(value): yield entity elif lesser: if hasattr(stored_entity, 'fields'): if func( getattr(stored_entity, attribute, stored_entity.fields.get(attribute, None))) < func(value): yield entity else: if func(getattr(stored_entity, attribute, None)) < func(value): yield entity else: yield entity
def select_relative_attribute(attribute, value, entities, greater=False, lesser=False, environ=None): """ Select entities that sort greater or less than the provided ``value`` for the provided ``attribute``. """ if environ is None: environ = {} store = environ.get('tiddlyweb.store', None) def normalize_value(value): """lower case the value if it is a string""" try: return value.lower() except AttributeError: return value func = ATTRIBUTE_SORT_KEY.get(attribute, normalize_value) if greater: comparator = gt elif lesser: comparator = lt else: comparator = lambda x, y: True # noqa def _select(entity): """ Return true if entity's attribute is < or > (depending on comparator) the value in the filter. """ stored_entity = get_entity(entity, store) if hasattr(stored_entity, 'fields'): return comparator(func(getattr(stored_entity, attribute, stored_entity.fields.get(attribute, ''))), func(value)) else: return comparator(func(getattr(stored_entity, attribute, None)), func(value)) return filter(_select, entities)