From 42d5ddc559bf22792b170bdacaf19996350783e1 Mon Sep 17 00:00:00 2001 From: Rob Crittenden Date: Fri, 11 Jan 2008 11:44:23 -0500 Subject: Service principal deletion --- .../ipa-gui/ipagui/subcontrollers/principal.py | 45 ++++++++++++++++++ .../ipa-gui/ipagui/templates/principallist.kid | 6 ++- .../ipa-gui/ipagui/templates/principalshow.kid | 53 ++++++++++++++++++++++ 3 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 ipa-server/ipa-gui/ipagui/templates/principalshow.kid (limited to 'ipa-server/ipa-gui') diff --git a/ipa-server/ipa-gui/ipagui/subcontrollers/principal.py b/ipa-server/ipa-gui/ipagui/subcontrollers/principal.py index 27c4f9d63..47deb8879 100644 --- a/ipa-server/ipa-gui/ipagui/subcontrollers/principal.py +++ b/ipa-server/ipa-gui/ipagui/subcontrollers/principal.py @@ -125,6 +125,51 @@ class PrincipalController(IPAController): return dict(principals=principals, hostname=hostname, fields=ipagui.forms.principal.PrincipalFields()) + @expose("ipagui.templates.principalshow") + @identity.require(identity.not_anonymous()) + def show(self, **kw): + """Display a single service principal""" + + try: + princ = kw['principal'] + princ_dn = kw['principal_dn'] + except KeyError, e: + turbogears.flash("Principal show failed. Unable to find key %s" % e) + raise turbogears.redirect("/principal/list") + + principal = {} + + try: + # The principal info is passed in. Not going to both to re-query this. + (service,host) = princ.split('/') + h = host.split('@') + principal['service'] = service + principal['hostname'] = h[0] + principal['principal_dn'] = princ_dn + + return dict(principal=principal) + except: + turbogears.flash("Principal show failed %s" % princ) + raise turbogears.redirect("/") + + @expose() + @identity.require(identity.in_group("admins")) + def delete(self, principal): + """Delete a service principal""" + self.restrict_post() + client = self.get_ipaclient() + + print "Deleting %s" % principal + + try: + client.delete_service_principal(principal) + + turbogears.flash("Service principal deleted") + raise turbogears.redirect('/principal/list') + except (SyntaxError, ipaerror.IPAError), e: + turbogears.flash("Service principal deletion failed: " + str(e) + "
" + e.detail[0]['desc']) + raise turbogears.redirect('/principal/list') + @validate(form=principal_new_form) @identity.require(identity.not_anonymous()) def principalcreatevalidate(self, tg_errors=None, **kw): diff --git a/ipa-server/ipa-gui/ipagui/templates/principallist.kid b/ipa-server/ipa-gui/ipagui/templates/principallist.kid index ae8bdda46..8da9c15e3 100644 --- a/ipa-server/ipa-gui/ipagui/templates/principallist.kid +++ b/ipa-server/ipa-gui/ipagui/templates/principallist.kid @@ -33,10 +33,12 @@ - ${principal.hostname} + ${principal.hostname} - ${principal.service} + ${principal.service} diff --git a/ipa-server/ipa-gui/ipagui/templates/principalshow.kid b/ipa-server/ipa-gui/ipagui/templates/principalshow.kid new file mode 100644 index 000000000..c93622d3f --- /dev/null +++ b/ipa-server/ipa-gui/ipagui/templates/principalshow.kid @@ -0,0 +1,53 @@ + + + + +View Service Principal + + + + + + + +
+ + + + + +

View Service Principal

+ +

Principal

+ + + + + + + + + +
+ : + ${principal.get("hostname")}
+ : + ${principal.get("service")}
+
+ +
+ + + -- cgit