diff options
author | John Dennis <jdennis@redhat.com> | 2007-11-27 16:16:10 -0500 |
---|---|---|
committer | John Dennis <jdennis@redhat.com> | 2007-11-27 16:16:10 -0500 |
commit | 5d1ca46ea79d5a70362248b06dd4587518f78150 (patch) | |
tree | 2c8f3c3c9022f30219da1b5db33391241e9f5c3e /ipa-python | |
parent | 82654731ab591415c1590f62be89e9c2da87cc89 (diff) | |
download | freeipa-5d1ca46ea79d5a70362248b06dd4587518f78150.tar.gz freeipa-5d1ca46ea79d5a70362248b06dd4587518f78150.tar.xz freeipa-5d1ca46ea79d5a70362248b06dd4587518f78150.zip |
do a better job of handling attribute deletion
Diffstat (limited to 'ipa-python')
-rw-r--r-- | ipa-python/ipautil.py | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/ipa-python/ipautil.py b/ipa-python/ipautil.py index f8310ae4..8839e6cf 100644 --- a/ipa-python/ipautil.py +++ b/ipa-python/ipautil.py @@ -25,7 +25,6 @@ import logging import subprocess import os import stat -import copy import readline import traceback from types import * @@ -481,7 +480,7 @@ class AttributeValueCompleter: c = AttributeValueCompleter(attrs, defaults) c.open() - mandatory_attrs_remaining = copy.copy(mandatory_attrs) + mandatory_attrs_remaining = mandatory_attrs[:] while True: if mandatory_attrs_remaining: @@ -652,10 +651,10 @@ class AttributeValueCompleter: except EOFError: return None, None - def get_pairs(self, prompt, mandatory_attrs=None, validate_callback=None, must_match=Trueo, value_required=True): + def get_pairs(self, prompt, mandatory_attrs=None, validate_callback=None, must_match=True, value_required=True): pairs = {} if mandatory_attrs: - mandatory_attrs_remaining = copy.copy(mandatory_attrs) + mandatory_attrs_remaining = mandatory_attrs[:] else: mandatory_attrs_remaining = [] @@ -714,9 +713,8 @@ class ItemCompleter: ''' - def __init__(self, items, must_match=True): + def __init__(self, items): self.items = items - self.must_match = must_match self.initial_input = None self.item_delims = ' \t,' self.split_re = re.compile('[%s]+' % self.item_delims) @@ -768,26 +766,25 @@ class ItemCompleter: items = self.split_re.split(self.line_buffer) for item in items[:]: if not item: items.remove(item) - if self.must_match: - for item in items[:]: - if item not in self.items: - print "ERROR: %s is not valid" % (item) - items.remove(item) return items except EOFError: return items - def get_items(self, prompt): + def get_items(self, prompt, must_match=True): items = [] print "Enter name [name ...]" - print "Press <ENTER> to accept, control-D terminates input" + print "Press <ENTER> to accept, blank line or control-D terminates input" print "Pressing <TAB> auto completes name" print while True: new_items = self.read_input(prompt) - if new_items is None: break + if not new_items: break for item in new_items: + if must_match: + if item not in self.items: + print "ERROR: %s is not valid" % (item) + continue if item in items: continue items.append(item) |