mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Misc small fixes:
- Members of groups are clickable - Combine name and uid into a single column in find users - Remove license plate from searching - Mailto links on user emails - Add timelimit to finds. This is experimental... - Fix usersearch to only search on objectClass=Person - Change search to use get parameter
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
</head>
|
||||
<body>
|
||||
<div id="search">
|
||||
<form action="${tg.url('/grouplist')}" method="post">
|
||||
<form action="${tg.url('/grouplist')}" method="get">
|
||||
<input id="criteria" type="text" name="criteria" value="${criteria}" />
|
||||
<input type="submit" value="Find Groups"/>
|
||||
</form>
|
||||
|
||||
@@ -37,8 +37,10 @@
|
||||
<?python
|
||||
member_name = "%s %s" % (member.get('givenname', ''),
|
||||
member.get('sn', ''))
|
||||
member_uid = member.get('uid')
|
||||
?>
|
||||
${member_name} (${member.get('uid')})
|
||||
<a href="${tg.url('usershow', uid=member_uid)}"
|
||||
>${member_name}</a> (${member_uid})
|
||||
</div>
|
||||
|
||||
<br/>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<body>
|
||||
<script type="text/javascript" charset="utf-8" src="${tg.url('/static/javascript/tablekit.js')}"></script>
|
||||
<div id="search">
|
||||
<form action="${tg.url('/userlist')}" method="post">
|
||||
<form action="${tg.url('/userlist')}" method="get">
|
||||
<input id="uid" type="text" name="uid" value="${uid}" />
|
||||
<input type="submit" value="Find People"/>
|
||||
</form>
|
||||
@@ -22,10 +22,7 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
${fields.uid.label}
|
||||
</th>
|
||||
<th>
|
||||
Name
|
||||
Person
|
||||
</th>
|
||||
<th>
|
||||
Phone
|
||||
@@ -36,18 +33,14 @@
|
||||
<th>
|
||||
Title
|
||||
</th>
|
||||
<th>
|
||||
License Plate
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr py:for="user in users">
|
||||
<td>
|
||||
<a href="${tg.url('/usershow',uid=user.uid)}">${user.uid}</a>
|
||||
</td>
|
||||
<td>
|
||||
${user.givenName} ${user.sn}
|
||||
<a href="${tg.url('/usershow',uid=user.uid)}"
|
||||
>${user.givenName} ${user.sn}</a>
|
||||
(${user.uid})
|
||||
</td>
|
||||
<td>
|
||||
${user.telephoneNumber}
|
||||
@@ -58,9 +51,6 @@
|
||||
<td>
|
||||
${user.title}
|
||||
</td>
|
||||
<td>
|
||||
${user.carLicense}
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@@ -70,7 +70,7 @@ else:
|
||||
<th>
|
||||
<label class="fieldlabel" py:content="fields.mail.label" />:
|
||||
</th>
|
||||
<td>${user.get("mail")}</td>
|
||||
<td><a href="mailto:${user.get('mail')}">${user.get("mail")}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
|
||||
@@ -343,7 +343,8 @@ class IPAdmin(SimpleLDAPObject):
|
||||
for result in result_list:
|
||||
entries.append(result)
|
||||
type, result_list = self.result(msgid, 0)
|
||||
except (ldap.ADMINLIMIT_EXCEEDED, ldap.SIZELIMIT_EXCEEDED), e:
|
||||
except (ldap.ADMINLIMIT_EXCEEDED, ldap.SIZELIMIT_EXCEEDED,
|
||||
ldap.TIMELIMIT_EXCEEDED), e:
|
||||
partial = 1
|
||||
except ldap.LDAPError, e:
|
||||
raise ipaerror.gen_exception(ipaerror.LDAP_DATABASE_ERROR, None, e)
|
||||
|
||||
@@ -451,10 +451,14 @@ class IPAServer:
|
||||
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."""
|
||||
|
||||
# TODO - retrieve from config
|
||||
timelimit = 2
|
||||
|
||||
# Assume the list of fields to search will come from a central
|
||||
# configuration repository. A good format for that would be
|
||||
# a comma-separated list of fields
|
||||
search_fields_conf_str = "uid,givenName,sn,telephoneNumber,ou,carLicense,title"
|
||||
search_fields_conf_str = "uid,givenName,sn,telephoneNumber,ou,title"
|
||||
search_fields = string.split(search_fields_conf_str, ",")
|
||||
|
||||
criteria = self.__safe_filter(criteria)
|
||||
@@ -466,17 +470,27 @@ class IPAServer:
|
||||
(exact_match_filter, partial_match_filter) = self.__generate_match_filters(
|
||||
search_fields, criteria_words)
|
||||
|
||||
#
|
||||
# further constrain search to just the objectClass
|
||||
# TODO - need to parameterize this into generate_match_filters,
|
||||
# and work it into the field-specification search feature
|
||||
#
|
||||
exact_match_filter = "(&(objectClass=person)%s)" % exact_match_filter
|
||||
partial_match_filter = "(&(objectClass=person)%s)" % partial_match_filter
|
||||
|
||||
conn = self.getConnection(opts)
|
||||
try:
|
||||
try:
|
||||
exact_results = conn.getListAsync(self.basedn, self.scope,
|
||||
exact_match_filter, sattrs, 0, None, None, -1, searchlimit)
|
||||
exact_match_filter, sattrs, 0, None, None, timelimit,
|
||||
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, 0, None, None, -1, searchlimit)
|
||||
partial_match_filter, sattrs, 0, None, None, timelimit,
|
||||
searchlimit)
|
||||
except ipaerror.exception_for(ipaerror.LDAP_NOT_FOUND):
|
||||
partial_results = [0]
|
||||
finally:
|
||||
@@ -654,6 +668,10 @@ class IPAServer:
|
||||
"""Return a list containing a User object for each
|
||||
existing group that matches the criteria.
|
||||
"""
|
||||
|
||||
# TODO - retrieve from config
|
||||
timelimit = 2
|
||||
|
||||
# Assume the list of fields to search will come from a central
|
||||
# configuration repository. A good format for that would be
|
||||
# a comma-separated list of fields
|
||||
@@ -684,13 +702,15 @@ class IPAServer:
|
||||
try:
|
||||
try:
|
||||
exact_results = conn.getListAsync(self.basedn, self.scope,
|
||||
exact_match_filter, sattrs, 0, None, None, -1, searchlimit)
|
||||
exact_match_filter, sattrs, 0, None, None, timelimit,
|
||||
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, 0, None, None, -1, searchlimit)
|
||||
partial_match_filter, sattrs, 0, None, None, timelimit,
|
||||
searchlimit)
|
||||
except ipaerror.exception_for(ipaerror.LDAP_NOT_FOUND):
|
||||
partial_results = [0]
|
||||
finally:
|
||||
|
||||
Reference in New Issue
Block a user