a resource can be a single element

This commit is contained in:
Kenneth Reitz
2011-09-10 20:42:33 -04:00
parent 1da9cc52cb
commit dc737cf276
+105 -16
View File
@@ -37,33 +37,122 @@ class Resource(object):
super(Resource, self).__init__()
def content(content_type):
pass
def __repr__(self):
return '<resource \'{0}\'>'.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.