X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fipsilon.git;a=blobdiff_plain;f=ipsilon%2Flogin%2Fcommon.py;fp=ipsilon%2Flogin%2Fcommon.py;h=3f2b00786b2cbcbe79da8b4ff5232cb968110715;hp=9496a4bb8662509176109cbe587a182e39f1c7f2;hb=c42a8dc97e454f66b5e3d1a99b259e38e8496f85;hpb=e5a7774427adf44c2100c5535aca569f938e7c2d diff --git a/ipsilon/login/common.py b/ipsilon/login/common.py index 9496a4b..3f2b007 100644 --- a/ipsilon/login/common.py +++ b/ipsilon/login/common.py @@ -142,6 +142,19 @@ class LoginManagerBase(ConfigHelper, PluginObject): except (ValueError, IndexError): return None + def other_login_stacks(self): + plugins = self._site[FACILITY] + stack = list() + try: + idx = plugins.enabled.index(self.name) + except (ValueError, IndexError): + idx = None + for i in range(0, len(plugins.enabled)): + if i == idx: + continue + stack.append(plugins.available[plugins.enabled[i]]) + return stack + def on_enable(self): # and add self to the root @@ -182,11 +195,14 @@ class LoginFormBase(LoginPageBase): return op(*args, **kwargs) def create_tmpl_context(self, **kwargs): - next_url = None - next_login = self.lm.next_login() - if next_login: - next_url = '%s?%s' % (next_login.path, - self.trans.get_GET_arg()) + other_stacks = None + other_login_stacks = self.lm.other_login_stacks() + if other_login_stacks: + other_stacks = list() + for ls in other_login_stacks: + url = '%s?%s' % (ls.path, self.trans.get_GET_arg()) + name = ls.name + other_stacks.append({'url': url, 'name': name}) cookie = SecureCookie(USERNAME_COOKIE) cookie.receive() @@ -210,7 +226,7 @@ class LoginFormBase(LoginPageBase): "username_text": self.lm.username_text, "password_text": self.lm.password_text, "description": self.lm.help_text, - "next_url": next_url, + "other_stacks": other_stacks, "username": username, "login_target": target, "cancel_url": '%s/login/cancel?%s' % (self.basepath,