aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMicah Lee <micah@micahflee.com>2019-02-17 10:08:01 -0800
committerMicah Lee <micah@micahflee.com>2019-02-17 10:08:01 -0800
commitaaa4e239de906c6412d83b1d5ffa7d0ed0c16417 (patch)
tree611d64eda251b4485a8c928ad3d1146526f0de03
parent422179a6b58210fff34d78994e6069c2924a0997 (diff)
parent41f5800e0eba7266dd1843ded9761afea902b615 (diff)
downloadonionshare-aaa4e239de906c6412d83b1d5ffa7d0ed0c16417.tar.gz
onionshare-aaa4e239de906c6412d83b1d5ffa7d0ed0c16417.zip
Merge branch 'develop' into 899_send_files_ajax
-rw-r--r--onionshare/web/receive_mode.py8
-rw-r--r--onionshare_gui/mode/history.py41
-rw-r--r--onionshare_gui/mode/receive_mode/__init__.py2
3 files changed, 32 insertions, 19 deletions
diff --git a/onionshare/web/receive_mode.py b/onionshare/web/receive_mode.py
index 16c433ee..fa9909ae 100644
--- a/onionshare/web/receive_mode.py
+++ b/onionshare/web/receive_mode.py
@@ -361,14 +361,14 @@ class ReceiveModeRequest(Request):
self.told_gui_about_request = True
- filename = secure_filename(filename)
+ self.filename = secure_filename(filename)
- self.progress[filename] = {
+ self.progress[self.filename] = {
'uploaded_bytes': 0,
'complete': False
}
- f = ReceiveModeFile(self, filename, self.file_write_func, self.file_close_func)
+ f = ReceiveModeFile(self, self.filename, self.file_write_func, self.file_close_func)
if f.upload_error:
self.web.common.log('ReceiveModeRequest', '_get_file_stream', 'Error creating file')
self.upload_error = True
@@ -391,7 +391,7 @@ class ReceiveModeRequest(Request):
if self.told_gui_about_request:
upload_id = self.upload_id
- if not self.web.stop_q.empty():
+ if not self.web.stop_q.empty() or not self.progress[self.filename]['complete']:
# Inform the GUI that the upload has canceled
self.web.add_request(self.web.REQUEST_UPLOAD_CANCELED, self.path, {
'id': upload_id
diff --git a/onionshare_gui/mode/history.py b/onionshare_gui/mode/history.py
index 6af804b2..1546cb68 100644
--- a/onionshare_gui/mode/history.py
+++ b/onionshare_gui/mode/history.py
@@ -31,6 +31,10 @@ class HistoryItem(QtWidgets.QWidget):
"""
The base history item
"""
+ STATUS_STARTED = 0
+ STATUS_FINISHED = 1
+ STATUS_CANCELED = 2
+
def __init__(self):
super(HistoryItem, self).__init__()
@@ -90,6 +94,7 @@ class ShareHistoryItem(HistoryItem):
self.downloaded_bytes = 0
self.started = time.time()
self.started_dt = datetime.fromtimestamp(self.started)
+ self.status = HistoryItem.STATUS_STARTED
# Label
self.label = QtWidgets.QLabel(strings._('gui_all_modes_transfer_started').format(self.started_dt.strftime("%b %d, %I:%M%p")))
@@ -124,6 +129,7 @@ class ShareHistoryItem(HistoryItem):
# Change the label
self.label.setText(self.get_finished_label_text(self.started_dt))
+ self.status = HistoryItem.STATUS_FINISHED
else:
elapsed = time.time() - self.started
@@ -142,6 +148,7 @@ class ShareHistoryItem(HistoryItem):
def cancel(self):
self.progress_bar.setFormat(strings._('gui_canceled'))
+ self.status = HistoryItem.STATUS_CANCELED
@property
def estimated_time_remaining(self):
@@ -237,6 +244,7 @@ class ReceiveHistoryItem(HistoryItem):
self.id = id
self.content_length = content_length
self.started = datetime.now()
+ self.status = HistoryItem.STATUS_STARTED
# Label
self.label = QtWidgets.QLabel(strings._('gui_all_modes_transfer_started').format(self.started.strftime("%b %d, %I:%M%p")))
@@ -313,6 +321,9 @@ class ReceiveHistoryItem(HistoryItem):
self.files[data['filename']].set_dir(data['dir'])
elif data['action'] == 'finished':
+ # Change the status
+ self.status = HistoryItem.STATUS_FINISHED
+
# Hide the progress bar
self.progress_bar.hide()
@@ -320,6 +331,9 @@ class ReceiveHistoryItem(HistoryItem):
self.label.setText(self.get_finished_label_text(self.started))
elif data['action'] == 'canceled':
+ # Change the status
+ self.status = HistoryItem.STATUS_CANCELED
+
# Hide the progress bar
self.progress_bar.hide()
@@ -389,11 +403,11 @@ class HistoryItemList(QtWidgets.QScrollArea):
"""
Reset all items, emptying the list. Override this method.
"""
- for item in self.items.values():
- self.items_layout.removeWidget(item)
- item.close()
- self.items = {}
-
+ for key, item in self.items.copy().items():
+ if item.status != HistoryItem.STATUS_STARTED:
+ self.items_layout.removeWidget(item)
+ item.close()
+ del self.items[key]
class History(QtWidgets.QWidget):
"""
@@ -494,16 +508,17 @@ class History(QtWidgets.QWidget):
Reset all items.
"""
self.item_list.reset()
-
- # Hide not empty, show empty
- self.not_empty.hide()
- self.empty.show()
-
- # Reset counters
+ if len(self.item_list.items) == 0:
+ # Hide not empty, show empty
+ self.not_empty.hide()
+ self.empty.show()
+ # Reset in-progress counter
+ self.in_progress_count = 0
+ self.update_in_progress()
+
+ # Reset completed counter
self.completed_count = 0
- self.in_progress_count = 0
self.update_completed()
- self.update_in_progress()
def update_completed(self):
"""
diff --git a/onionshare_gui/mode/receive_mode/__init__.py b/onionshare_gui/mode/receive_mode/__init__.py
index 3a90f2f4..5fb33ab3 100644
--- a/onionshare_gui/mode/receive_mode/__init__.py
+++ b/onionshare_gui/mode/receive_mode/__init__.py
@@ -198,9 +198,7 @@ class ReceiveMode(Mode):
self.history.update(event["data"]["id"], {
'action': 'canceled'
})
- self.history.completed_count += 1
self.history.in_progress_count -= 1
- self.history.update_completed()
self.history.update_in_progress()
def on_reload_settings(self):