diff options
author | Kevin McCarthy <kmccarth@redhat.com> | 2007-10-23 16:46:50 -0700 |
---|---|---|
committer | Kevin McCarthy <kmccarth@redhat.com> | 2007-10-23 16:46:50 -0700 |
commit | 859291a706a8e37d6b145d27052276e927004f49 (patch) | |
tree | 19fb0ab660e0b35e5bed3227c9698811bf272d5a | |
parent | 28641544e76aa927f030f2cc980c160829e03a3d (diff) | |
download | freeipa.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.py | 4 | ||||
-rw-r--r-- | ipa-python/rpcclient.py | 6 | ||||
-rw-r--r-- | ipa-server/ipa-gui/ipagui/subcontrollers/group.py | 16 | ||||
-rw-r--r-- | ipa-server/ipa-gui/ipagui/subcontrollers/user.py | 22 | ||||
-rw-r--r-- | ipa-server/ipa-gui/ipagui/templates/groupeditform.kid | 29 | ||||
-rw-r--r-- | ipa-server/ipa-gui/ipagui/templates/usereditform.kid | 30 | ||||
-rw-r--r-- | ipa-server/xmlrpc-server/funcs.py | 5 |
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> + + <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 /> + + <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> + + <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 /> + + <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 |