element/collection decorators

This commit is contained in:
Kenneth Reitz
2011-09-10 21:09:56 -04:00
parent 6a1107b582
commit df3ca1f97b
2 changed files with 20 additions and 14 deletions
+1 -1
View File
@@ -30,7 +30,7 @@ Potentially::
api = Interface()
@api.map('bookmarks')
@api.collection('bookmarks')
class Bookmarks(Resource):
"""Haystack's Bookmarks Resource."""
+19 -13
View File
@@ -192,23 +192,29 @@ class Interface(object):
If map is None (not provided), returns decorator.
"""
if resource:
new_resource = resource(interface=self, name=key)
self.resources[key] = new_resource
if is_collection:
self.resources[key].contains = Collection(resource=new_resource)
else:
self.resources[key].contains = Element(resource=new_resource)
new_resource = resource(interface=self, name=key)
self.resources[key] = new_resource
if is_collection:
self.resources[key].contains = Collection(resource=new_resource)
else:
# Assume decorator usage.
self.resources[key].contains = Element(resource=new_resource)
def decorator(r):
self.map(key, resource=r, is_collection=is_collection)
return r
return decorator
def element(self, key):
def decorator(r):
self.map(key, resource=r, is_collection=False)
return r
return decorator
def collection(self, key):
def decorator(r):
self.map(key, resource=r, is_collection=True)
return r
return decorator