[Freeipa-devel] [PATCH] 228 add function to prompt for entry after multiple results in -find

Rob Crittenden rcritten at redhat.com
Mon Jun 8 21:42:25 UTC 2009


Rob Crittenden wrote:
> The -find commands right now just dump all the data that was found. This 
> function can be used to display a list of the results so the user can 
> select a specfic record that will be displayed.
> 
> I think that we'll ultimitely implement this within the LDAPObject class 
> to make it easier on plugin developers. What they will need to provide 
> is the format line that will be used and the attributes to display.
> 
> The code looks something like:
> 
>         selected = textui.select_entry(users,
>                                        "%(givenname)s %(sn)s (%(uid)s)",
>                                        ("givenname", "sn", "uid"))
>         if selected == -2:
>             # Don't show anything else
>             return
> 
>         if selected >= 0:
>             users = [users[selected]]
>             counter = 1
> 
>         for u in xrange(counter):
>             cmd = api.Command['user_show']
>             result = cmd(users[u]['uid'].decode('UTF-8'), **options)
>             if callable(cmd.output_for_cli):
>                 for param in cmd.params():
>                     if param.password and param.name in options:
>                         del options[param.name]
>                 (args, options) = cmd.params_2_args_options(**options)
>                 cmd.output_for_cli(self.api.Backend.textui, result, 
> *args, **options)
> 
> This demonstrates the full code in output_for_cli() for the current user 
> plugin. It looks like this to the user:
> 
> % ipa user-find tim
> ---------------
> Found 3 matches
> ---------------
> 1: Tim User (tuser1)
> 2: Tim User (tuser2)
> 3: Tim User (tuser3)
> Choose one: (1 - 3), a for all, q to quit:
> 
> By doing this in a higher-level class we'll save a lot of coding. We 
> just need to pass in the format string, the list of attributes in that 
> format string and the command to call to display a full entry.
> 
> This also lets us centralize showing an entry to one function instead of 
> splitting it between -find and -show.
> 
> If this is called without a tty (like redirecting to a file) then all 
> entries are returned.
> 
> What this doesn't do is any sort of paging. I'm not sure if we want that 
> or not. If 100 entries are returned this could get pretty ugly.
> 
> rob

The patch is always helpful.

rob
-------------- next part --------------
A non-text attachment was scrubbed...
Name: freeipa-228-select.patch
Type: application/mbox
Size: 4781 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/freeipa-devel/attachments/20090608/572666e6/attachment.mbox>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3245 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://listman.redhat.com/archives/freeipa-devel/attachments/20090608/572666e6/attachment.bin>


More information about the Freeipa-devel mailing list