Added parameter support to Resource.find()

This makes the overrides in subclasses unnecessary
This commit is contained in:
2016-03-09 12:41:52 +01:00
parent ec11e82f32
commit 1a1c2c51fe
3 changed files with 5 additions and 38 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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]