Clean ui, add strings, fix web listing logic

This commit is contained in:
hiro 2019-04-23 16:03:50 +02:00
parent 391c82f2a6
commit 0c6dbe4c8a
4 changed files with 39 additions and 54 deletions

View file

@ -81,24 +81,27 @@ class WebsiteModeWeb(object):
self.web.add_request(self.web.REQUEST_LOAD, request.path) self.web.add_request(self.web.REQUEST_LOAD, request.path)
print(self.file_info)
filelist = []
if self.file_info['files']: if self.file_info['files']:
self.website_folder = os.path.dirname(self.file_info['files'][0]['filename']) self.website_folder = os.path.dirname(self.file_info['files'][0]['filename'])
filelist = [v['basename'] for v in self.file_info['files']]
elif self.file_info['dirs']: elif self.file_info['dirs']:
self.website_folder = self.file_info['dirs'][0]['filename'] self.website_folder = self.file_info['dirs'][0]['filename']
filelist = os.listdir(self.website_folder)
else: else:
return self.web.error404() return self.web.error404()
if any((fname == 'index.html') for fname in os.listdir(self.website_folder)): if any((fname == 'index.html') for fname in filelist):
self.web.app.static_url_path = self.website_folder self.web.app.static_url_path = self.website_folder
self.web.app.static_folder = self.website_folder self.web.app.static_folder = self.website_folder
if not os.path.isfile(os.path.join(self.website_folder, page_path)): if not os.path.isfile(os.path.join(self.website_folder, page_path)):
page_path = os.path.join(page_path, 'index.html') page_path = os.path.join(page_path, 'index.html')
return send_from_directory(self.website_folder, page_path) return send_from_directory(self.website_folder, page_path)
elif any(os.path.isfile(os.path.join(self.website_folder, i)) for i in filelist):
elif any(os.path.isfile(os.path.join(self.website_folder, i)) for i in os.listdir(self.website_folder)):
filenames = [] filenames = []
for i in os.listdir(self.website_folder): for i in filelist:
filenames.append(os.path.join(self.website_folder, i)) filenames.append(os.path.join(self.website_folder, i))
self.set_file_info(filenames) self.set_file_info(filenames)

View file

@ -341,6 +341,27 @@ class ReceiveHistoryItem(HistoryItem):
self.label.setText(self.get_canceled_label_text(self.started)) self.label.setText(self.get_canceled_label_text(self.started))
class VisitHistoryItem(HistoryItem):
"""
Download history item, for share mode
"""
def __init__(self, common, id, total_bytes):
super(VisitHistoryItem, self).__init__()
self.common = common
self.id = id
self.visited = time.time()
self.visited_dt = datetime.fromtimestamp(self.visited)
# Label
self.label = QtWidgets.QLabel(strings._('gui_visit_started').format(self.started_dt.strftime("%b %d, %I:%M%p")))
# Layout
layout = QtWidgets.QVBoxLayout()
layout.addWidget(self.label)
self.setLayout(layout)
class HistoryItemList(QtWidgets.QScrollArea): class HistoryItemList(QtWidgets.QScrollArea):
""" """
List of items List of items

View file

