summaryrefslogtreecommitdiffstats
path: root/deluge/ui/web/server.py
diff options
context:
space:
mode:
authorCalum Lind <calumlind@gmail.com>2018-10-09 14:44:28 +0100
committerCalum Lind <calumlind@gmail.com>2018-10-10 17:57:02 +0100
commit86de5657ff1a8605e20f8c7beffb8f9e955fcf90 (patch)
tree48a69c39dc70a249a6f56af54e03c3228b0c4107 /deluge/ui/web/server.py
parent4a335eeb612379e88b1599b9fa85fcadc6ca2231 (diff)
downloaddeluge-86de5657ff1a8605e20f8c7beffb8f9e955fcf90.tar.gz
deluge-86de5657ff1a8605e20f8c7beffb8f9e955fcf90.tar.bz2
deluge-86de5657ff1a8605e20f8c7beffb8f9e955fcf90.zip
[WebUI|Py3] Fix and refactor torrent upload
Diffstat (limited to 'deluge/ui/web/server.py')
-rw-r--r--deluge/ui/web/server.py35
1 files changed, 19 insertions, 16 deletions
diff --git a/deluge/ui/web/server.py b/deluge/ui/web/server.py
index cfcf92b2e..ae339dd44 100644
--- a/deluge/ui/web/server.py
+++ b/deluge/ui/web/server.py
@@ -111,27 +111,30 @@ class Upload(resource.Resource):
# Block all other HTTP methods.
if request.method != b'POST':
request.setResponseCode(http.NOT_ALLOWED)
- return ''
+ request.finish()
+ return server.NOT_DONE_YET
- print(request.args)
- if b'file' not in request.args:
- request.setResponseCode(http.OK)
- return json.dumps({'success': True, 'files': []})
+ files = request.args.get(b'file', [])
+ filenames = []
- tempdir = tempfile.mkdtemp(prefix='delugeweb-')
- log.debug('uploading files to %s', tempdir)
+ if files:
+ tempdir = tempfile.mkdtemp(prefix='delugeweb-')
+ log.debug('uploading files to %s', tempdir)
- filenames = []
- for upload in request.args.get('file'):
- fd, fn = tempfile.mkstemp('.torrent', dir=tempdir)
- os.write(fd, upload)
- os.close(fd)
- filenames.append(fn)
- log.debug('uploaded %d file(s)', len(filenames))
+ for upload in files:
+ fd, fn = tempfile.mkstemp('.torrent', dir=tempdir)
+ os.write(fd, upload)
+ os.close(fd)
+ filenames.append(fn)
+
+ log.debug('uploaded %d file(s)', len(filenames))
request.setHeader(b'content-type', b'text/html')
request.setResponseCode(http.OK)
- return compress(json.dumps({'success': True, 'files': filenames}), request)
+ return compress(
+ json.dumps({'success': bool(filenames), 'files': filenames}).encode('utf8'),
+ request,
+ )
class Render(resource.Resource):
@@ -542,7 +545,7 @@ class TopLevel(resource.Resource):
def getChildWithDefault(self, path, request): # NOQA: N802
# Calculate the request base
- header = request.getHeader('x-deluge-base')
+ header = request.getHeader(b'x-deluge-base')
base = header if header else component.get('DelugeWeb').base
# validate the base parameter