Add delete user and group to webgui.

NOTE: this doesn't handle referential integrity.
This commit is contained in:
Kevin McCarthy 2007-10-23 16:46:50 -07:00
parent 28641544e7
commit 859291a706
7 changed files with 100 additions and 12 deletions

View File

@ -299,10 +299,10 @@ class IPAClient:
return self.transport.update_group(group.origDataDict(), group.toDict()) return self.transport.update_group(group.origDataDict(), group.toDict())
def delete_group(self,group_cn): def delete_group(self,group_dn):
"""Delete a group entry.""" """Delete a group entry."""
return self.transport.delete_group(group_cn) return self.transport.delete_group(group_dn)
def add_group_to_group(self, group_cn, tgroup_cn): def add_group_to_group(self, group_cn, tgroup_cn):
"""Add a group to an existing group. """Add a group to an existing group.

View File

@ -534,12 +534,12 @@ class RPCClient:
return ipautil.unwrap_binary_data(result) return ipautil.unwrap_binary_data(result)
def delete_group(self,group_cn): def delete_group(self,group_dn):
"""Delete a group. group_cn is the cn of the group to be deleted.""" """Delete a group. group_dn is the dn of the group to be deleted."""
server = self.setup_server() server = self.setup_server()
try: try:
result = server.delete_group(group_cn) result = server.delete_group(group_dn)
except xmlrpclib.Fault, fault: except xmlrpclib.Fault, fault:
raise ipaerror.gen_exception(fault.faultCode, fault.faultString) raise ipaerror.gen_exception(fault.faultCode, fault.faultString)
except socket.error, (value, msg): except socket.error, (value, msg):

View File

@ -380,6 +380,22 @@ class GroupController(IPAController):
turbogears.flash("Group show failed: " + str(e)) turbogears.flash("Group show failed: " + str(e))
raise turbogears.redirect("/") raise turbogears.redirect("/")
@expose()
@identity.require(identity.not_anonymous())
def delete(self, dn):
"""Delete group."""
self.restrict_post()
client = self.get_ipaclient()
try:
client.delete_group(dn)
turbogears.flash("group deleted")
raise turbogears.redirect('/group/list')
except (SyntaxError, ipaerror.IPAError), e:
turbogears.flash("Group deletion failed: " + str(e) + "<br/>" + str(e.detail))
raise turbogears.redirect('/group/list')
@validate(form=group_new_form) @validate(form=group_new_form)
@identity.require(identity.not_anonymous()) @identity.require(identity.not_anonymous())
def groupcreatevalidate(self, tg_errors=None, **kw): def groupcreatevalidate(self, tg_errors=None, **kw):

View File

@ -127,9 +127,11 @@ class UserController(IPAController):
new_user.setValue('businesscategory', kw.get('businesscategory')) new_user.setValue('businesscategory', kw.get('businesscategory'))
new_user.setValue('description', kw.get('description')) new_user.setValue('description', kw.get('description'))
new_user.setValue('employeetype', kw.get('employeetype')) new_user.setValue('employeetype', kw.get('employeetype'))
new_user.setValue('manager', kw.get('manager')) if kw.get('manager'):
new_user.setValue('manager', kw.get('manager'))
new_user.setValue('roomnumber', kw.get('roomnumber')) new_user.setValue('roomnumber', kw.get('roomnumber'))
new_user.setValue('secretary', kw.get('secretary')) if kw.get('secretary'):
new_user.setValue('secretary', kw.get('secretary'))
new_user.setValue('carlicense', kw.get('carlicense')) new_user.setValue('carlicense', kw.get('carlicense'))
new_user.setValue('labeleduri', kw.get('labeleduri')) new_user.setValue('labeleduri', kw.get('labeleduri'))
@ -515,6 +517,22 @@ class UserController(IPAController):
turbogears.flash("User show failed: " + str(e)) turbogears.flash("User show failed: " + str(e))
raise turbogears.redirect("/") raise turbogears.redirect("/")
@expose()
@identity.require(identity.not_anonymous())
def delete(self, uid):
"""Delete user."""
self.restrict_post()
client = self.get_ipaclient()
try:
client.delete_user(uid)
turbogears.flash("user deleted")
raise turbogears.redirect('/user/list')
except (SyntaxError, ipaerror.IPAError), e:
turbogears.flash("User deletion failed: " + str(e))
raise turbogears.redirect('/user/list')
@validate(form=user_new_form) @validate(form=user_new_form)
@identity.require(identity.not_anonymous()) @identity.require(identity.not_anonymous())
def usercreatevalidate(self, tg_errors=None, **kw): def usercreatevalidate(self, tg_errors=None, **kw):