@ -27,7 +27,7 @@ from onionshare.web import Web
from ..file_selection import FileSelection from ..file_selection import FileSelection
from .. import Mode from .. import Mode
from ..history import History, ToggleHistory, DownloadHistoryItem from ..history import History, ToggleHistory, VisitHistoryItem
from ...widgets import Alert from ...widgets import Alert
class WebsiteMode(Mode): class WebsiteMode(Mode):
@ -130,7 +130,7 @@ class WebsiteMode(Mode):
The shutdown timer expired, should we stop the server? Returns a bool The shutdown timer expired, should we stop the server? Returns a bool
""" """
# If there were no attempts to download the share, or all downloads are done, we can stop # If there were no attempts to download the share, or all downloads are done, we can stop
if self.web.website_mode.download_count == 0 or self.web.done: if self.web.website_mode.visit_count == 0 or self.web.done:
self.server_status.stop_server() self.server_status.stop_server()
self.server_status_label.setText(strings._('close_on_timeout')) self.server_status_label.setText(strings._('close_on_timeout'))
return True return True
@ -144,7 +144,7 @@ class WebsiteMode(Mode):
Starting the server. Starting the server.
""" """
# Reset web counters # Reset web counters
self.web.website_mode.download_count = 0 self.web.website_mode.visit_count = 0
self.web.error404_count = 0 self.web.error404_count = 0
# Hide and reset the downloads if we have previously shared # Hide and reset the downloads if we have previously shared
@ -201,11 +201,10 @@ class WebsiteMode(Mode):
def cancel_server_custom(self): def cancel_server_custom(self):
""" """
Stop the compression thread on cancel Log that the server has been cancelled
""" """
if self.compress_thread: self.common.log('WebsiteMode', 'cancel_server')
self.common.log('WebsiteMode', 'cancel_server: quitting compress thread')
self.compress_thread.quit()
def handle_tor_broke_custom(self): def handle_tor_broke_custom(self):
""" """
@ -217,7 +216,7 @@ class WebsiteMode(Mode):
""" """
Handle REQUEST_LOAD event. Handle REQUEST_LOAD event.
""" """
self.system_tray.showMessage(strings._('systray_page_loaded_title'), strings._('systray_download_page_loaded_message')) self.system_tray.showMessage(strings._('systray_site_loaded_title'), strings._('systray_site_page_loaded_message'))
def handle_request_started(self, event): def handle_request_started(self, event):
""" """
@ -226,52 +225,12 @@ class WebsiteMode(Mode):
filesize = self.web.website_mode.download_filesize filesize = self.web.website_mode.download_filesize
item = DownloadHistoryItem(self.common, event["data"]["id"], filesize) item = VisitHistoryItem(self.common, event["data"]["id"], filesize)
self.history.add(event["data"]["id"], item) self.history.add(event["data"]["id"], item)
self.toggle_history.update_indicator(True) self.toggle_history.update_indicator(True)
self.history.in_progress_count += 1 self.history.in_progress_count += 1
self.history.update_in_progress() self.history.update_in_progress()
self.system_tray.showMessage(strings._('systray_download_started_title'), strings._('systray_download_started_message'))
def handle_request_progress(self, event):
"""
Handle REQUEST_PROGRESS event.
"""
self.history.update(event["data"]["id"], event["data"]["bytes"])
# Is the download complete?
if event["data"]["bytes"] == self.web.website_mode.filesize:
self.system_tray.showMessage(strings._('systray_download_completed_title'), strings._('systray_download_completed_message'))
# Update completed and in progress labels
self.history.completed_count += 1
self.history.in_progress_count -= 1
self.history.update_completed()
self.history.update_in_progress()
# Close on finish?
if self.common.settings.get('close_after_first_download'):
self.server_status.stop_server()
self.status_bar.clearMessage()
self.server_status_label.setText(strings._('closing_automatically'))
else:
if self.server_status.status == self.server_status.STATUS_STOPPED:
self.history.cancel(event["data"]["id"])
self.history.in_progress_count = 0
self.history.update_in_progress()
def handle_request_canceled(self, event):
"""
Handle REQUEST_CANCELED event.
"""
self.history.cancel(event["data"]["id"])
# Update in progress count
self.history.in_progress_count -= 1
self.history.update_in_progress()
self.system_tray.showMessage(strings._('systray_download_canceled_title'), strings._('systray_download_canceled_message'))
def on_reload_settings(self): def on_reload_settings(self):
""" """
If there were some files listed for sharing, we should be ok to re-enable If there were some files listed for sharing, we should be ok to re-enable

View file

@ -114,6 +114,7 @@
"gui_use_legacy_v2_onions_checkbox": "Use legacy addresses", "gui_use_legacy_v2_onions_checkbox": "Use legacy addresses",
"gui_save_private_key_checkbox": "Use a persistent address", "gui_save_private_key_checkbox": "Use a persistent address",
"gui_share_url_description": "<b>Anyone</b> with this OnionShare address can <b>download</b> your files using the <b>Tor Browser</b>: <img src='{}' />", "gui_share_url_description": "<b>Anyone</b> with this OnionShare address can <b>download</b> your files using the <b>Tor Browser</b>: <img src='{}' />",
"gui_website_url_description": "<b>Anyone</b> with this OnionShare address can <b>visit</b> your website using the <b>Tor Browser</b>: <img src='{}' />",
"gui_receive_url_description": "<b>Anyone</b> with this OnionShare address can <b>upload</b> files to your computer using the <b>Tor Browser</b>: <img src='{}' />", "gui_receive_url_description": "<b>Anyone</b> with this OnionShare address can <b>upload</b> files to your computer using the <b>Tor Browser</b>: <img src='{}' />",
"gui_url_label_persistent": "This share will not auto-stop.<br><br>Every subsequent share reuses the address. (To use one-time addresses, turn off \"Use persistent address\" in the settings.)", "gui_url_label_persistent": "This share will not auto-stop.<br><br>Every subsequent share reuses the address. (To use one-time addresses, turn off \"Use persistent address\" in the settings.)",
"gui_url_label_stay_open": "This share will not auto-stop.", "gui_url_label_stay_open": "This share will not auto-stop.",
@ -168,6 +169,7 @@
"gui_share_mode_autostop_timer_waiting": "Waiting to finish sending", "gui_share_mode_autostop_timer_waiting": "Waiting to finish sending",
"gui_receive_mode_no_files": "No Files Received Yet", "gui_receive_mode_no_files": "No Files Received Yet",
"gui_receive_mode_autostop_timer_waiting": "Waiting to finish receiving", "gui_receive_mode_autostop_timer_waiting": "Waiting to finish receiving",
"gui_visit_started": "Someone has visited your website {}",
"receive_mode_upload_starting": "Upload of total size {} is starting", "receive_mode_upload_starting": "Upload of total size {} is starting",
"days_first_letter": "d", "days_first_letter": "d",
"hours_first_letter": "h", "hours_first_letter": "h",