From 1a1c2c51fe3f8be6b7e10d05336cd8562e90e62a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Wed, 9 Mar 2016 12:41:52 +0100 Subject: [PATCH] Added parameter support to Resource.find() This makes the overrides in subclasses unnecessary --- pillarsdk/nodes.py | 18 ------------------ pillarsdk/projects.py | 18 ------------------ pillarsdk/resource.py | 7 +++++-- 3 files changed, 5 insertions(+), 38 deletions(-) diff --git a/pillarsdk/nodes.py b/pillarsdk/nodes.py index 735a80e..1954d64 100755 --- a/pillarsdk/nodes.py +++ b/pillarsdk/nodes.py @@ -16,24 +16,6 @@ class Node(List, Find, Create, Post, Update, Delete, Replace): """ path = "nodes" - @classmethod - def find(cls, resource_id, params=None, api=None): - """Locate resource, usually using ObjectID - - Usage:: - - >>> Node.find("507f1f77bcf86cd799439011") - """ - - api = api or Api.Default() - - url = utils.join_url(cls.path, str(resource_id)) - if params: - url = utils.join_url_params(url, params) - - item = utils.convert_datetime(api.get(url)) - return cls(item) - @classmethod def find_one(cls, params, api=None): """Get one resource starting from parameters different than the resource diff --git a/pillarsdk/projects.py b/pillarsdk/projects.py index c8ab0fe..a338eb5 100644 --- a/pillarsdk/projects.py +++ b/pillarsdk/projects.py @@ -17,24 +17,6 @@ class Project(List, Find, Create, Post, Update, Delete, Replace): """ path = "projects" - @classmethod - def find(cls, resource_id, params=None, api=None): - """Locate resource, usually using ObjectID - - Usage:: - - >>> Project.find("507f1f77bcf86cd799439011") - """ - - api = api or Api.Default() - - url = utils.join_url(cls.path, str(resource_id)) - if params: - url = utils.join_url_params(url, params) - - item = utils.convert_datetime(api.get(url)) - return cls(item) - @classmethod def find_one(cls, params, api=None): """Get one resource starting from parameters different than the resource diff --git a/pillarsdk/resource.py b/pillarsdk/resource.py index 153b055..ad7702c 100644 --- a/pillarsdk/resource.py +++ b/pillarsdk/resource.py @@ -108,7 +108,7 @@ class Resource(object): class Find(Resource): @classmethod - def find(cls, resource_id, api=None): + def find(cls, resource_id, params=None, api=None): """Locate resource, usually using ObjectID Usage:: @@ -119,6 +119,9 @@ class Find(Resource): api = api or Api.Default() url = utils.join_url(cls.path, str(resource_id)) + if params: + url = utils.join_url_params(url, params) + item = utils.convert_datetime(api.get(url)) return cls(item) @@ -194,7 +197,7 @@ class List(Resource): for item in response['_items']: item = utils.convert_datetime(item) return cls.list_class(response) - except AttributeError: + except AttributeError: # FIXME: handle list responses properly, rather than relying on this exception. # To handle the case when response is JSON Array if isinstance(response, list): new_resp = [cls.list_class(elem) for elem in response]