From 07166e60c6d71745347b1cfe77005d620029063f Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 9 Oct 2019 12:13:32 +0200 Subject: [PATCH] added exception catches, logging and made few optimalizations --- pype/user/user_module.py | 77 +++++++++++++++++++++++++++------------- 1 file changed, 53 insertions(+), 24 deletions(-) diff --git a/pype/user/user_module.py b/pype/user/user_module.py index 55df91c4de..d70885b211 100644 --- a/pype/user/user_module.py +++ b/pype/user/user_module.py @@ -3,36 +3,39 @@ import json import getpass import appdirs -from pypeapp import style from Qt import QtWidgets from .widget_user import UserWidget +from pype import api as pype + class UserModule: cred_folder_path = os.path.normpath( appdirs.user_data_dir('pype-app', 'pype') ) cred_filename = 'user_info.json' + env_name = "PYPE_USERNAME" + + log = pype.Logger().get_logger("UserModule", "user") def __init__(self, main_parent=None, parent=None): - self.cred = None - self.cred_path = os.path.join( - self.cred_folder_path, self.cred_filename - ) - self.main_parent = main_parent - self.parent = parent + self.cred = {} + self.cred_path = os.path.normpath(os.path.join( + self.cred_folder_path, self.cred_filename + )) self.widget_login = UserWidget(self) self.load_credentials() def tray_start(self): """Store credentials to env and preset them to widget""" - + username = "" if self.cred: username = self.cred.get("username") or "" - os.environ["PYPE_USERNAME"] = username - self.widget_login.set_user(username) + + os.environ[self.env_name] = username + self.widget_login.set_user(username) def process_modules(self, modules): """ Gives ability to connect with imported modules from TrayManager. @@ -49,10 +52,10 @@ class UserModule: self.action_show_widget.trigger() modules["RestApiServer"].register_callback( - "user_module/username", api_get_username, "get" + "user/username", api_get_username, "get" ) modules["RestApiServer"].register_callback( - "user_module/show_widget", api_show_widget, "post" + "user/show_widget", api_show_widget, "post" ) # Definition of Tray menu @@ -61,6 +64,7 @@ class UserModule: action = QtWidgets.QAction("Username", parent_menu) action.triggered.connect(self.show_widget) parent_menu.addAction(action) + parent_menu.addSeparator() self.action_show_widget = action @@ -72,22 +76,47 @@ class UserModule: credentials = json.load(file) file.close() - except FileNotFoundError: - username = getpass.getuser() - self.save_credentials(username) + self.cred = credentials + username = credentials.get("username") + if username: + self.log.debug("Loaded Username \"{}\"".format(username)) + else: + self.log.debug("Pype Username is not set") - self.cred = credentials + return credentials + + except FileNotFoundError: + return self.save_credentials(getpass.getuser()) + + except json.decoder.JSONDecodeError: + self.log.warning(( + "File where users credentials should be stored" + " has invalid json format. Loading system username." + )) + return self.save_credentials(getpass.getuser()) def save_credentials(self, username): - """Save credentials to JSON file""" - self.cred = {"username": str(username)} - if username: - os.environ["PYPE_USERNAME"] = username - self.widget_login.set_user(username) + """Save credentials to JSON file, env and widget""" + if username is None: + username = "" - file = open(self.cred_path, "w") - file.write(json.dumps(self.cred)) - file.close() + username = str(username).strip() + + self.cred = {"username": username} + os.environ[self.env_name] = username + self.widget_login.set_user(username) + try: + file = open(self.cred_path, "w") + file.write(json.dumps(self.cred)) + file.close() + self.log.debug("Username \"{}\" stored".format(username)) + except Exception: + self.log.error( + "Could not store username to file \"{}\"".format(self.cred_path), + exc_info=True + ) + + return self.cred def show_widget(self): """Show dialog to enter credentials"""