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.