From 8ba7751b971c980b96d47ec05cc9eacbb42fbd6e Mon Sep 17 00:00:00 2001 From: DYefremov Date: Sat, 11 Jul 2020 12:58:03 +0300 Subject: [PATCH] added debug mode option --- app/commons.py | 10 ++++++++-- app/settings.py | 10 ++++++++++ app/ui/download_dialog.py | 4 ++-- app/ui/main_app_window.py | 36 ++++++++++++++++++++++++++++-------- 4 files changed, 48 insertions(+), 12 deletions(-) diff --git a/app/commons.py b/app/commons.py index 3d1aa211..c0b9e63c 100644 --- a/app/commons.py +++ b/app/commons.py @@ -20,8 +20,14 @@ def init_logger(): log("Logging is enabled.", level=logging.INFO) -def log(message, level=logging.ERROR): - logging.getLogger(_LOGGER_NAME).log(level, message) +def log(message, level=logging.ERROR, debug=False, fmt_message="{}"): + """ The main logging function. """ + logger = logging.getLogger(_LOGGER_NAME) + if debug: + from traceback import format_exc + logger.log(level, fmt_message.format(format_exc())) + else: + logger.log(level, message) def run_idle(func): diff --git a/app/settings.py b/app/settings.py index ef5004bb..0cbb79e4 100644 --- a/app/settings.py +++ b/app/settings.py @@ -668,6 +668,16 @@ class Settings: def remove_unused_bouquets(self, value): self._settings["remove_unused_bouquets"] = value + # **************** Debug **************** # + + @property + def debug_mode(self): + return self._settings.get("debug_mode", False) + + @debug_mode.setter + def debug_mode(self, value): + self._settings["debug_mode"] = value + if __name__ == "__main__": pass diff --git a/app/ui/download_dialog.py b/app/ui/download_dialog.py index f7c5c764..3ae057c3 100644 --- a/app/ui/download_dialog.py +++ b/app/ui/download_dialog.py @@ -179,8 +179,8 @@ class DownloadDialog: done_callback=lambda: self.show_info_message(get_message("Done!"), Gtk.MessageType.INFO), use_http=self._use_http_switch.get_active()) except Exception as e: - from traceback import format_exc - log("Downloading data error: {}".format(format_exc())) + msg = "Downloading data error: {}" + log(msg.format(e), debug=self._settings.debug_mode, fmt_message=msg) self.show_info_message(str(e), Gtk.MessageType.ERROR) if all((download, backup, data_path)): restore_data(backup_src, data_path) diff --git a/app/ui/main_app_window.py b/app/ui/main_app_window.py index 7096d258..b35695fa 100644 --- a/app/ui/main_app_window.py +++ b/app/ui/main_app_window.py @@ -77,6 +77,7 @@ class Application(Gtk.Application): # Adding command line options self.add_main_option("log", ord("l"), GLib.OptionFlags.NONE, GLib.OptionArg.NONE, "", None) self.add_main_option("record", ord("r"), GLib.OptionFlags.NONE, GLib.OptionArg.NONE, "", None) + self.add_main_option("debug", ord("d"), GLib.OptionFlags.NONE, GLib.OptionArg.STRING, "", None) handlers = {"on_close_app": self.on_close_app, "on_resize": self.on_resize, @@ -406,6 +407,18 @@ class Application(Gtk.Application): log("Starting record of current stream...") log("Not implemented yet!") + if "debug" in options: + d_op = options.get("debug", "off") + if d_op == "on": + self._settings.debug_mode = True + elif d_op == "off": + self._settings.debug_mode = False + else: + log("No valid [on, off] arguments for -d found!") + return 1 + log("Debug mode is {}.".format(d_op)) + self._settings.save() + self.activate() return 0 @@ -1111,14 +1124,21 @@ class Application(Gtk.Application): download_type=DownloadType.ALL, callback=lambda x: print(x, end="")) except Exception as e: - from traceback import format_exc - log("Downloading data error: {}".format(format_exc())) + msg = "Downloading data error: {}" + log(msg.format(e), debug=self._settings.debug_mode, fmt_message=msg) self.show_error_dialog(str(e)) else: GLib.idle_add(self.open_data) - @run_task def on_upload_data(self, download_type): + if not self.is_data_saved(): + gen = self.save_data(lambda: self.on_upload_data(download_type)) + GLib.idle_add(lambda: next(gen, False), priority=GLib.PRIORITY_LOW) + else: + self.upload_data(download_type) + + @run_task + def upload_data(self, download_type): try: profile = self._s_type opts = self._settings @@ -1137,8 +1157,8 @@ class Application(Gtk.Application): callback=lambda x: print(x, end=""), use_http=use_http) except Exception as e: - from traceback import format_exc - log("Uploading data error: {}".format(format_exc())) + msg = "Uploading data error: {}" + log(msg.format(e), debug=self._settings.debug_mode, fmt_message=msg) self.show_error_dialog(str(e)) def on_data_open(self, action=None, value=None): @@ -1195,9 +1215,9 @@ class Application(Gtk.Application): self.show_error_dialog(str(e)) return except Exception as e: - from traceback import format_exc - log("Reading data error: {}".format(format_exc())) - self.show_error_dialog(get_message("Reading data error!") + "\n" + str(e)) + msg = "Reading data error: {}" + log(msg.format(e), debug=self._settings.debug_mode, fmt_message=msg) + self.show_error_dialog("{}\n{}".format(get_message("Reading data error!"), e)) return else: self.append_blacklist(black_list)