projects
/
cascardo
/
ipsilon.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Admin functions to delete Service Providers
[cascardo/ipsilon.git]
/
ipsilon
/
providers
/
saml2
/
admin.py
diff --git
a/ipsilon/providers/saml2/admin.py
b/ipsilon/providers/saml2/admin.py
index
7db19fc
..
4e9741d
100755
(executable)
--- 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)
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
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)
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):
class AdminPage(Page):
def __init__(self, site, config):
@@
-209,6
+216,14
@@
class AdminPage(Page):
self.providers.append(sp)
return 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)
def mount(self, page):
self.menu = page.menu
self.url = '%s/%s' % (page.url, self.name)