From dc737cf2761f62faee3a6fe38fa1f10a57bcdc8d Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Sat, 10 Sep 2011 20:42:33 -0400 Subject: [PATCH] a resource can be a single element --- resources/core.py | 121 ++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 105 insertions(+), 16 deletions(-) diff --git a/resources/core.py b/resources/core.py index 3721d5d..e45c5b8 100644 --- a/resources/core.py +++ b/resources/core.py @@ -37,33 +37,122 @@ class Resource(object): super(Resource, self).__init__() - def content(content_type): - pass - def __repr__(self): return ''.format(self.name) -class Element(object): - """A RESTful Element.""" - - def __init__(self, collection=None): - self.resource = collection - self.uuid = uuid4().hex - self.id = None - - super(Element, self).__init__() - - - class Collection(object): """A RESTful Collection.""" def __init__(self, resource=None): self.resource = resource + self.uuid = uuid4().hex + self.ri = None + super(Collection, self).__init__() + def content(content_type): + pass + + + @method_not_allowed + def get(self, **options): + + # fire pre get element get hook + r = self.collection_get(self.ri, **options) + # fire post get element get hook + + return r + + + @method_not_allowed + def put(self, data, **options): + + r = self.collection_put(self.ri, data, **options) + + return r + + + @method_not_allowed + def patch(self, data, **options): + + r = self.collection_patch(self.ri, data, **options) + + return r + + + @method_not_allowed + def post(self, data, **options): + + r = self.element_post(self.ri, data, **options) + + return r + + + @method_not_allowed + def delete(self, **options): + + r = self.element_delete(self.ri, **options) + + return r + + + +class Element(object): + """A RESTful Element.""" + + def __init__(self, collection=None): + self.collection = collection + self.uuid = uuid4().hex + self.ri = None + + super(Element, self).__init__() + + def content(content_type): + pass + + @method_not_allowed + def get(self, **options): + + # fire pre get element get hook + r = self.element_get(self.ri, **options) + # fire post get element get hook + + return r + + + @method_not_allowed + def put(self, data, **options): + + r = self.element_put(self.ri, data, **options) + + return r + + + @method_not_allowed + def patch(self, data, **options): + + r = self.element_patch(self.ri, data, **options) + + return r + + + @method_not_allowed + def post(self, data, **options): + + r = self.element_post(self.ri, data, **options) + + return r + + + @method_not_allowed + def delete(self, **options): + + r = self.element_delete(self.ri, **options) + + return r + class Interface(object): @@ -90,7 +179,7 @@ class Interface(object): return object.__getattribute__(self, key) - def map(self, key, resource=None): + def map(self, key, resource=None, collection=True): """Maps a given resource to the given namespace. If map is None (not provided), returns decorator.