diff options
author | Aleksey Lim <alsroot@sugarlabs.org> | 2012-03-19 17:19:37 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@sugarlabs.org> | 2012-03-19 17:19:37 (GMT) |
commit | 09341fe15e9bfff10bc357dcabeee915ced76d9d (patch) | |
tree | 09305d5b0c2b45e0b9750ac09488b8e485cbaf28 | |
parent | 45c019f47786e6cb63f1d85a19992d0010975076 (diff) |
Treat deletes as changing layers
-rw-r--r-- | restful_document/document.py | 21 | ||||
-rwxr-xr-x | tests/units/document.py | 12 |
2 files changed, 27 insertions, 6 deletions
diff --git a/restful_document/document.py b/restful_document/document.py index e83b991..8a982d2 100644 --- a/restful_document/document.py +++ b/restful_document/document.py @@ -21,6 +21,9 @@ enforce = ad.util.enforce from restful_document import env +LAYERS = ['public', 'deleted'] + + def restful_method(**kwargs): def decorate(func): @@ -34,6 +37,10 @@ def restful_method(**kwargs): class Document(ad.Document): """All RESTful document classes need to inherit this one.""" + @ad.active_property(prefix='IL', default=['public'], typecast=[LAYERS]) + def layers(self, value): + return value + @classmethod @restful_method(method='POST') def restful_post(cls): @@ -49,10 +56,14 @@ class Document(ad.Document): reply = env.pop_list('reply', kwargs, None) order_by = env.pop_list('order_by', kwargs, None) + # TODO until implementing layers support + kwargs['layers'] = 'public' + documents, total = cls.find(offset, limit, kwargs, query, reply, order_by) - return {'total': total.value, - 'result': [i.all_properties(reply) for i in documents]} + result = [i.all_properties(reply) for i in documents] + + return {'total': total.value, 'result': result} @restful_method(method='PUT') def restful_put(self, prop=None): @@ -69,7 +80,9 @@ class Document(ad.Document): def restful_delete(self, prop=None): enforce(prop is None, env.Forbidden, _('Properties cannot be deleted')) - self.delete(self.guid) + # TODO until implementing layers support + self['layers'] = ['deleted'] + self.post() @restful_method(method='GET') def restful_get_document(self, prop=None): @@ -81,7 +94,9 @@ class Document(ad.Document): reply.append(name) return self.all_properties(reply) elif isinstance(self.metadata[prop], ad.BlobProperty): + stat = self.stat_blob(prop) env.responce['Content-Type'] = self.metadata[prop].mime_type + env.responce['Content-Length'] = stat['size'] return self.get_blob(prop) else: return self[prop] diff --git a/tests/units/document.py b/tests/units/document.py index 9e58546..abeda9c 100755 --- a/tests/units/document.py +++ b/tests/units/document.py @@ -70,11 +70,13 @@ class DocumentTest(tests.Test): del reply['ctime'] del reply['mtime'] self.assertEqual( - {'stored': 'stored', + { + 'stored': 'stored', 'vote': False, 'term': 'term', 'counter': 0, 'guid': guid_1, + 'layers': ['public'], }, reply) @@ -91,11 +93,13 @@ class DocumentTest(tests.Test): del reply['ctime'] del reply['mtime'] self.assertEqual( - {'stored': 'stored2', + { + 'stored': 'stored2', 'vote': False, 'term': 'term2', 'counter': 0, 'guid': guid_2, + 'layers': ['public'], }, reply) @@ -123,11 +127,13 @@ class DocumentTest(tests.Test): del reply['ctime'] del reply['mtime'] self.assertEqual( - {'stored': 'stored3', + { + 'stored': 'stored3', 'vote': True, 'term': 'term3', 'counter': 1, 'guid': guid_2, + 'layers': ['public'], }, reply) |