def POST(self, category): i = web.input(olid=None, author=None, data=None, source_url=None, ip=None, _unicode=False) web.ctx.pop("_fieldstorage", None) web.ctx.pop("_data", None) def error(code__msg): (code, msg) = code__msg _cleanup() e = web.badrequest() e.data = simplejson.dumps({"code": code, "message": msg}) raise e source_url = i.source_url data = i.data if source_url: try: data = download(source_url) except: error(ERROR_INVALID_URL) if not data: error(ERROR_EMPTY) try: d = save_image(data, category=category, olid=i.olid, author=i.author, source_url=i.source_url, ip=i.ip) except ValueError: error(ERROR_BAD_IMAGE) _cleanup() return simplejson.dumps({"ok": "true", "id": d.id})
def POST(self, category): i = web.input('olid', author=None, file={}, source_url=None, success_url=None, failure_url=None) success_url = i.success_url or web.ctx.get('HTTP_REFERRER') or '/' failure_url = i.failure_url or web.ctx.get('HTTP_REFERRER') or '/' def error(code__msg): (code, msg) = code__msg print("ERROR: upload failed, ", i.olid, code, repr(msg), file=web.debug) _cleanup() url = changequery(failure_url, errcode=code, errmsg=msg) raise web.seeother(url) if i.source_url: try: data = download(i.source_url) except: error(ERROR_INVALID_URL) source_url = i.source_url elif i.file is not None and i.file != {}: data = i.file.value source_url = None else: error(ERROR_EMPTY) if not data: error(ERROR_EMPTY) try: save_image(data, category=category, olid=i.olid, author=i.author, source_url=i.source_url, ip=web.ctx.ip) except ValueError: error(ERROR_BAD_IMAGE) _cleanup() raise web.seeother(success_url)
def test_download(self): data = open(static_dir + "/logos/logo-en.png").read() self.server.request("/a.png").should_return(data, headers={"Content-Type": "image/png"}) print self.server.mappings, self.server.t, self.server.port assert utils.download("http://0.0.0.0:8090/a.png") == data