mirror of
https://github.com/jrnl-org/jrnl.git
synced 2025-06-29 22:16:13 +02:00
Fix keyring error handling (#1138)
* Capture KeyringLocked exception and allow manual password entry * Create LockedKeyring for steps * Support types in set_keyring step * Clarify LockedKeyring docs * Deal with locked exceptions elsewhere too * Create behave tests for locked keyring * Fix linting * Fix keyring step to allow no type * Handle all keyring retrieval errors * Better keyring error handling * Remove locked keyring for steps; generalize failed keyring * Finalize tests for keyring handling * Update set_keyring step * Make password of failed keyring encryption test more semantic
This commit is contained in:
parent
9f1bef7fde
commit
57de4f9ba4
3 changed files with 56 additions and 20 deletions
|
@ -176,7 +176,9 @@ def get_keychain(journal_name):
|
|||
|
||||
try:
|
||||
return keyring.get_password("jrnl", journal_name)
|
||||
except RuntimeError:
|
||||
except keyring.errors.KeyringError as e:
|
||||
if not isinstance(e, keyring.errors.NoKeyringError):
|
||||
print("Failed to retrieve keyring", file=sys.stderr)
|
||||
return ""
|
||||
|
||||
|
||||
|
@ -186,13 +188,16 @@ def set_keychain(journal_name, password):
|
|||
if password is None:
|
||||
try:
|
||||
keyring.delete_password("jrnl", journal_name)
|
||||
except keyring.errors.PasswordDeleteError:
|
||||
except keyring.errors.KeyringError:
|
||||
pass
|
||||
else:
|
||||
try:
|
||||
keyring.set_password("jrnl", journal_name, password)
|
||||
except keyring.errors.NoKeyringError:
|
||||
print(
|
||||
"Keyring backend not found. Please install one of the supported backends by visiting: https://pypi.org/project/keyring/",
|
||||
file=sys.stderr,
|
||||
)
|
||||
except keyring.errors.KeyringError as e:
|
||||
if isinstance(e, keyring.errors.NoKeyringError):
|
||||
print(
|
||||
"Keyring backend not found. Please install one of the supported backends by visiting: https://pypi.org/project/keyring/",
|
||||
file=sys.stderr,
|
||||
)
|
||||
else:
|
||||
print("Failed to retrieve keyring", file=sys.stderr)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue