diff --git a/browser/common.py b/browser/common.py index cf3f902..faa27e3 100644 --- a/browser/common.py +++ b/browser/common.py @@ -632,15 +632,17 @@ class LoggedIn(object): error=_(u'Try again later.')) def __call__(self): - form = self.request.form - camefrom = form.get('camefrom').strip('?') + #form = self.request.form + #camefrom = form.get('camefrom').strip('?') code = 'success' if IUnauthenticatedPrincipal.providedBy(self.request.principal): code = 'nosuccess' - info = form.get('message') + info = self.request.form.get('message') if info == 'error' and code == 'nosuccess': code = 'error' message = self.messages[code] + return self.request.response.redirect(self.nextUrl(message, code)) + params = [] url = camefrom or self.request.URL[-1] if '?' in url: @@ -648,7 +650,16 @@ class LoggedIn(object): params = parse_qsl(qs) params.append(('loops.messages.top:record', message)) self.request.response.redirect('%s?%s' % (url, urlencode(params))) - + + def nextUrl(self, message, code): + camefrom = self.request.form.get('camefrom').strip('?') + url = camefrom or self.request.URL[-1] + params = [] + if '?' in url: + base, qs = url.split('?', 1) + params = parse_qsl(qs) + params.append(('loops.messages.top:record', message)) + return '%s?%s' % (url, urlencode(params)) # vocabulary stuff diff --git a/browser/configure.zcml b/browser/configure.zcml index 1da55ef..062f846 100644 --- a/browser/configure.zcml +++ b/browser/configure.zcml @@ -30,13 +30,6 @@ permission="zope.Public" /> - -