Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar_network/db
diff options
context:
space:
mode:
Diffstat (limited to 'sugar_network/db')
-rw-r--r--sugar_network/db/blobs.py12
-rw-r--r--sugar_network/db/metadata.py6
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