def login_complete_view(request): context = request.context session = DBSession() #url = "https://api.github.com/user?access_token=%s" result = { 'provider_type': context.provider_type, 'provider_name': context.provider_name, 'profile': context.profile, 'credentials': context.credentials, } token = context.credentials['oauthAccessToken'] provider = context.profile.get('accounts')[0] identifier = sha1(str(provider.get('userid')) + _SALT).hexdigest() emails = [item['value'] for item in context.profile.get('emails',[])] if emails: email = emails[0] else: email = None logger.warn(result) #r = requests.get(url%token) #create user user = User.query.filter_by(identifier=identifier).first() if user: #update token user.auth_token = token user.provider = context.provider_name else: user = User( auth_token=token, provider=context.provider_name, identifier=identifier ) if context.profile['displayName'] is None or context.profile['displayName'].strip() == '': display_name = context.profile['preferredUsername'] else: display_name = context.profile['displayName'] profile = Profile( email=email, user=user, name=display_name ) if context.provider_name == 'github': profile.github_name = context.profile['preferredUsername'] session.add(profile) #create profile if needed session.add(user) session.flush() #login user headers = remember(request, user.id) request.session.flash(u'Logged in successfully.') return HTTPFound(location=request.route_url('home'), headers=headers)
def home(request): session = DBSession() people = session.query(func.count(Profile.id)).scalar() companies = session.query(func.count(Company.id)).scalar() groups = session.query(func.count(Group.id)).scalar() return {'people': people, 'companies': companies, 'groups': groups}