Originally created by: sf-overlords
Created by: gbernhardt
Created date: 2010-05-26 22:19:36.252000
Assigned to:nobody
This probably won't affect users in production, but it's annoying during development (including for OSS developers, of course).
Expected behavior: If the user I'm logged in as is deleted, I'm automatically logged out.
Actual behavior: All forge pages raise an exception. This continues until the pyforge cookie is manually deleted.
Steps to reproduce:
1. Log in as a user
2. Delete the user (this also happens if the user is then recreated)
3. Load any Forge page
It shows this traceback:
URL: http://localhost:8080/
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/weberror/evalexception.py', line 431 in respond
app_iter = self.application(environ, detect_start_response)
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/tw/core/middleware.py', line 43 in __call__
return self.wsgi_app(environ, start_response)
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/tw/core/middleware.py', line 68 in wsgi_app
resp = req.get_response(self.application)
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/webob/request.py', line 919 in get_response
application, catch_exc_info=False)
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/webob/request.py', line 887 in call_application
app_iter = application(self.environ, start_response)
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/tw/core/resource_injector.py', line 68 in _injector
resp = req.get_response(app)
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/webob/request.py', line 919 in get_response
application, catch_exc_info=False)
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/webob/request.py', line 887 in call_application
app_iter = application(self.environ, start_response)
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/beaker/middleware.py', line 73 in __call__
return self.app(environ, start_response)
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/beaker/middleware.py', line 152 in __call__
return self.wrap_app(environ, session_start_response)
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/routes/middleware.py', line 131 in __call__
response = self.app(environ, start_response)
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/pylons/wsgiapp.py', line 125 in __call__
response = self.dispatch(controller, environ, start_response)
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/pylons/wsgiapp.py', line 324 in dispatch
return controller(environ, start_response)
File '/Users/grb/work/geek.net/forge/pyforge/pyforge/lib/base.py', line 61 in __call__
return self._app(environ, start_response)
File '/Users/grb/work/geek.net/forge/pyforge/pyforge/lib/custom_middleware.py', line 31 in __call__
result = self.app(environ, start_response)
File '/Users/grb/work/geek.net/forge/env/src/ming-sf-alpha4/ming/orm/middleware.py', line 13 in __call__
result = self.app(environ, start_response)
File '/Users/grb/work/geek.net/forge/pyforge/pyforge/lib/base.py', line 41 in _base_app
return app(environ, start_response)
File '/Users/grb/work/geek.net/forge/pyforge/pyforge/lib/base.py', line 40 in <lambda>
app = lambda e,s: TGController.__call__(self, e, s)
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/pylons/controllers/core.py', line 221 in __call__
response = self._dispatch_call()
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/pylons/controllers/core.py', line 172 in _dispatch_call
response = self._inspect_call(func)
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/pylons/controllers/core.py', line 107 in _inspect_call
result = self._perform_call(func, args)
File '/Users/grb/work/geek.net/forge/env/src/turbogears2/tg/controllers/dispatcher.py', line 254 in _perform_call
r = self._call(func, params, remainder=remainder)
File '/Users/grb/work/geek.net/forge/env/src/turbogears2/tg/controllers/decoratedcontroller.py', line 129 in _call
response = self._render_response(controller, output)
File '/Users/grb/work/geek.net/forge/env/src/turbogears2/tg/controllers/decoratedcontroller.py', line 305 in _render_response
template_name=template_name)
File '/Users/grb/work/geek.net/forge/env/src/turbogears2/tg/render.py', line 156 in render
return render_function(template_name, template_vars, **kwargs)
File '/Users/grb/work/geek.net/forge/env/src/turbogears2/tg/render.py', line 186 in render_genshi
**kwargs)
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/pylons/templating.py', line 338 in render_genshi
ns_options=('method'), method=method)
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/pylons/templating.py', line 249 in cached_template
return render_func()
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/pylons/templating.py', line 334 in render_template
encoding=None))
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/genshi/core.py', line 179 in render
return encode(generator, method=method, encoding=encoding, out=out)
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/genshi/output.py', line 60 in encode
return _encode(u''.join(list(iterator)))
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/genshi/output.py', line 311 in __call__
for kind, data, pos in stream:
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/genshi/output.py', line 592 in __call__
for kind, data, pos in stream:
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/genshi/output.py', line 698 in __call__
for kind, data, pos in chain(stream, [(None, None, None)]):
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/genshi/output.py', line 532 in __call__
for ev in stream:
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/genshi/core.py', line 283 in _ensure
for event in stream:
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/genshi/template/base.py', line 569 in _include
for event in stream:
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/genshi/template/markup.py', line 298 in _match
ctxt, start=idx + 1, **vars):
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/genshi/template/markup.py', line 245 in _match
for event in stream:
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/genshi/template/base.py', line 543 in _exec
for event in stream:
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/genshi/template/base.py', line 496 in _eval
for kind, data, pos in stream:
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/genshi/template/base.py', line 558 in _flatten
for event in self._flatten(substream, ctxt, **vars):
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/genshi/template/base.py', line 551 in _flatten
for event in stream:
File '/Users/grb/work/geek.net/forge/env/lib/python2.6/site-packages/genshi/template/directives.py', line 377 in __call__
for item in iterable:
File '/Users/grb/work/geek.net/forge/pyforge/pyforge/lib/helpers.py', line 369 in pop_user_notifications
mbox = M.Mailbox.query.get(user_id=user._id, type='flash')
AttributeError: 'NoneType' object has no attribute '_id'
Diff:
extremely old ticket that lost its milestone.