Example #1
0
def create_local_user(fb_info, local_username, request = None): 
    u = users.create_user(origination='facebook', remote_object=fb_info, username=local_username)
    if request:
        profile_picture = request.session['u_fbgraph'].get_connections(fb_info['id'], "picture")
        up = users.add_user_picture("{0}-fbprofile.jpg".format(fb_info['id']), fb_info['id'], request.registry.settings['user.picture_upload_directory'], profile_picture)
        u.picture = up
        dbsession.add(u)
    return u
Example #2
0
def create_local_user(fb_info, local_username, request=None):
    u = users.create_user(origination='facebook',
                          remote_object=fb_info,
                          username=local_username)
    if request:
        profile_picture = request.session['u_fbgraph'].get_connections(
            fb_info['id'], "picture")
        up = users.add_user_picture(
            "{0}-fbprofile.jpg".format(fb_info['id']), fb_info['id'],
            request.registry.settings['user.picture_upload_directory'],
            profile_picture)
        u.picture = up
        dbsession.add(u)
    return u
Example #3
0
def complete_auth(request, auth_toks):
    # create a twython object with our request-specific tokens
    # these tokens are used only to learn if the user accepted our request
    # for permissions.
    tmp_twit = Twython(
        twitter_token=request.registry.settings['twitter.app_key'],
        twitter_secret=request.registry.settings['twitter.app_secret'],
        oauth_token=auth_toks['oauth_token'],
        oauth_token_secret=auth_toks['oauth_token_secret'])

    final_toks = tmp_twit.get_authorized_tokens()

    # create a session-permanent twython object containing the permanent tokens for this user.
    # this object must be used to read any data from the user's account.
    u_twit = Twython(
        twitter_token=request.registry.settings['twitter.app_key'],
        twitter_secret=request.registry.settings['twitter.app_secret'],
        oauth_token=final_toks['oauth_token'],
        oauth_token_secret=final_toks['oauth_token_secret'])

    request.session['u_twit'] = u_twit

    username = "******".format(final_toks['oauth_token'])
    screen_name = final_toks['screen_name']

    # check if user already exists; if not, please create
    try:
        u = users.get_user_by_name(username)
        #@TODO: add something to ensure we are in sync with the twitter profile picture
        # unless specifically overridden by the user
    except sqlalchemy.orm.exc.NoResultFound:
        u = users.create_user(origination='twitter',
                              username=username,
                              remote_object=final_toks)
        import urllib2
        image_data = urllib2.urlopen(
            "http://api.twitter.com/1/users/profile_image/{0}.json".format(
                screen_name))
        orig_filename = "{0}-twitter-pic.png".format(screen_name)
        up_dir = request.registry.settings['user.picture_upload_directory']

        u.picture = users.add_user_picture(orig_filename,
                                           str(u.id)[:7], up_dir, image_data)

        dbsession.add(u)

    return {'final_toks': final_toks, 'u': u}
Example #4
0
def user_info(request):
    import hashlib
    import os
    from raggregate.queries import user_preference as up

    r = request
    ses = request.session
    p = ses['safe_post']

    edit_mode = False
    user_id = None

    if 'user_id' in r.params:
        user_id = r.params['user_id']

    if 'logged_in' in ses and 'user_id' not in r.params:
        user_id = ses['users.id']

    if 'logged_in' in ses and (user_id == str(ses['users.id'])
                               or users.get_user_by_id(
                                   ses['users.id']).is_user_admin()):
        edit_mode = True

    u = users.get_user_by_id(user_id)
    params = up.get_user_prefs(user_id)

    if p and edit_mode:
        dbsession = DBSession()
        u.about_me = p['about_me']
        if p['email'] == "":
            u.email = None
        else:
            u.email = p['email']
        if r.POST['picture'] != '':
            orig_filename = r.POST['picture'].filename
            up_dir = r.registry.settings['user.picture_upload_directory']

            u.picture = users.add_user_picture(orig_filename,
                                               str(u.id)[:7], up_dir,
                                               r.POST['picture'].file)

        dbsession.add(u)

    response = {'edit_mode': edit_mode, 'u': u}
    response.update(params)
    return response
Example #5
0
def complete_auth(request, auth_toks):
    # create a twython object with our request-specific tokens
    # these tokens are used only to learn if the user accepted our request
    # for permissions.
    tmp_twit = Twython(twitter_token = request.registry.settings['twitter.app_key'],
                       twitter_secret = request.registry.settings['twitter.app_secret'],
                       oauth_token = auth_toks['oauth_token'],
                       oauth_token_secret = auth_toks['oauth_token_secret'])

    final_toks = tmp_twit.get_authorized_tokens()

    # create a session-permanent twython object containing the permanent tokens for this user.
    # this object must be used to read any data from the user's account.
    u_twit = Twython(twitter_token = request.registry.settings['twitter.app_key'],
                       twitter_secret = request.registry.settings['twitter.app_secret'],
                       oauth_token = final_toks['oauth_token'],
                       oauth_token_secret = final_toks['oauth_token_secret'])

    request.session['u_twit'] = u_twit

    username = "******".format(final_toks['oauth_token'])
    screen_name = final_toks['screen_name']

    # check if user already exists; if not, please create
    try:
        u = users.get_user_by_name(username)
        #@TODO: add something to ensure we are in sync with the twitter profile picture
        # unless specifically overridden by the user
    except sqlalchemy.orm.exc.NoResultFound:
        u = users.create_user(origination='twitter', username=username, remote_object=final_toks)
        import urllib2
        image_data = urllib2.urlopen("http://api.twitter.com/1/users/profile_image/{0}.json".format(screen_name))
        orig_filename = "{0}-twitter-pic.png".format(screen_name)
        up_dir = request.registry.settings['user.picture_upload_directory']

        u.picture = users.add_user_picture(orig_filename, str(u.id)[:7], up_dir, image_data)

        dbsession.add(u)

    return {'final_toks': final_toks, 'u': u}