[Freeipa-devel] [PATCH] user search client-side limit

Kevin McCarthy kmccarth at redhat.com
Tue Sep 18 21:57:18 UTC 2007


Add searchlimit parameter to userlist function.
Add limit for the editgroup ajax search.
Minor UI clean for editgroup page.

-Kevin

-------------- next part --------------
# HG changeset patch
# User Kevin McCarthy <kmccarth at redhat.com>
# Date 1190152710 25200
# Node ID 88832dc9643b967ffed0aa4377512490accfe0e4
# Parent  364d56d319c1f6ec629d00a7b53585a534ed3962
Add client-side search limit parameter for user search.
Limit editgroup user ajax search.
Minor UI cleanup for editgroup.

diff -r 364d56d319c1 -r 88832dc9643b ipa-python/ipaclient.py
--- a/ipa-python/ipaclient.py	Tue Sep 18 10:54:53 2007 -0700
+++ b/ipa-python/ipaclient.py	Tue Sep 18 14:58:30 2007 -0700
@@ -91,11 +91,11 @@ class IPAClient:
         result = self.transport.get_add_schema()
         return result
 
-    def find_users(self, criteria, sattrs=None):
+    def find_users(self, criteria, sattrs=None, searchlimit=0):
         """Return a list: counter followed by a User object for each user that
            matches the criteria. If the results are truncated, counter will
            be set to -1"""
-        result = self.transport.find_users(criteria, sattrs)
+        result = self.transport.find_users(criteria, sattrs, searchlimit)
         counter = result[0]
 
         users = [counter]
diff -r 364d56d319c1 -r 88832dc9643b ipa-python/rpcclient.py
--- a/ipa-python/rpcclient.py	Tue Sep 18 10:54:53 2007 -0700
+++ b/ipa-python/rpcclient.py	Tue Sep 18 14:58:30 2007 -0700
@@ -150,7 +150,7 @@ class RPCClient:
     
         return ipautil.unwrap_binary_data(result)
 
-    def find_users (self, criteria, sattrs=None):
+    def find_users (self, criteria, sattrs=None, searchlimit=0):
         """Return a list: counter followed by a User object for each user that
            matches the criteria. If the results are truncated, counter will
            be set to -1"""
@@ -160,7 +160,7 @@ class RPCClient:
             # None values are not allowed in XML-RPC
             if sattrs is None:
                 sattrs = "__NONE__"
-            result = server.find_users(criteria, sattrs)
+            result = server.find_users(criteria, sattrs, searchlimit)
         except xmlrpclib.Fault, fault:
             raise ipaerror.gen_exception(fault.faultCode, fault.faultString)
         except socket.error, (value, msg):
