diff --git a/ipa-python/ipaclient.py b/ipa-python/ipaclient.py index a7bd81833..9464ee77e 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 615f4a0a5..a69fd1338 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 4c6204c36..d4663f7ae 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) + "
" + 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 58e6c6ec5..570ca2a42 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 9b76daa01..2131193f3 100644 --- a/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid +++ b/ipa-server/ipa-gui/ipagui/templates/groupeditform.kid @@ -1,5 +1,11 @@
+ + +
@@ -13,6 +19,14 @@ + +           + +

+ @@ -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; + }
+ +
+           + + diff --git a/ipa-server/ipa-gui/ipagui/templates/usereditform.kid b/ipa-server/ipa-gui/ipagui/templates/usereditform.kid index de28f62f0..3a1119610 100644 --- a/ipa-server/ipa-gui/ipagui/templates/usereditform.kid +++ b/ipa-server/ipa-gui/ipagui/templates/usereditform.kid @@ -1,5 +1,11 @@
+ + + + +
@@ -13,7 +19,13 @@ - + +           + + @@ -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; + } @@ -715,7 +734,14 @@ from ipagui.helpers import ipahelper - + +
+           + + diff --git a/ipa-server/xmlrpc-server/funcs.py b/ipa-server/xmlrpc-server/funcs.py index 7ce83d576..257e84d2e 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