From 0e355a734fa6c31c10282580599b0caca56c35a2 Mon Sep 17 00:00:00 2001
From: Kevin McCarthy
" + str(e.detail))
return dict(form=group_new_form, tg_template='ipagui.templates.groupnew')
+
+ @expose("ipagui.templates.groupedit")
+ @identity.require(identity.not_anonymous())
+ def groupedit(self, cn, tg_errors=None):
+ """Displays the edit group form"""
+ if tg_errors:
+ turbogears.flash("There was a problem with the form!")
+
+ client.set_principal(identity.current.user_name)
+ group = client.get_group_by_cn(cn, group_fields)
+ group_dict = group.toDict()
+
+ # store a copy of the original group for the update later
+ group_data = b64encode(dumps(group_dict))
+ group_dict['group_orig'] = group_data
+ return dict(form=group_edit_form, group=group_dict)
+
+ @expose()
+ @identity.require(identity.not_anonymous())
+ def groupupdate(self, **kw):
+ """Updates an existing group"""
+ restrict_post()
+ client.set_principal(identity.current.user_name)
+ if kw.get('submit') == 'Cancel Edit':
+ turbogears.flash("Edit group cancelled")
+ raise turbogears.redirect('/groupshow', cn=kw.get('cn'))
+
+ tg_errors, kw = self.groupupdatevalidate(**kw)
+ if tg_errors:
+ return dict(form=group_edit_form, group=kw,
+ tg_template='ipagui.templates.groupedit')
+
+ try:
+ orig_group_dict = loads(b64decode(kw.get('group_orig')))
+
+ new_group = ipa.group.Group(orig_group_dict)
+ new_group.setValue('description', kw.get('description'))
+ if kw.get('gidnumber'):
+ new_group.setValue('gidnumber', str(kw.get('gidnumber')))
+
+ rv = client.update_group(new_group)
+ turbogears.flash("%s updated!" % kw['cn'])
+ raise turbogears.redirect('/groupshow', cn=kw['cn'])
+ except ipaerror.IPAError, e:
+ turbogears.flash("User update failed: " + str(e))
+ return dict(form=group_edit_form, group=kw,
+ tg_template='ipagui.templates.groupedit')
+
+ @expose("ipagui.templates.grouplist")
+ @identity.require(identity.not_anonymous())
+ def grouplist(self, **kw):
+ """Search for groups and display results"""
+ client.set_principal(identity.current.user_name)
+ groups = None
+ # counter = 0
+ criteria = kw.get('criteria')
+ if criteria != None and len(criteria) > 0:
+ try:
+ groups = client.find_groups(criteria.encode('utf-8'))
+ # counter = groups[0]
+ # groups = groups[1:]
+ # if counter == -1:
+ # turbogears.flash("These results are truncated.
" +
+ # "Please refine your search and try again.")
+ except ipaerror.IPAError, e:
+ turbogears.flash("Find groups failed: " + str(e))
+ raise turbogears.redirect("/grouplist")
+
+ return dict(groups=groups, criteria=criteria, fields=forms.group.GroupFields())
+
+ @expose("ipagui.templates.groupshow")
+ @identity.require(identity.not_anonymous())
+ def groupshow(self, cn):
+ """Retrieve a single group for display"""
+ client.set_principal(identity.current.user_name)
+ try:
+ group = client.get_group_by_cn(cn, group_fields)
+ return dict(group=group.toDict(), fields=forms.group.GroupFields())
+ except ipaerror.IPAError, e:
+ turbogears.flash("Group show failed: " + str(e))
+ raise turbogears.redirect("/")
+
@validate(form=group_new_form)
@identity.require(identity.not_anonymous())
def groupcreatevalidate(self, tg_errors=None, **kw):
diff --git a/ipa-server/ipa-gui/ipagui/forms/group.py b/ipa-server/ipa-gui/ipagui/forms/group.py
index 0dd9ef2d..fd915b2c 100644
--- a/ipa-server/ipa-gui/ipagui/forms/group.py
+++ b/ipa-server/ipa-gui/ipagui/forms/group.py
@@ -32,13 +32,15 @@ class GroupNewForm(widgets.Form):
class GroupEditValidator(validators.Schema):
- gidnumber = widgets.TextField(name="gidnumber", label="GID")
- description = widgets.TextField(name="description", label="Description")
+ gidnumber = validators.Int(not_empty=False)
+ description = validators.String(not_empty=False)
class GroupEditForm(widgets.Form):
params = ['group']
- fields = [GroupFields.gidnumber, GroupFields.description]
+ fields = [GroupFields.gidnumber, GroupFields.description,
+ GroupFields.cn_hidden,
+ GroupFields.group_orig]
validator = GroupEditValidator()
diff --git a/ipa-server/ipa-gui/ipagui/templates/groupedit.kid b/ipa-server/ipa-gui/ipagui/templates/groupedit.kid
new file mode 100644
index 00000000..14a81618
--- /dev/null
+++ b/ipa-server/ipa-gui/ipagui/templates/groupedit.kid
@@ -0,0 +1,21 @@
+
+
+
+
+ Edit Group
+ ${len(groups)} results returned:
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${group.cn}
+
+
+ ${group.description}
+
+ No results found for "${criteria}"
+ View Group
+
+
+
+
+ edit
+
+
+
diff --git a/ipa-server/ipa-gui/ipagui/templates/master.kid b/ipa-server/ipa-gui/ipagui/templates/master.kid
index b1e5ad84..2675d3c4 100644
--- a/ipa-server/ipa-gui/ipagui/templates/master.kid
+++ b/ipa-server/ipa-gui/ipagui/templates/master.kid
@@ -70,7 +70,7 @@
+
+
+
+ :
+
+ ${group.get("cn")}
+
+
+
+
+ :
+
+ ${group.get("description")}
+
+
+
+ :
+
+ ${group.get("gidnumber")}
+
Add Group
- Find Groups
+ Find Groups
Manage Policy
--
cgit