summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin McCarthy <kmccarth@redhat.com>2007-10-23 16:46:50 -0700
committerKevin McCarthy <kmccarth@redhat.com>2007-10-23 16:46:50 -0700
commit859291a706a8e37d6b145d27052276e927004f49 (patch)
tree19fb0ab660e0b35e5bed3227c9698811bf272d5a
parent28641544e76aa927f030f2cc980c160829e03a3d (diff)
downloadfreeipa.git-859291a706a8e37d6b145d27052276e927004f49.tar.gz
freeipa.git-859291a706a8e37d6b145d27052276e927004f49.tar.xz
freeipa.git-859291a706a8e37d6b145d27052276e927004f49.zip
Add delete user and group to webgui.
NOTE: this doesn't handle referential integrity.
-rw-r--r--ipa-python/ipaclient.py4
-rw-r--r--ipa-python/rpcclient.py6
-rw-r--r--ipa-server/ipa-gui/ipagui/subcontrollers/group.py16
-rw-r--r--ipa-server/ipa-gui/ipagui/subcontrollers/user.py22
-rw-r--r--ipa-server/ipa-gui/ipagui/templates/groupeditform.kid29
-rw-r--r--ipa-server/ipa-gui/ipagui/templates/usereditform.kid30
-rw-r--r--ipa-server/xmlrpc-server/funcs.py5
7 files changed, 100 insertions, 12 deletions
diff --git a/ipa-python/ipaclient.py b/ipa-python/ipaclient.py
index a7bd8183..9464ee77 100644
--- a/ipa-python/ipaclient.py
+++ b/ipa-python/ipaclient.py
@@ -299,10 +299,10 @@ class IPAClient:
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."""
- return self.transport.delete_group(group_cn)
+ return self.transport.delete_group(group_dn)
def add_group_to_group(self, group_cn, tgroup_cn):
"""Add a group to an existing group.
diff --git a/ipa-python/rpcclient.py b/ipa-python/rpcclient.py
index 615f4a0a..a69fd133 100644
--- a/ipa-python/rpcclient.py
+++ b/ipa-python/rpcclient.py
@@ -534,12 +534,12 @@ class RPCClient:
return ipautil.unwrap_binary_data(result)
- def delete_group(self,group_cn):
- """Delete a group. group_cn is the cn of the group to be deleted."""
+ def delete_group(self,group_dn):
+ """Delete a group. group_dn is the dn of the group to be deleted."""
server = self.setup_server()
try:
- result = server.delete_group(group_cn)
+ result = server.delete_group(group_dn)
except xmlrpclib.Fault, fault:
raise ipaerror.gen_exception(fault.faultCode, fault.faultString)
except socket.error, (value, msg):
diff --git a/ipa-server/ipa-gui/ipagui/subcontrollers/group.py b/ipa-server/ipa-gui/ipagui/subcontrollers/group.py
index 4c6204c3..d4663f7a 100644
--- a/ipa-server/ipa-gui/ipagui/subcontrollers/group.py
+++ b/ipa-server/ipa-gui/ipagui/subcontrollers/group.py
@@ -380,6 +380,22 @@ class GroupController(IPAController):
turbogears.flash("Group show failed: " + str(e))
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)
@identity.require(identity.not_anonymous())
def groupcreatevalidate(self, tg_errors=None, **kw):
diff --git a/ipa-server/ipa-gui/ipagui/subcontrollers/user.py b/ipa-server/ipa-gui/ipagui/subcontrollers/user.py
index 58e6c6ec..570ca2a4 100644
--- a/ipa-server/ipa-gui/ipagui/subcontrollers/user.py
+++ b/ipa-server/ipa-gui/ipagui/subcontrollers/user.py
@@ -127,9 +127,11 @@ class UserController(IPAController):
new_user.setValue('businesscategory', kw.get('businesscategory'))
new_user.setValue('description', kw.get('description'))
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('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('labeleduri', kw.get('labeleduri'))
@@ -515,6 +517,22 @@ class UserController(IPAController):
turbogears.flash("User show failed: " + str(e))
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)
@identity.require(identity.not_anonymous())
def usercreatevalidate(self, tg_errors=None, **kw):
diff --git a/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid b/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid
index 9b76daa0..2131193f 100644
--- a/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid
+++ b/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid
@@ -1,5 +1,11 @@
<div xmlns:py="http://purl.org/kid/ns#"
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"
onsubmit="preSubmit()" >
@@ -13,6 +19,14 @@
<input type="submit" class="submitbutton" name="submit"
value="Cancel Edit" />
</td>
+ <td>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ <input type="button" class="deletebutton"
+ value="Delete Group"
+ onclick="return confirmDelete();"
+ />
+ <br/><br/>
+ </td>
</tr>
</table>
@@ -46,6 +60,13 @@ from ipagui.helpers import ipahelper
evalScripts: true });
return false;
}
+
+ function confirmDelete() {
+ if (confirm("Are you sure you want to delete this group?")) {
+ $('deleteform').submit();
+ }
+ return false;
+ }
</script>
<div py:for="field in hidden_fields"
@@ -188,6 +209,14 @@ from ipagui.helpers import ipahelper
<input type="submit" class="submitbutton" name="submit"
value="Cancel Edit" />
</td>
+ <td>
+ <br />
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ <input type="button" class="deletebutton"
+ value="Delete Group"
+ onclick="return confirmDelete();"
+ />
+ </td>
</tr>
</table>
diff --git a/ipa-server/ipa-gui/ipagui/templates/usereditform.kid b/ipa-server/ipa-gui/ipagui/templates/usereditform.kid
index de28f62f..3a111961 100644
--- a/ipa-server/ipa-gui/ipagui/templates/usereditform.kid
+++ b/ipa-server/ipa-gui/ipagui/templates/usereditform.kid
@@ -1,5 +1,11 @@
<div xmlns:py="http://purl.org/kid/ns#"
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"
onsubmit="preSubmit()">
@@ -13,7 +19,13 @@
<input type="submit" class="submitbutton" name="submit"
value="Cancel Edit" />
</td>
- <td></td>
+ <td>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ <input type="button" class="deletebutton"
+ value="Delete Person"
+ onclick="return confirmDelete();"
+ />
+ </td>
</tr>
</table>
@@ -84,6 +96,13 @@ from ipagui.helpers import ipahelper
evalScripts: true });
return false;
}
+
+ function confirmDelete() {
+ if (confirm("Are you sure you want to delete this person?")) {
+ $('deleteform').submit();
+ }
+ return false;
+ }
</script>
@@ -715,7 +734,14 @@ from ipagui.helpers import ipahelper
<input type="submit" class="submitbutton" name="submit"
value="Cancel Edit" />
</td>
- <td></td>
+ <td>
+ <br />
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ <input type="button" class="deletebutton"
+ value="Delete Person"
+ onclick="return confirmDelete();"
+ />
+ </td>
</tr>
</table>
diff --git a/ipa-server/xmlrpc-server/funcs.py b/ipa-server/xmlrpc-server/funcs.py
index 7ce83d57..257e84d2 100644
--- a/ipa-server/xmlrpc-server/funcs.py
+++ b/ipa-server/xmlrpc-server/funcs.py
@@ -1013,13 +1013,12 @@ class IPAServer:
groups.
"""
group = self.get_entry_by_dn(group_dn, ['dn', 'cn'], opts)
-
- if len(group) != 1:
+ if group is None:
raise ipaerror.gen_exception(ipaerror.LDAP_NOT_FOUND)
conn = self.getConnection(opts)
try:
- res = conn.deleteEntry(group[0]['dn'])
+ res = conn.deleteEntry(group_dn)
finally:
self.releaseConnection(conn)
return res