I was getting an error when attempting to go to a page that requires you be logged in, if I was not logged in. Traceback:
Traceback (most recent call last): File "/xxx/app/gluon/restricted.py", line 188, in restricted exec ccode in environment File "/xxx/app/applications/init/controllers/xxxxx.py", line 2712, in <module> File "/xxx/app/gluon/globals.py", line 96, in <lambda> self._caller = lambda f: f() File "/xxx/app/gluon/tools.py", line 2271, in f '?_next='+urllib.quote(next) File "/xxx/app/gluon/tools.py", line 65, in call_or_redirect redirect(f) File "/xxx/app/gluon/http.py", line 101, in redirect location = location.replace('\r', '%0D').replace('\n', '%0A') AttributeError: 'NoneType' object has no attribute 'replace' So I changed: return call_or_redirect(self.settings.on_failed_authentication, self.settings.login_url + \ '? _next='+urllib.quote(next) ) to: if self.settings.on_failed_authentication: return call_or_redirect(self.settings.on_failed_authentication, self.settings.login_url + \ '? _next='+urllib.quote(next) ) else: return call_or_redirect(self.settings.login_url + \ '? _next='+urllib.quote(next) ) Does anyone have any thoughts as to why that was happening? A print statement of self.settings.on_failed_authentication at that point displays None, which affects the workings of the call_or_redirect function.