summaryrefslogtreecommitdiffstats
path: root/ipa-server/ipa-gui/ipagui/controllers.py
diff options
context:
space:
mode:
authorKevin McCarthy <kmccarth@redhat.com>2007-09-27 14:51:35 -0700
committerKevin McCarthy <kmccarth@redhat.com>2007-09-27 14:51:35 -0700
commitd13c6efc40d0e94f056dca2b0869b7443afb6b39 (patch)
tree10bf0008b2a90aad30982e4e71d154e6e61e6c7d /ipa-server/ipa-gui/ipagui/controllers.py
parent0431a536e552cc8f988d4e4076ea56cfeca49385 (diff)
downloadfreeipa-d13c6efc40d0e94f056dca2b0869b7443afb6b39.tar.gz
freeipa-d13c6efc40d0e94f056dca2b0869b7443afb6b39.tar.xz
freeipa-d13c6efc40d0e94f056dca2b0869b7443afb6b39.zip
Adds nested group handling to the view and edit group pages.
Renames the ajax seach page, because it's tightly bound to the group edit page. This isn't super polished, but the basic functionality is there.
Diffstat (limited to 'ipa-server/ipa-gui/ipagui/controllers.py')
-rw-r--r--ipa-server/ipa-gui/ipagui/controllers.py76
1 files changed, 47 insertions, 29 deletions
diff --git a/ipa-server/ipa-gui/ipagui/controllers.py b/ipa-server/ipa-gui/ipagui/controllers.py
index cd47da2fe..b72afdefb 100644
--- a/ipa-server/ipa-gui/ipagui/controllers.py
+++ b/ipa-server/ipa-gui/ipagui/controllers.py
@@ -224,26 +224,6 @@ class Root(controllers.RootController):
return dict(users=users, uid=uid, fields=forms.user.UserFields())
- @expose("ipagui.templates.userlistajax")
- @identity.require(identity.not_anonymous())
- def userlist_ajax(self, **kw):
- """Searches for users and displays list of results in a table.
- This method is used for ajax calls."""
- client.set_krbccache(os.environ["KRB5CCNAME"])
- users = []
- searchlimit = 100
- uid = kw.get('uid')
- if uid != None and len(uid) > 0:
- try:
- 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(),
- counter=counter)
-
@expose("ipagui.templates.usershow")
@identity.require(identity.not_anonymous())
@@ -434,6 +414,40 @@ class Root(controllers.RootController):
turbogears.flash("Group add failed: " + str(e) + "<br/>" + str(e.detail))
return dict(form=group_new_form, tg_template='ipagui.templates.groupnew')
+ @expose("ipagui.templates.groupeditsearch")
+ @identity.require(identity.not_anonymous())
+ def groupedit_search(self, **kw):
+ """Searches for users+groups and displays list of results in a table.
+ This method is used for the ajax search on the group edit page.
+ It's not re-usable because the ajax/dom manipulation is tightly
+ bound to the groupedit page"""
+ client.set_krbccache(os.environ["KRB5CCNAME"])
+ users = []
+ groups = []
+ counter = 0
+ searchlimit = 100
+ criteria = kw.get('criteria')
+ if criteria != None and len(criteria) > 0:
+ try:
+ users = client.find_users(criteria.encode('utf-8'), None, searchlimit)
+ users_counter = users[0]
+ users = users[1:]
+
+ groups = client.find_groups(criteria.encode('utf-8'), None,
+ searchlimit)
+ groups_counter = groups[0]
+ groups = groups[1:]
+
+ if users_counter < 0 or groups_counter < 0:
+ counter = -1
+ else:
+ counter = users_counter + groups_counter
+ except ipaerror.IPAError, e:
+ turbogears.flash("search failed: " + str(e))
+
+ return dict(users=users, groups=groups, criteria=criteria,
+ counter=counter)
+
@expose("ipagui.templates.groupedit")
@identity.require(identity.not_anonymous())
@@ -461,13 +475,15 @@ class Root(controllers.RootController):
member_dns = [member_dns]
# TODO: convert this into an efficient (single) function call
- member_users = map(
- lambda dn: client.get_user_by_dn(dn, ['givenname', 'sn', 'uid']),
+ # Note: this isn't quite right, since it can be users and groups.
+ members = map(
+ lambda dn: client.get_user_by_dn(dn, ['dn', 'givenname', 'sn',
+ 'uid', 'cn']),
member_dns)
# Map users into an array of dicts, which can be serialized
# (so we don't have to do this on each round trip)
- member_dicts = map(lambda user: user.toDict(), member_users)
+ member_dicts = map(lambda member: member.toDict(), members)
# store a copy of the original group for the update later
group_data = b64encode(dumps(group_dict))
@@ -526,7 +542,7 @@ class Root(controllers.RootController):
#
kw['group_orig'] = b64encode(dumps(new_group.toDict()))
except ipaerror.IPAError, e:
- turbogears.flash("User update failed: " + str(e))
+ turbogears.flash("Group update failed: " + str(e))
return dict(form=group_edit_form, group=kw, members=member_dicts,
tg_template='ipagui.templates.groupedit')
@@ -543,7 +559,7 @@ class Root(controllers.RootController):
utf8_encode_values(dnadds), kw.get('cn'))
kw['dnadd'] = failed_adds
except ipaerror.IPAError, e:
- turbogears.flash("User update failed: " + str(e))
+ turbogears.flash("Group update failed: " + str(e))
return dict(form=group_edit_form, group=kw, members=member_dicts,
tg_template='ipagui.templates.groupedit')
@@ -560,7 +576,7 @@ class Root(controllers.RootController):
utf8_encode_values(dndels), kw.get('cn'))
kw['dndel'] = failed_dels
except ipaerror.IPAError, e:
- turbogears.flash("User update failed: " + str(e))
+ turbogears.flash("Group update failed: " + str(e))
return dict(form=group_edit_form, group=kw, members=member_dicts,
tg_template='ipagui.templates.groupedit')
@@ -627,10 +643,12 @@ class Root(controllers.RootController):
member_dns = [member_dns]
# TODO: convert this into an efficient (single) function call
- member_users = map(
- lambda dn: client.get_user_by_dn(dn, ['givenname', 'sn', 'uid']),
+ # Note: this isn't quite right, since it can be users and groups.
+ members = map(
+ lambda dn: client.get_user_by_dn(dn, ['dn', 'givenname', 'sn',
+ 'uid', 'cn']),
member_dns)
- member_dicts = map(lambda user: user.toDict(), member_users)
+ member_dicts = map(lambda member: member.toDict(), members)
return dict(group=group_dict, fields=forms.group.GroupFields(),
members = member_dicts)