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-09-25 12:11:52 (GMT)
committer Aleksey Lim <alsroot@sugarlabs.org>2012-09-25 12:11:52 (GMT)
commit5ea69e14afe5d43dbd1433c61dcbe2ffa36357c2 (patch)
treea8b9d67c17b600c1323450b25e84cd934d6a50c9
parent82aa41773163b49c82a0b71c02e6f85eea1e352a (diff)
Polish the code, no special treatmeant for json blobs, use regular props instead
-rw-r--r--active_document/volume.py3
-rwxr-xr-xtests/units/volume.py43
2 files changed, 8 insertions, 38 deletions
diff --git a/active_document/volume.py b/active_document/volume.py
index 8583803..db8326e 100644
--- a/active_document/volume.py
+++ b/active_document/volume.py
@@ -15,7 +15,6 @@
import os
import time
-import json
import logging
from contextlib import contextmanager
from os.path import exists, join, abspath, isdir
@@ -255,8 +254,6 @@ class VolumeCommands(CommandsProcessor):
prop.assert_access(access)
value = prop.on_set(doc, value)
if isinstance(prop, BlobProperty):
- if prop.mime_type == 'application/json':
- value = json.dumps(value)
enforce(PropertyMeta.is_blob(value), 'Invalid BLOB value')
blobs.append((name, value))
else:
diff --git a/tests/units/volume.py b/tests/units/volume.py
index 0ef7c72..d40673f 100755
--- a/tests/units/volume.py
+++ b/tests/units/volume.py
@@ -169,7 +169,7 @@ class VolumeTest(tests.Test):
blob_path = tests.tmpdir + '/testdocument/%s/%s/blob' % (guid[:2], guid)
blob_meta = {
- 'seqno': 3,
+ 'seqno': 2,
'path': blob_path + '.blob',
'digest': hashlib.sha1('blob').hexdigest(),
'mime_type': 'application/octet-stream',
@@ -188,31 +188,6 @@ class VolumeTest(tests.Test):
],
self.call('GET', document='testdocument', reply=['guid', 'blob'])['result'])
- def test_JsonBLOB(self):
-
- class TestDocument(Document):
-
- @active_property(BlobProperty, mime_type='application/json')
- def blob(self, value):
- return value
-
- self.volume = SingleVolume(tests.tmpdir, [TestDocument])
- guid = self.call('POST', document='testdocument', content={'blob': {'foo': None, 'bar': -1}})
-
- self.assertEqual(
- '{"foo": null, "bar": -1}',
- ''.join([i for i in self.call('GET', document='testdocument', guid=guid, prop='blob')]))
-
- self.call('PUT', document='testdocument', guid=guid, prop='blob', content=0)
- self.assertEqual(
- '0',
- ''.join([i for i in self.call('GET', document='testdocument', guid=guid, prop='blob')]))
-
- self.call('PUT', document='testdocument', guid=guid, prop='blob', content=None)
- self.assertEqual(
- 'null',
- ''.join([i for i in self.call('GET', document='testdocument', guid=guid, prop='blob')]))
-
def test_CommandsGetBlobDirectory(self):
class TestDocument(Document):
@@ -961,27 +936,25 @@ class VolumeTest(tests.Test):
@blob.setter
def blob(self, value):
- if type(value) is int:
- value = [value]
+ if '!' not in value:
meta = self.meta('blob')
if meta:
- with file(meta['path']) as f:
- value = json.load(f) + value
+ value = file(meta['path']).read() + value
coroutine.spawn(self.post, value)
return value
def post(self, value):
- self.request.call('PUT', document='testdocument', guid=self.guid, prop='blob', content=value + [-1])
+ self.request.call('PUT', document='testdocument', guid=self.guid, prop='blob', content=value + '!')
self.volume = SingleVolume(tests.tmpdir, [TestDocument])
- guid = self.call('POST', document='testdocument', content={'blob': 0})
+ guid = self.call('POST', document='testdocument', content={'blob': '0'})
coroutine.dispatch()
- self.assertEqual('[0, -1]', ''.join(self.call('GET', document='testdocument', guid=guid, prop='blob')))
+ self.assertEqual('0!', ''.join(self.call('GET', document='testdocument', guid=guid, prop='blob')))
- self.call('PUT', document='testdocument', guid=guid, prop='blob', content=2)
+ self.call('PUT', document='testdocument', guid=guid, prop='blob', content='1')
coroutine.dispatch()
- self.assertEqual('[0, -1, 2, -1]', ''.join(self.call('GET', document='testdocument', guid=guid, prop='blob')))
+ self.assertEqual('0!1!', ''.join(self.call('GET', document='testdocument', guid=guid, prop='blob')))
def call(self, method, document=None, guid=None, prop=None,
accept_language=None, **kwargs):