Viewing file: text_config.py (7.07 KB) -rwxr-xr-x Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/python # # TUI for RHN Configuration # Copyright (c) 2001-2002 Red Hat, Inc. # # Author: Adrian Likins <alikins@redhat.com> #
# # Just a quick and simple "text" based config module # for up2date, for those folks who are afraid of text editors # """simple text config module for the up2date client"""
# NOTE: rename this module # NOTE: should be doing import * from config import * import sys import readline import string
sys.path.append("/usr/share/rhn/up2date_client/") import configUtils
up2date_config = initUp2dateConfig()
def handleBool(default_value,summary,name): valid_input = 0 if default_value == 0: default_string = "No" elif default_value == 1: default_string = "Yes" else: default_string = default_value default_prompt = "Current value: %s" % default_string name_prompt = "Attribute Name: %s" % name summary_prompt = "Comment: %s" % summary sys.stdout.write('%s\n' % name_prompt) sys.stdout.write('%s\n' % summary_prompt) sys.stdout.write('%s\n' % default_prompt)
while not valid_input: prompt = 'New Value: ' value = raw_input(prompt) if value == "": value = default_value valid_input = 1 elif string.lower(value) in ["yes","true"] or (value == 1): value = 1 valid_input = 1 elif string.lower(value) in ["no", "false"] or (value == 0): value = 0 valid_input =1 else: value = None return value
def handleOptionList(default_value, summary, name, choices): valid_input = 0 default_string = "" default_prompt = "current value: " name_prompt = "Attribute: %s" % name summary_prompt = "%s%s" % (default_prompt, default_value) print "\n%s" % name_prompt print "%s" % summary_prompt index = 0 for item in choices: print "%s: %s" % (index + 1, item) index = index + 1 while not valid_input: prompt = " < enter number of choice to use, return for default>: " value = raw_input(prompt) print try: intvalue = string.atoi(value) except ValueError: valid_input = 1 if value == "": return_value = default_value valid_input = 1 else: return_value = choices[intvalue - 1 ] valid_input = 1 return return_value
def handleList(default_value, summary, name): valid_input = 0 default_string = "" if len(default_value) > 0: for l in default_value: default_string = default_string + "%s;" % l else: default_string = "%s" % "" default_prompt = "Current value: " name_prompt = "Attribute: %s" % name summary_prompt = "Comment: %s" % summary print "\n%s" % name_prompt print "%s" % summary_prompt print "%s%s" % (default_prompt,default_string) while not valid_input: print " < return for default, C to clear list, "\ "items are ';' separated >" prompt = "New Value: " value = raw_input(prompt) print if value == "": return_value = string.join(default_value, ';') valid_input = 1 elif value == "C": return_value = "" valid_input = 1 else: return_value = value valid_input = 1
string_list = string.split(string.strip(return_value), ';') if len(string_list): if string_list[-1] == "": del string_list[-1] return string_list
def handleString(default_value, summary,name): valid_input = 0 # code to handle lists here default_string = default_value default_prompt = "Current value: %s" % default_string name_prompt = "Attribute Name: %s" % name summary_prompt = "Comment: %s" % summary sys.stdout.write('%s\n' % name_prompt) sys.stdout.write('%s\n' % summary_prompt) sys.stdout.write('%s\n' % default_prompt) while not valid_input: sys.stdout.write(" <return for default, enter two spaces "\ "and return to clear>\n") prompt = 'New Value: ' value = raw_input(prompt) if value == "": value = default_value valid_input = 1 elif value == ' ': value = "" valid_input = 1 else: valid_input = 1 return value
item_list = [] def printList(): global item_list item_list = [] count = 0 for item in up2date_config.keys(): summary = "%s" % up2date_config.info(item) default_value = up2date_config[item] name = item item_list.append(name) count_string = "%s." % count # blah, format this correctly if default_value == 0: default_value = "No" if default_value == 1: default_value = "Yes" print "%-3.3s %-18.18s %-57.57s" % (count_string,name, default_value) count = count + 1
def printDetailList(): global item_list item_list = [] count = 0 for item in up2date_config.keys(): summary = "%s" % up2date_config.info(item) default_value = up2date_config[item] name = item item_list.append(name) count_string = "%s." % count # blah, format this correctly print "%-3.3s %-18.18s%-57.57s" % (count_string,name, summary) count = count + 1 print def main(): valid_input = 0 save_values = 0 while not valid_input: printList() print print prompt = "Enter number of item to edit "\ "<return to exit, q to quit without saving>: " value = raw_input(prompt) if (value == ""): save_values = 1 break # quit without saving if (value == "q"): break if (value == "h"): printDetailList() else: try: index = string.atoi(value) name = item_list[index] summary = "%s" % up2date_config.info(name) default_value = up2date_config[name] if name == "serverURL": new_value = handleOptionList(default_value, summary, name, configUtils.getServerUrls()) elif (default_value == 0) or (default_value == 1): new_value = handleBool(default_value,summary,name) elif type(default_value) == type([]): new_value = handleList(default_value, summary, name) else: new_value = handleString(default_value, summary,name) up2date_config.set(name, new_value) except: print "There was an error" print sys.exc_type, sys.exc_value if save_values: save()
def printConfig(): for item in up2date_config.keys(): name = item value = up2date_config[item]
print "Name: %s" %name print "value: %s" % value
def save(): up2date_config.save()
if __name__ == "__main__": main()
|