Store new keys to preference

CURA-7180 keyring storage
This commit is contained in:
Jelle Spijker 2021-03-15 13:06:42 +01:00
parent b604bbd255
commit 2796b9bef3
No known key found for this signature in database
GPG Key ID: 6662DC033BE6B99A

View File

@ -7,12 +7,14 @@ from UM.Logger import Logger
class SecretStorage: class SecretStorage:
def __init__(self, preferences: Optional["Preferences"] = None): def __init__(self, preferences: Optional["Preferences"] = None):
self._stored_secrets = {} self._stored_secrets = set()
if preferences: if preferences:
self._preferences = preferences self._preferences = preferences
keys = self._preferences.getValue("general/keyring") keys = self._preferences.getValue("general/keyring")
if keys is not None and keys != '': if keys is not None and keys != '':
self._stored_secrets = set(keys.split(";")) self._stored_secrets = set(keys.split(";"))
else:
self._preferences.addPreference("general/keyring", "{}")
def __delitem__(self, key): def __delitem__(self, key):
if key in self._stored_secrets: if key in self._stored_secrets:
@ -28,10 +30,13 @@ class SecretStorage:
keyring.set_password("cura", key, value) keyring.set_password("cura", key, value)
self._stored_secrets.add(key) self._stored_secrets.add(key)
self._preferences.setValue(f"general/{key}", None) self._preferences.setValue(f"general/{key}", None)
self._preferences.setValue("general/keyring", ";".join(self._stored_secrets))
except: except:
Logger.logException("w", f"Could not store {key} in keyring.") Logger.logException("w", f"Could not store {key} in keyring.")
self._preferences.setValue(f"general/{key}", value) if key in self._stored_secrets:
self._stored_secrets.remove(key)
self._preferences.addPreference("general/{key}".format(key=key), "{}")
self._preferences.setValue("general/{key}".format(key=key), value)
self._preferences.setValue("general/keyring", ";".join(self._stored_secrets))
def __getitem__(self, key): def __getitem__(self, key):
secret = self._preferences.getValue(f"general/{key}") secret = self._preferences.getValue(f"general/{key}")