From c462b62edcd14d57117dfe620da505497543ad9e Mon Sep 17 00:00:00 2001 From: Jelle Spijker Date: Wed, 17 Mar 2021 09:22:24 +0100 Subject: [PATCH] Handle raised error when there is no keyring backend present CURA-7180 keyring storage --- cura/OAuth2/KeyringAttribute.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/cura/OAuth2/KeyringAttribute.py b/cura/OAuth2/KeyringAttribute.py index 50600c5b9b..c64ea86975 100644 --- a/cura/OAuth2/KeyringAttribute.py +++ b/cura/OAuth2/KeyringAttribute.py @@ -13,7 +13,12 @@ class KeyringAttribute: """ def __get__(self, instance: Type["BaseModel"], owner: type) -> str: if self._store_secure: - return keyring.get_password("cura", self._keyring_name) + try: + return keyring.get_password("cura", self._keyring_name) + except keyring.errors.NoKeyringError: + self._store_secure = False + Logger.logException("w", "No keyring backend present") + return getattr(instance, self._name) else: return getattr(instance, self._name) @@ -26,6 +31,10 @@ class KeyringAttribute: self._store_secure = False setattr(instance, self._name, value) Logger.logException("w", "Keyring access denied") + except keyring.errors.NoKeyringError: + self._store_secure = False + setattr(instance, self._name, value) + Logger.logException("w", "No keyring backend present") else: setattr(instance, self._name, value) @@ -35,6 +44,6 @@ class KeyringAttribute: self._store_secure = False try: self._store_secure = keyring.backend.KeyringBackend.viable - except keyring.errors.KeyringError: + except keyring.errors.NoKeyringError: Logger.logException("w", "Could not use keyring") setattr(owner, self._name, None)