def show(request): """Shows the profile of a user.""" # TODO workshop: write a test # TODO workshop: not found session = DBSession() user = session.query(User).get(request.matchdict['user_id']) return {'user': user}
def login(request): username = request.params.get('username', None) password = request.params.get('password', None) session = DBSession() user = session.query(User).filter(User.username==username).first() if user is not None and user.password == password: response = HTTPFound('/') # totally insecure, TODO in workshop: use auth token or something response.set_cookie('user_id', str(user.id), max_age=timedelta(30)) return response return {'username': username}
def add_user_to_request(event): """Event subscriber to add the user to the request if any. If user not logged in, request.user is None. """ # totally insecure TODO workshop: use auth token or something try: user_id = int(event.request.cookies['user_id']) except (ValueError, KeyError): event.request.user = None return session = DBSession() event.request.user = session.query(User).get(user_id)
def test_creates_user_when_valid(self): from cody.views.users import create from cody.models import User from pyramid.httpexceptions import HTTPFound from cody.models import DBSession request = testing.DummyRequest() request.params['username'] = u'john55' request.params['password'] = u'password' request.params['name'] = u'John Doe' request.params['email'] = u'*****@*****.**' request.params['location'] = u'Quebec' response = create(request) session = DBSession() user = DBSession.query(User).one() self.assertEqual(user.username, u'john55') self.assertGreater(len(user.password), 0) self.assertEqual(user.name, u'John Doe') self.assertEqual(user.email, u'*****@*****.**') self.assertEqual(user.location, u'Quebec')
def index(request): """List all the users.""" session = DBSession() users = session.query(User).order_by(User.username) return {'users': users}