Handle raised error when there is no keyring backend present

CURA-7180 keyring storage
This commit is contained in:
Jelle Spijker 2021-03-17 09:22:24 +01:00
parent 3fd3fd7c7d
commit c462b62edc
No known key found for this signature in database
GPG key ID: 6662DC033BE6B99A

View file

@ -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)