diff options
Diffstat (limited to 'sugar_network/db')
-rw-r--r-- | sugar_network/db/blobs.py | 12 | ||||
-rw-r--r-- | sugar_network/db/metadata.py | 6 |
2 files changed, 14 insertions, 4 deletions
diff --git a/sugar_network/db/blobs.py b/sugar_network/db/blobs.py index da06483..a9d66e0 100644 --- a/sugar_network/db/blobs.py +++ b/sugar_network/db/blobs.py @@ -37,8 +37,14 @@ def init(path): os.makedirs(_root) -def post(content, mime_type=None, digest_to_assert=None): - meta = [] +def post(content, mime_type=None, digest_to_assert=None, meta=None): + if meta is None: + meta = [] + meta.append(('content-type', mime_type or 'application/octet-stream')) + else: + meta = meta.items() + if mime_type: + meta.append(('content-type', mime_type)) @contextmanager def write_blob(): @@ -70,7 +76,7 @@ def post(content, mime_type=None, digest_to_assert=None): blob.unlink() raise http.BadRequest('Digest mismatch') path = _path(digest) - meta.append(('content-type', mime_type or 'application/octet-stream')) + meta.append(('content-length', str(blob.tell()))) with toolkit.new_file(path + _META_SUFFIX) as f: for key, value in meta: f.write('%s: %s\n' % (key, value)) diff --git a/sugar_network/db/metadata.py b/sugar_network/db/metadata.py index 88d644b..9ba5998 100644 --- a/sugar_network/db/metadata.py +++ b/sugar_network/db/metadata.py @@ -311,7 +311,11 @@ class Blob(Property): return '' if not isinstance(value, dict): - mime_type = this.request.content_type or self.mime_type + mime_type = None + if this.request.prop == self.name: + mime_type = this.request.content_type + if not mime_type: + mime_type = self.mime_type return blobs.post(value, mime_type).digest digest = this.resource[self.name] if self.name else None |