mirror of
https://github.com/onionshare/onionshare.git
synced 2025-01-27 11:43:01 -03:00
ReceiveModeRequest should only deal with upload_ids for upload requests, not for other requests
This commit is contained in:
parent
eb3d6f2171
commit
841e47b234
1 changed files with 37 additions and 33 deletions
|
@ -670,9 +670,6 @@ class ReceiveModeRequest(Request):
|
||||||
super(ReceiveModeRequest, self).__init__(environ, populate_request, shallow)
|
super(ReceiveModeRequest, self).__init__(environ, populate_request, shallow)
|
||||||
self.web = environ['web']
|
self.web = environ['web']
|
||||||
|
|
||||||
# A dictionary that maps filenames to the bytes uploaded so far
|
|
||||||
self.progress = {}
|
|
||||||
|
|
||||||
# Is this a valid upload request?
|
# Is this a valid upload request?
|
||||||
self.upload_request = False
|
self.upload_request = False
|
||||||
if self.method == 'POST':
|
if self.method == 'POST':
|
||||||
|
@ -683,34 +680,39 @@ class ReceiveModeRequest(Request):
|
||||||
if self.path == '/{}/upload'.format(self.web.slug):
|
if self.path == '/{}/upload'.format(self.web.slug):
|
||||||
self.upload_request = True
|
self.upload_request = True
|
||||||
|
|
||||||
# If this is an upload request, create an upload_id (attach it to the request)
|
if self.upload_request:
|
||||||
self.upload_id = self.web.upload_count
|
# A dictionary that maps filenames to the bytes uploaded so far
|
||||||
self.web.upload_count += 1
|
self.progress = {}
|
||||||
|
|
||||||
# Tell the GUI
|
# Create an upload_id, attach it to the request
|
||||||
self.web.add_request(Web.REQUEST_STARTED, self.path, {
|
self.upload_id = self.web.upload_count
|
||||||
'id': self.upload_id
|
self.web.upload_count += 1
|
||||||
})
|
|
||||||
|
# Tell the GUI
|
||||||
|
self.web.add_request(Web.REQUEST_STARTED, self.path, {
|
||||||
|
'id': self.upload_id
|
||||||
|
})
|
||||||
|
|
||||||
def _get_file_stream(self, total_content_length, content_type, filename=None, content_length=None):
|
def _get_file_stream(self, total_content_length, content_type, filename=None, content_length=None):
|
||||||
"""
|
"""
|
||||||
This gets called for each file that gets uploaded, and returns an file-like
|
This gets called for each file that gets uploaded, and returns an file-like
|
||||||
writable stream.
|
writable stream.
|
||||||
"""
|
"""
|
||||||
# Tell the GUI about the new file upload
|
if self.upload_request:
|
||||||
self.web.add_request(Web.REQUEST_UPLOAD_NEW_FILE_STARTED, self.path, {
|
# Tell the GUI about the new file upload
|
||||||
'id': self.upload_id,
|
self.web.add_request(Web.REQUEST_UPLOAD_NEW_FILE_STARTED, self.path, {
|
||||||
'filename': filename,
|
'id': self.upload_id,
|
||||||
'total_bytes': total_content_length
|
'filename': filename,
|
||||||
})
|
'total_bytes': total_content_length
|
||||||
|
})
|
||||||
|
|
||||||
self.progress[filename] = {
|
self.progress[filename] = {
|
||||||
'total_bytes': total_content_length,
|
'total_bytes': total_content_length,
|
||||||
'uploaded_bytes': 0
|
'uploaded_bytes': 0
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(self.progress) > 0:
|
if len(self.progress) > 0:
|
||||||
print('')
|
print('')
|
||||||
|
|
||||||
return ReceiveModeTemporaryFile(filename, self.onionshare_update_func)
|
return ReceiveModeTemporaryFile(filename, self.onionshare_update_func)
|
||||||
|
|
||||||
|
@ -719,20 +721,22 @@ class ReceiveModeRequest(Request):
|
||||||
When closing the request, print a newline if this was a file upload.
|
When closing the request, print a newline if this was a file upload.
|
||||||
"""
|
"""
|
||||||
super(ReceiveModeRequest, self).close()
|
super(ReceiveModeRequest, self).close()
|
||||||
if len(self.progress) > 0:
|
if self.upload_request:
|
||||||
print('')
|
if len(self.progress) > 0:
|
||||||
|
print('')
|
||||||
|
|
||||||
def onionshare_update_func(self, filename, length):
|
def onionshare_update_func(self, filename, length):
|
||||||
"""
|
"""
|
||||||
Keep track of the bytes uploaded so far for all files.
|
Keep track of the bytes uploaded so far for all files.
|
||||||
"""
|
"""
|
||||||
self.progress[filename]['uploaded_bytes'] += length
|
if self.upload_request:
|
||||||
uploaded = self.web.common.human_readable_filesize(self.progress[filename]['uploaded_bytes'])
|
self.progress[filename]['uploaded_bytes'] += length
|
||||||
total = self.web.common.human_readable_filesize(self.progress[filename]['total_bytes'])
|
uploaded = self.web.common.human_readable_filesize(self.progress[filename]['uploaded_bytes'])
|
||||||
print('{}/{} - {} '.format(uploaded, total, filename), end='\r')
|
total = self.web.common.human_readable_filesize(self.progress[filename]['total_bytes'])
|
||||||
|
print('{}/{} - {} '.format(uploaded, total, filename), end='\r')
|
||||||
|
|
||||||
# Update the GUI on the upload progress
|
# Update the GUI on the upload progress
|
||||||
self.web.add_request(Web.REQUEST_PROGRESS, self.path, {
|
self.web.add_request(Web.REQUEST_PROGRESS, self.path, {
|
||||||
'id': self.upload_id,
|
'id': self.upload_id,
|
||||||
'progress': self.progress
|
'progress': self.progress
|
||||||
})
|
})
|
||||||
|
|
Loading…
Add table
Reference in a new issue