From f7ca405716b1ee8b92a940e07cd611f6b025795d Mon Sep 17 00:00:00 2001 From: Martin Nagy Date: Mon, 21 Jul 2008 12:25:37 +0200 Subject: Wrap up the raw_input() to user_input() for convenience and uniformity. --- ipa-python/ipautil.py | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) (limited to 'ipa-python') diff --git a/ipa-python/ipautil.py b/ipa-python/ipautil.py index 4e065fc4..3526cc7a 100644 --- a/ipa-python/ipautil.py +++ b/ipa-python/ipautil.py @@ -29,6 +29,7 @@ import os, sys, traceback, readline import stat import shutil +from ipa import ipavalidate from types import * import re @@ -482,6 +483,71 @@ def read_items_file(filename): if fd != sys.stdin: fd.close() return items +def user_input(prompt, default = None, allow_empty = True): + if default == None: + while True: + ret = raw_input("%s: " % prompt) + if allow_empty or ret.strip(): + return ret + + if isinstance(default, basestring): + while True: + ret = raw_input("%s [%s]: " % (prompt, default)) + if not ret and (allow_empty or default): + return default + elif ret.strip(): + return ret + if isinstance(default, bool): + if default: + choice = "yes" + else: + choice = "no" + while True: + ret = raw_input("%s [%s]: " % (prompt, choice)) + if not ret: + return default + elif ret.lower()[0] == "y": + return True + elif ret.lower()[0] == "n": + return False + if isinstance(default, int): + while True: + try: + ret = raw_input("%s [%s]: " % (prompt, default)) + if not ret: + return default + ret = int(ret) + except ValueError: + pass + else: + return ret + +def user_input_email(prompt, default = None, allow_empty = False): + if default != None and allow_empty: + prompt += " (enter \"none\" for empty)" + while True: + ret = user_input(prompt, default, allow_empty) + if allow_empty and ret.lower() == "none": + return "" + if not ipavalidate.Email(ret, not allow_empty): + return ret.strip() + +def user_input_plain(prompt, default = None, allow_empty = True, allow_spaces = True): + while True: + ret = user_input(prompt, default, allow_empty) + if not ipavalidate.Plain(ret, not allow_empty, allow_spaces): + return ret + +def user_input_path(prompt, default = None, allow_empty = True): + if default != None and allow_empty: + prompt += " (enter \"none\" for empty)" + while True: + ret = user_input(prompt, default, allow_empty) + if allow_empty and ret.lower() == "none": + return "" + if not ipavalidate.Path(ret, not allow_empty): + return ret + class AttributeValueCompleter: ''' -- cgit