def PUT(self): if not "upload" in self.req.auth.perms: # The client doesn't actually get this for larger files because the # connection gets aborted when we don't accept their upload. self.status_code = 403 return {"e": 1, "msg": "You can't upload."} b = Blob(mime=self.req.mimetype) b.writestream(self.req.stream) new = True sb = self.dbs.query(Blob).get(b.id) if sb: # We already have this blob. b = sb new = False else: # Save the new one. self.dbs.add(b) self.dbs.commit() self.status_code = 201 if new else 200 self.headers["Location"] = "/blob/" + b.id return {"e": 0, "id": b.id, "new": new}
def blob(mime, content): b = Blob(mime=mime) b.write(content) sess.add(b) return b
def file(mime, name): name = os.path.join(os.path.dirname(__file__), name) b = Blob(mime=mime) b.writestream(open(name, "rb")) sess.add(b) return b