X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fipsilon.git;a=blobdiff_plain;f=ipsilon%2Fproviders%2Fsaml2%2Fadmin.py;h=4e9741d4844c83f28ccc7dbb9d4072d22a597b7f;hp=7db19fc4533444f157dd4e78ffebe250cd29b8e2;hb=33bab7b0d653200d4321a71a1467ba39714005c4;hpb=b6a436f76177c0180af3e0e70a88d3f974ac717d diff --git a/ipsilon/providers/saml2/admin.py b/ipsilon/providers/saml2/admin.py index 7db19fc..4e9741d 100755 --- a/ipsilon/providers/saml2/admin.py +++ b/ipsilon/providers/saml2/admin.py @@ -103,6 +103,7 @@ class SPAdminPage(Page): def __init__(self, sp, site, parent): super(SPAdminPage, self).__init__(site) + self.parent = parent self.sp = sp self.title = sp.name self.backurl = parent.url @@ -192,6 +193,12 @@ class SPAdminPage(Page): if callable(op): return op(*args, **kwargs) + def delete(self): + self.parent.del_sp(self.sp.name) + self.sp.permanently_delete() + return self.parent.root() + delete.exposed = True + class AdminPage(Page): def __init__(self, site, config): @@ -209,6 +216,14 @@ class AdminPage(Page): self.providers.append(sp) return page + def del_sp(self, name): + try: + page = getattr(self.sp, name) + self.providers.remove(page.sp) + self.sp.del_subtree(name) + except Exception, e: # pylint: disable=broad-except + self._debug("Failed to remove provider %s: %s" % (name, str(e))) + def mount(self, page): self.menu = page.menu self.url = '%s/%s' % (page.url, self.name)