def identify(self, environ): request = Request(environ) params = facebook.get_user_from_cookie(request.cookies, self.appid, self.secret) if params is None: # user is not logged in to his/her facebook account or hasn't granted # access to this application return None fb = facebook.GraphAPI(params['access_token']) try: user = DBSession.query(User).filter(User.fbid==params['uid']).one() except (NoResultFound, MultipleResultsFound): try: profile = fb.get_object('me') except facebook.GraphAPIError: return None if 'id' not in profile: # we couldn't get any information from facebook. login failed. return None user = User(email=profile['email'], name=profile['name'], fbid=profile['id']) DBSession.add(user) transaction.commit() try: return {'repoze.who.userid': user.email, 'facebook': True} except UnboundExecutionError: return {'repoze.who.userid': profile['email'], 'facebook': True}
def test_query_obj(self): """Model objects can be queried""" obj = DBSession.query(self.klass).one() for key, value in self.attrs.iteritems(): assert_equals(getattr(obj, key), value)
def by_email_address(cls, email): """Return the user object whose email address is ``email``.""" return DBSession.query(cls).filter(cls.email == email).first()