Exemplo n.º 1
0
def user_info(request):
    import hashlib
    import os

    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 queries.get_user_by_id(ses['users.id']).is_user_admin()):
        edit_mode = True

    u = queries.get_user_by_id(user_id)

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

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

        dbsession.add(u)

    return {'edit_mode': edit_mode, 'u': u}
Exemplo n.º 2
0
def create_local_user(fb_info, local_username, request = None): 
    u = queries.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 = queries.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
Exemplo n.º 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 = queries.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 = queries.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 = queries.add_user_picture(orig_filename, str(u.id)[:7], up_dir, image_data)

        dbsession.add(u)

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