diff options
author | Pavel Zuna <pzuna@redhat.com> | 2010-02-17 15:46:43 +0100 |
---|---|---|
committer | Rob Crittenden <rcritten@redhat.com> | 2010-02-17 10:56:06 -0500 |
commit | 03967f62e9787b27d7f91684ec76c688529ff5bd (patch) | |
tree | 3dd10871fc79233d87e4c9f2a22bd809324b2176 /ipalib/frontend.py | |
parent | eab1e7cd252055eecfbc3d7a400fab027801d292 (diff) | |
download | freeipa-03967f62e9787b27d7f91684ec76c688529ff5bd.tar.gz freeipa-03967f62e9787b27d7f91684ec76c688529ff5bd.tar.xz freeipa-03967f62e9787b27d7f91684ec76c688529ff5bd.zip |
Auto-generate --all and --raw for commands, that return entries.
Diffstat (limited to 'ipalib/frontend.py')
-rw-r--r-- | ipalib/frontend.py | 35 |
1 files changed, 28 insertions, 7 deletions
diff --git a/ipalib/frontend.py b/ipalib/frontend.py index 0a1566e49..6ed388f92 100644 --- a/ipalib/frontend.py +++ b/ipalib/frontend.py @@ -27,7 +27,7 @@ from base import lock, check_name, NameSpace from plugable import Plugin from parameters import create_param, parse_param_spec, Param, Str, Flag, Password from util import make_repr -from output import Output +from output import Output, Entry, ListOfEntries from text import _, ngettext from errors import ZeroArgumentError, MaxArgumentError, OverlapError, RequiresRoot @@ -778,6 +778,19 @@ class Command(HasParam): """ for option in self._get_param_iterable('options'): yield option + for o in self.has_output: + if isinstance(o, (Entry, ListOfEntries)): + yield Flag('all', + cli_name='all', + doc='retrieve all attributes', + exclude='webui', + ) + yield Flag('raw', + cli_name='raw', + doc='print entries as stored on the server', + exclude='webui', + ) + return def validate_output(self, output): """ @@ -817,12 +830,21 @@ class Command(HasParam): continue yield param - def output_for_cli(self, textui, output, *args, **options): if not isinstance(output, dict): return - result = output.get('result') - summary = output.get('summary') + + order = [p.name for p in self.output_params()] + if options.get('all', False): + order.insert(0, 'dn') + print_all = True + else: + print_all = False + + if options.get('raw', False): + labels = None + else: + labels = dict((p.name, p.label) for p in self.output_params()) for o in self.output: if 'no_display' in self.output[o].flags: @@ -830,9 +852,9 @@ class Command(HasParam): result = output[o] if isinstance(result, (tuple, list)): - textui.print_entries(result, self.output_params) + textui.print_entries(result, order, labels, print_all) elif isinstance(result, dict): - textui.print_entry(result, self.output_params) + textui.print_entry(result, order, labels, print_all) elif isinstance(result, unicode): if o == 'summary': textui.print_summary(result) @@ -846,7 +868,6 @@ class Command(HasParam): textui.print_count(result, '%s %%d' % self.output[o].doc) - class LocalOrRemote(Command): """ A command that is explicitly executed locally or remotely. |