Following Steve Piercy's suggestion on IRC, I just tried using code from here: https://github.com/Pylons/pyramid/tree/1.7-branch/docs/tutorials/wiki2/src/authentication
The problem continues to me. Would it be some problem with the tutorial? On 15 May 2016 at 18:42, Vinicius Assef <[email protected]> wrote: > I'm following the SQLAlchemy + URL dispatch wiki tutorial [1] in Pyramid > 1.7b4 and I'm getting an error in the step "Adding Authentication" [2]. > > After making all recommended modifications in source files, I run the > application. > > I can see any wiki page created, but when I submit the login form, I see > the following message in browser: > > Internal Server Error > > The server encountered an unexpected internal server error > > (generated by waitress) > > > The traceback generated on console is as follows: > > 2016-05-15 18:13:58,519 INFO > [sqlalchemy.engine.base.Engine:646][waitress] BEGIN (implicit) > 2016-05-15 18:13:58,520 INFO > [sqlalchemy.engine.base.Engine:1097][waitress] SELECT users.id AS > users_id, users.name AS users_name, users.role AS users_role, > users.password_hash AS users_password_hash > FROM users > WHERE users.name = ? > LIMIT ? OFFSET ? > 2016-05-15 18:13:58,520 INFO > [sqlalchemy.engine.base.Engine:1100][waitress] ('editor', 1, 0) > 2016-05-15 18:13:58,829 INFO > [sqlalchemy.engine.base.Engine:666][waitress] ROLLBACK > 2016-05-15 18:13:58,841 INFO > [sqlalchemy.engine.base.Engine:646][waitress] BEGIN (implicit) > 2016-05-15 18:13:58,842 INFO > [sqlalchemy.engine.base.Engine:1097][waitress] SELECT pages.id AS > pages_id, pages.name AS pages_name, pages.data AS pages_data, > pages.creator_id AS pages_creator_id > FROM pages > WHERE pages.name = ? > LIMIT ? OFFSET ? > 2016-05-15 18:13:58,842 INFO > [sqlalchemy.engine.base.Engine:1100][waitress] ('FrontPage', 1, 0) > 2016-05-15 18:13:58,857 INFO > [sqlalchemy.engine.base.Engine:1097][waitress] SELECT pages.id AS > pages_id, pages.name AS pages_name, pages.data AS pages_data, > pages.creator_id AS pages_creator_id > FROM pages > WHERE pages.name = ? > 2016-05-15 18:13:58,858 INFO > [sqlalchemy.engine.base.Engine:1100][waitress] ('ViniciusPage',) > 2016-05-15 18:13:58,859 INFO > [sqlalchemy.engine.base.Engine:1097][waitress] SELECT pages.id AS > pages_id, pages.name AS pages_name, pages.data AS pages_data, > pages.creator_id AS pages_creator_id > FROM pages > WHERE pages.name = ? > 2016-05-15 18:13:58,859 INFO > [sqlalchemy.engine.base.Engine:1100][waitress] ('RosangelaPage',) > 2016-05-15 18:13:58,862 INFO > [sqlalchemy.engine.base.Engine:1097][waitress] SELECT users.id AS > users_id, users.name AS users_name, users.role AS users_role, > users.password_hash AS users_password_hash > FROM users > WHERE users.id = ? > 2016-05-15 18:13:58,862 INFO > [sqlalchemy.engine.base.Engine:1100][waitress] (1,) > 2016-05-15 18:13:58,865 INFO > [sqlalchemy.engine.base.Engine:666][waitress] ROLLBACK > 2016-05-15 18:13:58,866 ERROR [waitress:341][waitress] Exception when > serving /FrontPage > Traceback (most recent call last): > File > "/Users/viniciusban/virtualenvs/pyramid_sqla_tut/lib/python3.5/site-packages/waitress/channel.py", > line 338, in service > task.service() > File > "/Users/viniciusban/virtualenvs/pyramid_sqla_tut/lib/python3.5/site-packages/waitress/task.py", > line 169, in service > self.execute() > File > "/Users/viniciusban/virtualenvs/pyramid_sqla_tut/lib/python3.5/site-packages/waitress/task.py", > line 399, in execute > app_iter = self.channel.server.application(env, start_response) > File > "/Users/viniciusban/virtualenvs/pyramid_sqla_tut/lib/python3.5/site-packages/pyramid/router.py", > line 236, in __call__ > response = self.invoke_subrequest(request, use_tweens=True) > File > "/Users/viniciusban/virtualenvs/pyramid_sqla_tut/lib/python3.5/site-packages/pyramid/router.py", > line 211, in invoke_subrequest > response = handle_request(request) > File > "/Users/viniciusban/virtualenvs/pyramid_sqla_tut/lib/python3.5/site-packages/pyramid_debugtoolbar/toolbar.py", > line 266, in toolbar_tween > toolbar.process_response(request, response) > File > "/Users/viniciusban/virtualenvs/pyramid_sqla_tut/lib/python3.5/site-packages/pyramid_debugtoolbar/toolbar.py", > line 87, in process_response > panel.process_response(response) > File > "/Users/viniciusban/virtualenvs/pyramid_sqla_tut/lib/python3.5/site-packages/pyramid_debugtoolbar/panels/request_vars.py", > line 112, in process_response > extracted_attributes = extract_request_attributes(self.request) > File > "/Users/viniciusban/virtualenvs/pyramid_sqla_tut/lib/python3.5/site-packages/pyramid_debugtoolbar/panels/request_vars.py", > line 56, in extract_request_attributes > if not hasattr(request, attr_): > File > "/Users/viniciusban/virtualenvs/pyramid_sqla_tut/lib/python3.5/site-packages/pyramid/security.py", > line 344, in authenticated_userid > return policy.authenticated_userid(self) > File > "/Users/viniciusban/projects/tutoriais-pyramid/sqla/sqla/security.py", line > 11, in authenticated_userid > return user.id > File > "/Users/viniciusban/virtualenvs/pyramid_sqla_tut/lib/python3.5/site-packages/sqlalchemy/orm/attributes.py", > line 237, in __get__ > return self.impl.get(instance_state(instance), dict_) > File > "/Users/viniciusban/virtualenvs/pyramid_sqla_tut/lib/python3.5/site-packages/sqlalchemy/orm/attributes.py", > line 578, in get > value = state._load_expired(state, passive) > File > "/Users/viniciusban/virtualenvs/pyramid_sqla_tut/lib/python3.5/site-packages/sqlalchemy/orm/state.py", > line 474, in _load_expired > self.manager.deferred_scalar_loader(self, toload) > File > "/Users/viniciusban/virtualenvs/pyramid_sqla_tut/lib/python3.5/site-packages/sqlalchemy/orm/loading.py", > line 610, in load_scalar_attributes > (state_str(state))) > sqlalchemy.orm.exc.DetachedInstanceError: Instance <User at 0x111ac67f0> > is not bound to a Session; attribute refresh operation cannot proceed > > > According to this traceback, the error is raised at the last line of > MyAuthenticationPolicy class when I try to access request.user: > > class MyAuthenticationPolicy(AuthTktAuthenticationPolicy): > def authenticated_userid(self, request): > user = request.user > if user is not None: > return user.id > > Strange is I can access http://localhost:6543/404 by hand and see the > request.user.name showed next to the "Logout" link (coming from the > layout.jinja2 template). > > I can log out successfuly. > > Any advice? > > > For more information, I am using Python 3.5.1 in OS X El Capitan. Here are > all libs installed in my virtualenv: > > $ pip freeze > bcrypt==2.0.0 > beautifulsoup4==4.4.1 > cffi==1.6.0 > coverage==4.0.3 > docutils==0.12 > Jinja2==2.8 > Mako==1.0.4 > MarkupSafe==0.23 > PasteDeploy==1.5.2 > py==1.4.31 > pycparser==2.14 > Pygments==2.1.3 > pyramid==1.7b4 > pyramid-debugtoolbar==3.0 > pyramid-jinja2==2.6.2 > pyramid-mako==1.0.2 > pyramid-tm==0.12.1 > pytest==2.9.1 > pytest-cov==2.2.1 > repoze.lru==0.6 > six==1.10.0 > sqla==0.0 > SQLAlchemy==1.0.12 > transaction==1.5.0 > translationstring==1.3 > venusian==1.0 > waitress==0.9.0 > WebOb==1.6.0 > WebTest==2.0.21 > zope.deprecation==4.1.2 > zope.interface==4.1.3 > zope.sqlalchemy==0.7.6 > > > [1] > http://docs.pylonsproject.org/projects/pyramid/en/1.7-branch/tutorials/wiki2/index.html > [2] > http://docs.pylonsproject.org/projects/pyramid/en/1.7-branch/tutorials/wiki2/authentication.html > > > I already checked my source code and it is according to the tutorial > recommendations. What must I do to fix it? > Any help is very appreciated. > > -- > Vinicius Assef > > > > -- You received this message because you are subscribed to the Google Groups "pylons-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/pylons-discuss/CAFmXjSA7Eu8--yeOmTW4xSfJ%2Br_UUAdvbCS4hYFkuUCc5-9chA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
