Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@sugarlabs.org>2012-03-19 17:19:37 (GMT)
committer Aleksey Lim <alsroot@sugarlabs.org>2012-03-19 17:19:37 (GMT)
commit09341fe15e9bfff10bc357dcabeee915ced76d9d (patch)
tree09305d5b0c2b45e0b9750ac09488b8e485cbaf28
parent45c019f47786e6cb63f1d85a19992d0010975076 (diff)
Treat deletes as changing layers
-rw-r--r--restful_document/document.py21
-rwxr-xr-xtests/units/document.py12
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)