diff options
author | Petr Viktorin <pviktori@redhat.com> | 2012-02-09 09:09:03 -0500 |
---|---|---|
committer | Rob Crittenden <rcritten@redhat.com> | 2012-02-19 20:23:20 -0500 |
commit | efb37739ab1b3a7c9d87af7a2d8ed57a1d0d5abe (patch) | |
tree | 72685cbc802cad34c784969e5764fa76480483fa /ipalib/errors.py | |
parent | 8125c11a8d26597972518735a18db63b5ea86c61 (diff) | |
download | freeipa-efb37739ab1b3a7c9d87af7a2d8ed57a1d0d5abe.tar.gz freeipa-efb37739ab1b3a7c9d87af7a2d8ed57a1d0d5abe.tar.xz freeipa-efb37739ab1b3a7c9d87af7a2d8ed57a1d0d5abe.zip |
Add common helper for interactive prompts
This patch adds a common method, textui.prompt_helper, that handles
encoding, decoding and error handling for interactive prompts.
On EOFError (Ctrl+D) or KeyboardInterrupt (Ctrl+C), it raises
a new InvocationError, PromptFailed.
The helper is used in prompt, prompt_yesno, and prompt_password,
each of which originally only handled one of Ctrl+C and Ctrl+D.
This fixes https://fedorahosted.org/freeipa/ticket/2345
And it means prompt_yesno will no longer return None on error.
A minor fix restores errors.py's ability print out the list of
errors when run as a script.
Diffstat (limited to 'ipalib/errors.py')
-rw-r--r-- | ipalib/errors.py | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/ipalib/errors.py b/ipalib/errors.py index 115802fa6..bdc4a5e73 100644 --- a/ipalib/errors.py +++ b/ipalib/errors.py @@ -816,6 +816,15 @@ class NotConfiguredError(InvocationError): format = _('Client is not configured. Run ipa-client-install.') +class PromptFailed(InvocationError): + """ + **3014** Raise when an interactive prompt failed. + """ + + errno = 3014 + format = _('Could not get %(name)s interactively') + + ############################################################################## # 4000 - 4999: Execution errors @@ -1587,5 +1596,5 @@ public_errors = tuple( if __name__ == '__main__': for klass in public_errors: - print '%d\t%s' % (klass.code, klass.__name__) + print '%d\t%s' % (klass.errno, klass.__name__) print '(%d public errors)' % len(public_errors) |