View File

@ -1,5 +1,11 @@
<div xmlns:py="http://purl.org/kid/ns#" <div xmlns:py="http://purl.org/kid/ns#"
class="simpleroster"> class="simpleroster">
<form style="display:none" id='deleteform'
method="post" action="${tg.url('/group/delete')}">
<input type="hidden" name="dn" value="${value.get('dn')}" />
</form>
<form action="${action}" name="${name}" method="${method}" class="tableform" <form action="${action}" name="${name}" method="${method}" class="tableform"
onsubmit="preSubmit()" > onsubmit="preSubmit()" >
@ -13,6 +19,14 @@
<input type="submit" class="submitbutton" name="submit" <input type="submit" class="submitbutton" name="submit"
value="Cancel Edit" /> value="Cancel Edit" />
</td> </td>
<td>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
<input type="button" class="deletebutton"
value="Delete Group"
onclick="return confirmDelete();"
/>
<br/><br/>
</td>
</tr> </tr>
</table> </table>
@ -46,6 +60,13 @@ from ipagui.helpers import ipahelper
evalScripts: true }); evalScripts: true });
return false; return false;
} }
function confirmDelete() {
if (confirm("Are you sure you want to delete this group?")) {
$('deleteform').submit();
}
return false;
}
</script> </script>
<div py:for="field in hidden_fields" <div py:for="field in hidden_fields"
@ -188,6 +209,14 @@ from ipagui.helpers import ipahelper
<input type="submit" class="submitbutton" name="submit" <input type="submit" class="submitbutton" name="submit"
value="Cancel Edit" /> value="Cancel Edit" />
</td> </td>
<td>
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
<input type="button" class="deletebutton"
value="Delete Group"
onclick="return confirmDelete();"
/>
</td>
</tr> </tr>
</table> </table>

View File

@ -1,5 +1,11 @@
<div xmlns:py="http://purl.org/kid/ns#" <div xmlns:py="http://purl.org/kid/ns#"
class="simpleroster"> class="simpleroster">
<form style="display:none" id='deleteform'
method="post" action="${tg.url('/user/delete')}">
<input type="hidden" name="uid" value="${value.get('uid')}" />
</form>
<form action="${action}" name="${name}" method="${method}" class="tableform" <form action="${action}" name="${name}" method="${method}" class="tableform"
onsubmit="preSubmit()"> onsubmit="preSubmit()">
@ -13,7 +19,13 @@
<input type="submit" class="submitbutton" name="submit" <input type="submit" class="submitbutton" name="submit"
value="Cancel Edit" /> value="Cancel Edit" />
</td> </td>
<td></td> <td>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
<input type="button" class="deletebutton"
value="Delete Person"
onclick="return confirmDelete();"
/>
</td>
</tr> </tr>
</table> </table>
@ -84,6 +96,13 @@ from ipagui.helpers import ipahelper
evalScripts: true }); evalScripts: true });
return false; return false;
} }
function confirmDelete() {
if (confirm("Are you sure you want to delete this person?")) {
$('deleteform').submit();
}
return false;
}
</script> </script>
@ -715,7 +734,14 @@ from ipagui.helpers import ipahelper
<input type="submit" class="submitbutton" name="submit" <input type="submit" class="submitbutton" name="submit"
value="Cancel Edit" /> value="Cancel Edit" />
</td> </td>
<td></td> <td>
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
<input type="button" class="deletebutton"
value="Delete Person"
onclick="return confirmDelete();"
/>
</td>
</tr> </tr>
</table> </table>

View File

@ -1013,13 +1013,12 @@ class IPAServer:
groups. groups.
""" """
group = self.get_entry_by_dn(group_dn, ['dn', 'cn'], opts) group = self.get_entry_by_dn(group_dn, ['dn', 'cn'], opts)
if group is None:
if len(group) != 1:
raise ipaerror.gen_exception(ipaerror.LDAP_NOT_FOUND) raise ipaerror.gen_exception(ipaerror.LDAP_NOT_FOUND)
conn = self.getConnection(opts) conn = self.getConnection(opts)
try: try:
res = conn.deleteEntry(group[0]['dn']) res = conn.deleteEntry(group_dn)
finally: finally:
self.releaseConnection(conn) self.releaseConnection(conn)
return res return res