diff -r 364d56d319c1 -r 88832dc9643b ipa-server/ipa-gui/ipagui/controllers.py
--- a/ipa-server/ipa-gui/ipagui/controllers.py	Tue Sep 18 10:54:53 2007 -0700
+++ b/ipa-server/ipa-gui/ipagui/controllers.py	Tue Sep 18 14:58:30 2007 -0700
@@ -214,16 +214,18 @@ class Root(controllers.RootController):
            This method is used for ajax calls."""
         client.set_principal(identity.current.user_name)
         users = []
+        searchlimit = 100
         uid = kw.get('uid')
         if uid != None and len(uid) > 0:
             try:
-                users = client.find_users(uid.encode('utf-8'))
+                users = client.find_users(uid.encode('utf-8'), None, searchlimit)
                 counter = users[0]
                 users = users[1:]
             except ipaerror.IPAError, e:
                 turbogears.flash("User list failed: " + str(e))
 
-        return dict(users=users, uid=uid, fields=forms.user.UserFields())
+        return dict(users=users, uid=uid, fields=forms.user.UserFields(),
+                counter=counter)
 
 
     @expose("ipagui.templates.usershow")
diff -r 364d56d319c1 -r 88832dc9643b ipa-server/ipa-gui/ipagui/static/css/style.css
--- a/ipa-server/ipa-gui/ipagui/static/css/style.css	Tue Sep 18 10:54:53 2007 -0700
+++ b/ipa-server/ipa-gui/ipagui/static/css/style.css	Tue Sep 18 14:58:30 2007 -0700
@@ -146,6 +146,16 @@ body {
 .formtable th {
   width: 20%;
   text-align: right;
+}
+
+.floatlist {
+  float: right;
+  width: 50%;
+}
+
+.floatheader {
+  color: #885555;
+  font-weight: bold;
 }
 
 .small {
diff -r 364d56d319c1 -r 88832dc9643b ipa-server/ipa-gui/ipagui/templates/groupeditform.kid
--- a/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid	Tue Sep 18 10:54:53 2007 -0700
+++ b/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid	Tue Sep 18 14:58:30 2007 -0700
@@ -200,8 +200,8 @@
     <div>
       <div class="formsection">Group Members</div>
 
-      <div style="float:right; width:50%">
-        <div>To Remove:</div>
+      <div class="floatlist">
+        <div class="floatheader">To Remove:</div>
         <div id="delmembers">
         </div>
       </div>
@@ -229,8 +229,8 @@
     <div style="clear:both">
       <div class="formsection">Add Persons</div>
 
-      <div style="float:right; width:50%">
-        <div>To Add:</div>
+      <div class="floatlist">
+        <div class="floatheader">To Add:</div>
         <div id="newmembers">
         </div>
       </div>
diff -r 364d56d319c1 -r 88832dc9643b ipa-server/ipa-gui/ipagui/templates/userlistajax.kid
--- a/ipa-server/ipa-gui/ipagui/templates/userlistajax.kid	Tue Sep 18 10:54:53 2007 -0700
+++ b/ipa-server/ipa-gui/ipagui/templates/userlistajax.kid	Tue Sep 18 14:58:30 2007 -0700
@@ -23,11 +23,14 @@
     </div>
     <script type="text/javascript">
       if (results_counter == 0) {
-        $('search-results-count').appendChild(document.createTextNode(
-          "No results found for " + search_string));
+        var message = "No results found for " + search_string;
       } else {
-        $('search-results-count').appendChild(document.createTextNode(
-          "" + results_counter + " results found:"));
+        var message =  results_counter + " results found:";
       }
+      $('search-results-count').appendChild(document.createTextNode(message));
+    </script>
+    <script py:if="counter < 0">
+      $('search-results-count').appendChild(document.createTextNode(
+        " (truncated)"));
     </script>
 </div>
diff -r 364d56d319c1 -r 88832dc9643b ipa-server/xmlrpc-server/funcs.py
--- a/ipa-server/xmlrpc-server/funcs.py	Tue Sep 18 10:54:53 2007 -0700
+++ b/ipa-server/xmlrpc-server/funcs.py	Tue Sep 18 14:58:30 2007 -0700
@@ -413,7 +413,7 @@ class IPAServer:
     
         return users
 
-    def find_users (self, criteria, sattrs=None, opts=None):
+    def find_users (self, criteria, sattrs=None, searchlimit=0, opts=None):
         """Returns a list: counter followed by the results.
            If the results are truncated, counter will be set to -1."""
         # Assume the list of fields to search will come from a central
@@ -435,13 +435,13 @@ class IPAServer:
         try:
             try:
                 exact_results = conn.getListAsync(self.basedn, self.scope,
-                        exact_match_filter, sattrs)
+                        exact_match_filter, sattrs, 0, None, None, -1, searchlimit)
             except ipaerror.exception_for(ipaerror.LDAP_NOT_FOUND):
                 exact_results = [0]
 
             try:
                 partial_results = conn.getListAsync(self.basedn, self.scope,
-                        partial_match_filter, sattrs)
+                        partial_match_filter, sattrs, 0, None, None, -1, searchlimit)
             except ipaerror.exception_for(ipaerror.LDAP_NOT_FOUND):
                 partial_results = [0]
         finally:
-------------- 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/20070918/5411c5f9/attachment.bin>


More information about the Freeipa-devel mailing list