Skip to content
This repository has been archived by the owner on Feb 15, 2018. It is now read-only.

Commit

Permalink
Revamp lookup filters
Browse files Browse the repository at this point in the history
  • Loading branch information
madninja committed Sep 26, 2016
1 parent 32c7ded commit 67b2979
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 33 deletions.
3 changes: 2 additions & 1 deletion helium_commander/__init__.py
Expand Up @@ -10,7 +10,7 @@
from .user import User
from .label import Label
from .organization import Organization
from .timeseries import DataPoint
from .timeseries import Timeseries, DataPoint
from .options import (
device_sort_option,
device_mac_option,
Expand All @@ -26,6 +26,7 @@
User,
Organization,
Label,
Timeseries,
DataPoint,
# Options
device_sort_option,
Expand Down
55 changes: 28 additions & 27 deletions helium_commander/resource.py
Expand Up @@ -23,31 +23,29 @@ def func(resource):
return func


def filter_uuid(id_rep):
def func(resource):
return resource.id == id_rep
return func


def filter_short_id(id_rep):
def func(resource):
return id_rep == resource.short_id
return func
def filter_attribute(attribute):
def _filter(id_rep):
def func(resource):
return id_rep == getattr(resource, attribute, None)
return func
return _filter


def filter_name(id_rep):
id_rep_lower = None
id_rep_len = 0
if id_rep is not None:
id_rep_lower = id_rep.lower()
id_rep_len = len(id_rep_lower)
def filter_string_attribute(attribute):
def _filter_attribute(id_rep):
id_rep_lower = None
id_rep_len = 0
if id_rep is not None:
id_rep_lower = id_rep.lower()
id_rep_len = len(id_rep_lower)

def func(resource):
entry_name = resource.name
if entry_name is None:
return id_rep_lower is None
return entry_name[:id_rep_len].lower() == id_rep_lower
return func
def func(resource):
value = getattr(resource, attribute, None)
if value is None:
return id_rep_lower is None
return value[:id_rep_len].lower() == id_rep_lower
return func
return _filter_attribute


def filter_oneof(lookup_filters):
Expand All @@ -70,29 +68,32 @@ def filter_id_rep(mac=False):
]
else:
filters = [
filter_uuid,
filter_short_id,
filter_name
filter_attribute('id'),
filter_attribute('short_id'),
filter_string_attribute('name')
]
return filter_oneof(filters)


def resource_filter(cls, client, value,
lookup_filter=filter_uuid,
lookup_filter=None,
resources=None,
include=None):
if resources is None:
resources = cls.all(client, include=include)
lookup_filter = lookup_filter or filter_attribute('id')
resource_filter = lookup_filter(value)
return list(_filter(resource_filter, resources))


def resource_lookup(cls, client, id_rep,
mac=False,
resources=None,
lookup_filter=None,
include=None):
lookup_filter = lookup_filter or filter_id_rep(mac=mac)
resources = resource_filter(cls, client, id_rep,
lookup_filter=filter_id_rep(mac=mac),
lookup_filter=lookup_filter,
resources=resources,
include=include)
resources_len = len(list(resources)) if resources is not None else 0
Expand Down
1 change: 0 additions & 1 deletion helium_commander/user.py
@@ -1,6 +1,5 @@
from __future__ import unicode_literals
from helium import User
from operator import attrgetter


def display_map(cls, client):
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Expand Up @@ -3,7 +3,7 @@
author = 'Helium'
author_email = 'hello@helium.com'
install_requires = [
'helium-python>=0.1.1',
'helium-python>=0.1.5',
'future>=0.15',
'dpath>=1.4',
'futures>=3.0',
Expand Down
3 changes: 2 additions & 1 deletion tests/test_sensor.py
Expand Up @@ -25,7 +25,8 @@ def test_lookup(client, sensors, first_sensor):
lookup_sensor = Sensor.lookup(client, first_sensor.name,
resources=sensors)
assert first_sensor == lookup_sensor
lookup_sensor = Sensor.filter(client, None, resource.filter_name,
lookup_sensor = Sensor.filter(client, None,
resource.filter_string_attribute('name'),
resources=sensors)
assert len(lookup_sensor) > 0

Expand Down
2 changes: 0 additions & 2 deletions tox.ini
Expand Up @@ -11,8 +11,6 @@ deps =
betamax_matchers
flake8
flake8_docstrings
sphinx
sphinx-autobuild

[testenv]
commands =
Expand Down

0 comments on commit 67b2979

Please sign in to comment.