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.