[Freeipa-devel] [PATCH] quick user search ui

Kevin McCarthy kmccarth at redhat.com
Fri Aug 17 17:52:24 UTC 2007


Quick mockup of user search.
Changes funcs.py to now throw exception on no results.
Also contains a hack to update cn when givenName and sn are modified
(until we decide what our policy on that is).

-Kevin

-------------- next part --------------
# HG changeset patch
# User Kevin McCarthy <kmccarth at redhat.com>
# Date 1187373536 25200
# Node ID 9da05dd9abe18fdda85b1ca24a2ca806fb65e0c1
# Parent  78200f913e5cc38696d50abfe90a4af949aa15f1
Change userlist into a quick search form.
Add hack to update cn using givenname+sn (for now).
Change funcs.find_users() to not error if no results.

diff -r 78200f913e5c -r 9da05dd9abe1 ipa-server/ipa-gui/ipagui/controllers.py
--- a/ipa-server/ipa-gui/ipagui/controllers.py	Fri Aug 17 11:39:45 2007 -0400
+++ b/ipa-server/ipa-gui/ipagui/controllers.py	Fri Aug 17 10:58:56 2007 -0700
@@ -134,6 +134,11 @@ class Root(controllers.RootController):
             set_ldap_value(new_user, 'sn', kw.get('sn'))
             set_ldap_value(new_user, 'mail', kw.get('mail'))
             set_ldap_value(new_user, 'telephonenumber', kw.get('telephonenumber'))
+            #
+            # this is a hack until we decide on the policy for names/cn/sn/givenName
+            #
+            set_ldap_value(new_user, 'sn', 
+                           "%s %s" % (kw.get('givenname'), kw.get('sn')))
 
             orig_user = to_ldap_hash(orig_user)
             new_user = to_ldap_hash(new_user)
@@ -148,11 +153,14 @@ class Root(controllers.RootController):
 
 
     @expose("ipagui.templates.userlist")
-    @paginate('users', limit=3, allow_limit_override=True)
-    def userlist(self):
+    def userlist(self, **kw):
         """Retrieve a list of all users and display them in one huge list"""
-        users = client.get_all_users()
-        return dict(users=users)
+        users = None
+        uid = kw.get('uid')
+        if uid != None and len(uid) > 0:
+            users = client.find_users("*%s*" % uid)
+
+        return dict(users=users, fields=forms.user.UserFields())
 
 
     @expose("ipagui.templates.usershow")
diff -r 78200f913e5c -r 9da05dd9abe1 ipa-server/ipa-gui/ipagui/templates/userlist.kid
--- a/ipa-server/ipa-gui/ipagui/templates/userlist.kid	Fri Aug 17 11:39:45 2007 -0400
+++ b/ipa-server/ipa-gui/ipagui/templates/userlist.kid	Fri Aug 17 10:58:56 2007 -0700
@@ -6,21 +6,41 @@
 <title>User Listing</title>
 </head>
 <body>
-      <fieldset>
-        <legend>People List</legend>
-        <div>
-          Page: 
-          <span py:for="page in tg.paginate.pages">
-              <a py:if="page != tg.paginate.current_page"
-                  href="${tg.paginate.get_href(page)}">${page}</a>
-              <b py:if="page == tg.paginate.current_page">${page}</b>
-          </span>
-          <p/>
-          <span py:for="user in users">
-             <a href="${tg.url('/usershow',uid=user.uid)}">${user.cn}</a>
-            <br/>
-          </span>
+    <div id="search">
+        <form action="${tg.url('/userlist')}" method="post">
+            Search by uid:
+            <input type="text" name="uid" />
+            <input type="submit" />
+        </form>
+    </div>
+    <div py:if='users != None'>
+        <h2>Results</h2>
+        <table py:if='len(users) > 0'>
+            <tr>
+                <th>
+                    <label class="fieldlabel" py:content="fields.uid.label" />
+                </th>
+                <th>
+                    Name
+                </th>
+            </tr>
+            <tr py:for="user in users">
+                <td>
+                    <a href="${tg.url('/usershow',uid=user.uid)}">${user.uid}</a>
+                </td>
+                <td>
+                    ${user.cn}
+                </td>
+            </tr>
+        </table>
+        <div py:if='len(users) == 0'>
+            No results found.
         </div>
-       </fieldset>
+    </div>
+
+    <!-- fix for visual artifact of my crappy ui -->
+    <div>
+        <br /><br /><br /><br />
+    </div>
 </body>
 </html>
diff -r 78200f913e5c -r 9da05dd9abe1 ipa-server/xmlrpc-server/funcs.py
--- a/ipa-server/xmlrpc-server/funcs.py	Fri Aug 17 11:39:45 2007 -0400
+++ b/ipa-server/xmlrpc-server/funcs.py	Fri Aug 17 10:58:56 2007 -0700
@@ -337,7 +337,8 @@ class IPAServer:
         except ldap.LDAPError, e:
             raise xmlrpclib.Fault(1, e)
         except ipaserver.ipaldap.NoSuchEntryError:
-            raise xmlrpclib.Fault(2, "No such user")
+            results = []
+            # raise xmlrpclib.Fault(2, "No such user")
     
         users = []
         for u in results:
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 2228 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/freeipa-devel/attachments/20070817/f25052af/attachment.bin>


More information about the Freeipa-devel mailing list