Exemplo n.º 1
0
        def _wrapped_view(request, *args, **kwargs):
            if canvas:
                oauth_url, redirect_uri = generate_oauth_url(
                    scope_list, extra_params=extra_params)
            else:
                oauth_url, redirect_uri = get_oauth_url(
                    request, scope_list, extra_params=extra_params)

            try:
                # call get persistent graph and convert the
                # token with correct redirect uri
                get_persistent_graph(request, redirect_uri=redirect_uri)
                return view_func(request, *args, **kwargs)
            except open_facebook_exceptions.OpenFacebookException, e:
                if test_permissions(request, scope_list, redirect_uri):
                    # an error if we already have permissions
                    # shouldn't have been caught
                    # raise to prevent bugs with error mapping to cause issues
                    raise
                else:
                    logger.info(
                        u'requesting access with redirect uri: %s, error was %s',
                        redirect_uri, e)
                    response = response_redirect(oauth_url, canvas=canvas)
                    return response
Exemplo n.º 2
0
def article(request):
    if request.GET.__contains__("title") and request.GET.__contains__("price"):
        form = ArticleForm(request.GET)
        if form.is_valid():
            article = form.save(commit=False)
            article.owner = request.user
            article.save()

            # Publish on wall user
            fb = get_persistent_graph(request)
            message = article.get_wall_message()
            fb.set("me/feed", message=message)
            messages.info(request, "Publicar en tu muro esta Compra")
            return HttpResponseRedirect("/mvp/article/%s" % article.pk)

    if request.method == "POST":
        form = ArticleForm(request.POST)
        if form.is_valid():
            article = form.save(commit=False)
            article.owner = request.user
            article.save()

            # Publish on wall user
            fb = get_persistent_graph(request)
            message = article.get_wall_message()
            fb.set("me/feed", message=message)
            messages.info(request, "Publicar en tu muro esta Compra")
            return HttpResponseRedirect("/mvp/article/%s" % article.pk)
    else:
        form = ArticleForm()
    return render_to_response("mvp/article.html", {"form": form}, context_instance=RequestContext(request))
Exemplo n.º 3
0
def article(request):
    if request.GET.__contains__('title') and request.GET.__contains__('price'):
        form = ArticleForm(request.GET)
        if form.is_valid():
            article = form.save(commit=False)
            article.owner = request.user
            article.save()

            #Publish on wall user
            fb = get_persistent_graph(request)
            message = article.get_wall_message()
            fb.set('me/feed', message=message)
            messages.info(request, 'Publicar en tu muro esta Compra')
            return HttpResponseRedirect('/mvp/article/%s' % article.pk)

    if request.method == 'POST':
        form = ArticleForm(request.POST)
        if form.is_valid():
            article = form.save(commit=False)
            article.owner = request.user
            article.save()

            #Publish on wall user
            fb = get_persistent_graph(request)
            message = article.get_wall_message()
            fb.set('me/feed', message=message)
            messages.info(request, 'Publicar en tu muro esta Compra')
            return HttpResponseRedirect('/mvp/article/%s' % article.pk)
    else:
        form = ArticleForm()
    return render_to_response('mvp/article.html', {'form': form},
                              context_instance=RequestContext(request))
Exemplo n.º 4
0
 def _wrapped_view(request, *args, **kwargs):
     oauth_url, current_uri, redirect_uri = get_oauth_url(
         request, scope_list,
         extra_params=extra_params)
     try:
         # call get persistent graph and convert the
         # token with correct redirect uri
         get_persistent_graph(request, redirect_uri=current_uri)
         #Note we're not requiring a persistent graph here
         #You should require a persistent graph in the view when you start using this
         return view_func(request, *args, **kwargs)
     except open_facebook_exceptions.OpenFacebookException, e:
         permission_granted = test_permissions(
             request, scope_list, current_uri)
         if permission_granted:
             # an error if we already have permissions
             # shouldn't have been caught
             # raise to prevent bugs with error mapping to cause issues
             raise
         else:
             logger.info(
                 u'requesting access with redirect uri: %s, error was %s',
                 redirect_uri, e)
             response = response_redirect(oauth_url, canvas=canvas)
             return response
Exemplo n.º 5
0
 def _wrapped_view(request, *args, **kwargs):
     oauth_url, redirect_uri = get_oauth_url(request,
                                             scope_list,
                                             extra_params=extra_params)
     try:
         # call get persistent graph and convert the
         # token with correct redirect uri
         get_persistent_graph(request, redirect_uri=redirect_uri)
         #Note we're not requiring a persistent graph here
         #You should require a persistent graph in the url when you start using this
         return view_func(request, *args, **kwargs)
     except open_facebook_exceptions.OpenFacebookException, e:
         permission_granted = test_permissions(request, scope_list,
                                               redirect_uri)
         if permission_granted:
             # an error if we already have permissions
             # shouldn't have been caught
             # raise to prevent bugs with error mapping to cause issues
             raise
         else:
             logger.info(
                 u'requesting access with redirect uri: %s, error was %s',
                 redirect_uri, e)
             response = response_redirect(oauth_url, canvas=canvas)
             return response
Exemplo n.º 6
0
 def _wrapped_view(request, *args, **kwargs):
     oauth_url, redirect_uri = get_oauth_url(request, scope_list, extra_params=extra_params)
     try:
         #call get persistent graph and convert the token with correct redirect uri
         get_persistent_graph(request, redirect_uri=redirect_uri)
         return view_func(request, *args, **kwargs)
     except open_facebook_exceptions.OpenFacebookException, e:
         if test_permissions(request, scope_list, redirect_uri):
             #an error if we already have permissions shouldn't have been caught
             #raise to prevent bugs with error mapping to cause issues
             raise
         else:
             logger.info('requesting access with redirect uri: %s', redirect_uri)
             response = HttpResponseRedirect(oauth_url)
             return response
Exemplo n.º 7
0
def test_permissions(request, scope_list, redirect_uri=None):
    '''
    Call Facebook me/permissions to see if we are allowed to do this
    '''
    from django_facebook.api import get_persistent_graph
    from open_facebook import exceptions as facebook_exceptions
    fb = get_persistent_graph(request, redirect_uri=redirect_uri)
    permissions_dict = {}
    if fb:
        try:
            permissions_response = fb.get('me/permissions')
            permissions = permissions_response['data'][0]
        except facebook_exceptions.OAuthException:
            # this happens when someone revokes their permissions
            # while the session is still stored
            permissions = {}
        permissions_dict = dict([(k, bool(int(v)))
                                 for k, v in permissions.items()
                                 if v == '1' or v == 1])

    # see if we have all permissions
    scope_allowed = True
    for permission in scope_list:
        if permission not in permissions_dict:
            scope_allowed = False

    # raise if this happens after a redirect though
    if not scope_allowed and request.GET.get('attempt'):
        raise(ValueError,
              'Somehow facebook is not giving us the permissions needed, ' \
              'lets break instead of endless redirects. Fb was %s and ' \
              'permissions %s' % (fb, permissions_dict))

    return scope_allowed
Exemplo n.º 8
0
    def authenticate(self, fn, request, *args, **kwargs):
        '''
        Authenticate the user

        There are three options
        a.) We have permissions, proceed with the view
        b.) We tried getting permissions and failed, abort...
        c.) We are about to ask for permissions
        '''
        redirect_uri = self.get_redirect_uri(request)
        oauth_url = get_oauth_url(
            self.scope_list, redirect_uri, extra_params=self.extra_params)

        graph = get_persistent_graph(request, redirect_uri=redirect_uri)

        # See if we have all permissions
        permissions_granted = has_permissions(graph, self.scope_list)

        if permissions_granted:
            response = self.execute_view(
                fn, request, graph=graph, *args, **kwargs)
        elif request.REQUEST.get('attempt') == '1':
            # Doing a redirect could end up causing infinite redirects
            # If Facebook is somehow not giving permissions
            # Time to show an error page
            response = self.authentication_failed(fn, request, *args, **kwargs)
        else:
            response = self.oauth_redirect(oauth_url, redirect_uri)

        return response
Exemplo n.º 9
0
def remove_og_share(request):
    graph = get_persistent_graph(request)
    og_share_id = request.POST.get('og_share_id')
    if og_share_id:
        shares = OpenGraphShare.objects.filter(id=og_share_id)
        for share in shares:
            share.remove(graph)
Exemplo n.º 10
0
def home(request):
  graph = get_persistent_graph(request)
  #me  = graph.permissions()

  #me = graph.fql("SELECT friends_about_me,friends_location,friends_hometown FROM permissions WHERE uid = me()")
  #me = graph.fql("SELECT uid, name,current_address,current_location,relationship_status FROM user WHERE uid = me()")
  me = graph.fql("SELECT current_location,pic_square FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())")
  #me = graph.fql('SELECT name FROM user WHERE uid = me()')
  #me1 = graph.fql("SELECT uid, name, pic_square FROM user WHERE uid = me() OR uid IN (SELECT uid2 FROM friend WHERE uid1 = me())")
  
  g = list()
  for li in me:
    s = li.get('current_location')
    if s is not None:
       t = list()
       t.append(s.get('city').encode('ascii','ignore'))
       t.append(s.get('latitude'))
       t.append(s.get('longitude'))
       #t.append(s.get('country'))
       #t.append(s.get('state'))
       s1 = li.get('pic_square')
       if s1 is not None:
         t.append(s1.encode('ascii','ignore'))
       g.append(t) 
  g = json.dumps(g)
  return render(request, 'hellodjango/templates/map.html', {'me':me,'locations':g})
Exemplo n.º 11
0
def test_permissions(request, scope_list, redirect_uri=None):
    '''
    Call Facebook me/permissions to see if we are allowed to do this
    '''
    from django_facebook.api import get_persistent_graph
    from open_facebook import exceptions as facebook_exceptions
    fb = get_persistent_graph(request, redirect_uri=redirect_uri)
    permissions_dict = {}
    if fb:
        try:
            permissions_response = fb.get('me/permissions')
            permissions = permissions_response['data'][0]
        except facebook_exceptions.OAuthException:
            # this happens when someone revokes their permissions
            # while the session is still stored
            permissions = {}
        permissions_dict = dict([(k, bool(int(v)))
                                 for k, v in permissions.items()
                                 if v == '1' or v == 1])

    # see if we have all permissions
    scope_allowed = True
    for permission in scope_list:
        if permission not in permissions_dict:
            scope_allowed = False

    # raise if this happens after a redirect though
    if not scope_allowed and request.GET.get('attempt'):
        raise ValueError(
              'Somehow facebook is not giving us the permissions needed, ' \
              'lets break instead of endless redirects. Fb was %s and ' \
              'permissions %s' % (fb, permissions_dict))

    return scope_allowed
Exemplo n.º 12
0
 def test_persistent_graph(self):
     from django.test import RequestFactory
     from django.contrib.auth.models import AnonymousUser
     request = RequestFactory()
     request.session = {}
     request.user = AnonymousUser()
     graph = get_persistent_graph(request, access_token='short_username')
Exemplo n.º 13
0
def wall_post(request):
    fb = get_persistent_graph(request)
    message = request.POST.get('message')
    if message:
        fb.set('me/feed', message=message)
        messages.info(request, 'Posted the message to your wall')
        return next_redirect(request)
Exemplo n.º 14
0
def test_permissions(request, scope_list, redirect_uri=None):
    '''
    Call Facebook me/permissions to see if we are allowed to do this
    '''
    from django_facebook.api import get_persistent_graph

    fb = get_persistent_graph(request, redirect_uri=redirect_uri)
    permissions_dict = {}
    if fb:
        #see what permissions we have
        permissions_dict = fb.permissions()

    # see if we have all permissions
    scope_allowed = True
    for permission in scope_list:
        if permission not in permissions_dict:
            scope_allowed = False

    # raise if this happens after a redirect though
    if not scope_allowed and request.GET.get('attempt'):
        raise ValueError(
            'Somehow facebook is not giving us the permissions needed, '
            'lets break instead of endless redirects. Fb was %s and '
            'permissions %s' % (fb, permissions_dict))

    return scope_allowed
Exemplo n.º 15
0
def wall_post(request):
    fb = get_persistent_graph(request)
    message = request.POST.get('message')
    if message:
        fb.set('me/feed', message=message)
        messages.info(request, 'Posted the message to your wall')
        return next_redirect(request)
Exemplo n.º 16
0
def test_permissions(request, scope_list, redirect_uri=None):
    '''
    Call Facebook me/permissions to see if we are allowed to do this
    '''
    from django_facebook.api import get_persistent_graph

    fb = get_persistent_graph(request, redirect_uri=redirect_uri)
    permissions_dict = {}
    if fb:
        #see what permissions we have
        permissions_dict = fb.permissions()

    # see if we have all permissions
    scope_allowed = True
    for permission in scope_list:
        if permission not in permissions_dict:
            scope_allowed = False

    # raise if this happens after a redirect though
    if not scope_allowed and request.GET.get('attempt'):
        raise ValueError(
            'Somehow facebook is not giving us the permissions needed, '
            'lets break instead of endless redirects. Fb was %s and '
            'permissions %s' % (fb, permissions_dict))

    return scope_allowed
Exemplo n.º 17
0
def join_squad(request, game):
    """ View to join a squad """
    game_obj = get_game(game)

    assassin_obj = game_obj.getAssassin(request.user)
    if assassin_obj is None:
        raise Http404

    if request.method == 'POST':
        form = JoinForm(request.POST, assassin=assassin_obj)
        if form.is_valid():
            squad = form.cleaned_data.get('squad')
            squad.add_assassin(assassin_obj, commit=True)
            try:
                fb = api.get_persistent_graph(request, access_token=request.user.columbiauserprofile.access_token)
                if fb:
                    url = 'http://assassins.columbiaesc.com' + reverse('assassins_manager.squad.views.details', args=(game_obj.name, squad.id, ))
                    result = fb.set('me/cuassassins:join', squad=url)
            except:
                pass
            return HttpResponseRedirect(reverse('assassins_manager.squad.views.details', args=(game, squad.id,)))
    else:
        form = JoinForm(assassin=assassin_obj)

    return render_with_metadata(request, 'form.html', game, {
        'formname': 'Join Squad',
        'form': form,
        })
Exemplo n.º 18
0
def remove_og_share(request):
    graph = get_persistent_graph(request)
    og_share_id = request.POST.get('og_share_id')
    if og_share_id:
        shares = OpenGraphShare.objects.filter(id=og_share_id)
        for share in shares:
            share.remove(graph)
Exemplo n.º 19
0
def connect(request):
    '''
    Handles the view logic around connect user
    - (if authenticated) connect the user
    - login
    - register
    '''
    context = RequestContext(request)

    assert context.get('FACEBOOK_APP_ID'), 'Please specify a facebook app id '\
        'and ensure the context processor is enabled'
    facebook_login = bool(int(request.REQUEST.get('facebook_login', 0)))

    if facebook_login:
        logger.info('trying to connect using facebook')
        graph = get_persistent_graph(request)
        if graph:
            logger.info('found a graph object')
            facebook = FacebookUserConverter(graph)
            if facebook.is_authenticated():
                logger.info('facebook is authenticated')
                facebook_data = facebook.facebook_profile_data()
                #either, login register or connect the user
                try:
                    action, user = connect_user(request)
                    logger.info('Django facebook performed action: %s', action)
                except facebook_exceptions.IncompleteProfileError, e:
                    warn_message = u'Incomplete profile data encountered '\
                        u'with error %s' % e
                    send_warning(warn_message,
                                 e=e,
                                 facebook_data=facebook_data)

                    context['facebook_mode'] = True
                    context['form'] = e.form
                    return render_to_response(
                        facebook_settings.FACEBOOK_REGISTRATION_TEMPLATE,
                        context_instance=context,
                    )

                if action is CONNECT_ACTIONS.CONNECT:
                    messages.info(
                        request,
                        _("You have connected your account "
                          "to %s's facebook profile") % facebook_data['name'])
                elif action is CONNECT_ACTIONS.REGISTER:
                    return user.get_profile().post_facebook_registration(
                        request)
        else:
            if 'attempt' in request.GET:
                return next_redirect(
                    request,
                    next_key=['error_next', 'next'],
                    additional_params=dict(fb_error_or_cancel=1))
            else:
                logger.info('Facebook authentication needed for connect, ' \
                            'raising an error')
                raise OpenFacebookException('please authenticate')

        return next_redirect(request)
Exemplo n.º 20
0
def start_game(request, game):
    """ Starts the game """
    game_obj = get_game(game)

    if is_admin(request.user, game_obj):
        if request.method == 'POST':
            form = VerifyForm(request.POST)
            if form.is_valid():
                if form.cleaned_data.get('are_you_sure'):
                    game_obj.start_game() # calls save internally
                    try:
                        fb = api.get_persistent_graph(request, access_token=request.user.columbiauserprofile.access_token)
                        if fb:
                            url = 'http://assassins.columbiaesc.com' + reverse('assassins_manager.game.views.details', args=(game_obj.name,))
                            result = fb.set('me/cuassassins:start', game=url)
                    except:
                        pass
                    return HttpResponseRedirect(reverse('assassins_manager.game.views.game_admin', args=(game,)))
        else:
            form = VerifyForm()
        return render_with_metadata(request, 'form.html', game, {
            'form': form,
            'formname': 'Start Game',
            })
    else:
        return HttpResponseRedirect(reverse('assassins_manager.game.views.details', args=(game,)))
Exemplo n.º 21
0
def create_game(request):
    """ Creates a new game and sets the existing user as the administrator """
    if request.method == 'POST':
        form = AddGameForm(request.POST)
        if form.is_valid():
            game_obj = form.save()
            assassin_obj = Assassin(user=request.user)
            assassin_obj.squad = None
            assassin_obj.is_admin = True
            assassin_obj.game = game_obj
            assassin_obj.resurrect(commit=False)
            assassin_obj.save()

            try:
                fb = api.get_persistent_graph(request, access_token=request.user.columbiauserprofile.access_token)
                if fb:
                    url = 'http://assassins.columbiaesc.com' + reverse('assassins_manager.game.views.details', args=(game_obj.name,))
                    result = fb.set('me/cuassassins:create', game=url)
            except:
                pass
            return HttpResponseRedirect(reverse('assassins_manager.game.views.game_admin', args=(game_obj.name,)))
    else:
        form = AddGameForm()

    return render_with_metadata(request, 'form.html', '', {
        'form': form,
        'formname': 'Create Game',
        })
Exemplo n.º 22
0
    def authenticate(self, fn, request, *args, **kwargs):
        '''
        Authenticate the user

        There are three options
        a.) We have permissions, proceed with the view
        b.) We tried getting permissions and failed, abort...
        c.) We are about to ask for permissions
        '''
        redirect_uri = self.get_redirect_uri(request)
        oauth_url = get_oauth_url(self.scope_list,
                                  redirect_uri,
                                  extra_params=self.extra_params)

        graph = get_persistent_graph(request, redirect_uri=redirect_uri)

        # See if we have all permissions
        permissions_granted = has_permissions(graph, self.scope_list)

        if permissions_granted:
            response = self.execute_view(fn,
                                         request,
                                         graph=graph,
                                         *args,
                                         **kwargs)
        elif request.REQUEST.get('attempt') == '1':
            # Doing a redirect could end up causing infinite redirects
            # If Facebook is somehow not giving permissions
            # Time to show an error page
            response = self.authentication_failed(fn, request, *args, **kwargs)
        else:
            response = self.oauth_redirect(oauth_url, redirect_uri)

        return response
Exemplo n.º 23
0
def home( request ):
    try:
        #graph = user.get_offline_graph( )
        graph = get_persistent_graph( request )
        fm = graph.get( 'me' )
    except:
        fm = ''
    return render( request, 'home.html', {'fm': fm } )
Exemplo n.º 24
0
def remove_og_share(request):
    from django_facebook.models import OpenGraphShare
    graph = get_persistent_graph(request)
    og_share_id = request.POST.get('og_share_id')
    if og_share_id:
        shares = OpenGraphShare.objects.filter(id=og_share_id)
        for share in shares:
            share.remove(graph)
Exemplo n.º 25
0
def remove_og_share(request):
    from django_facebook.models import OpenGraphShare
    graph = get_persistent_graph(request)
    og_share_id = request.POST.get('og_share_id')
    if og_share_id:
        shares = OpenGraphShare.objects.filter(id=og_share_id)
        for share in shares:
            share.remove(graph)
Exemplo n.º 26
0
def enviarApagina(request):
    context = RequestContext(request)
    if request.method == 'POST':
        mensaje = request.POST.get('mensaje')
        fb = get_persistent_graph(request)
        fb.set('323555591081578/feed', message = mensaje)
        return HttpResponseRedirect('/')
    return render_to_response('home.html', context)
Exemplo n.º 27
0
def open_graph_beta(request):
    '''
    Simple example on how to do open graph postings
    '''
    fb = get_persistent_graph(request)
    entity_url = 'http://www.fashiolista.com/item/2081202/'
    result = fb.set('me/fashiolista:love', item=entity_url)
    messages.info(request, 'Frictionless sharing to open graph beta action fashiolista:love with item_url %s, this url contains open graph data which Facebook scrapes' % entity_url)
Exemplo n.º 28
0
def get_facebook_user_id(request):
    graph = get_persistent_graph(request)
    user_facebook_info = graph.get('me')

    if user_facebook_info and 'id' in user_facebook_info:
        return user_facebook_info['id']
    else:
        raise Exception('Error while getting user facebook id. Please inform administrator.')
Exemplo n.º 29
0
def checkin(request):
    fb = get_persistent_graph(request)
    event_url = request.GET.get("event_url")
    if CheckIn.objects.filter(user=request.user, event_url=event_url).exists():
        return HttpResponseNotAllowed('Already checked in here.')
    fb.set("me/maivnapp:check_in", website=event_url)
    CheckIn.objects.create(user=request.user, event_url=event_url)
    return HttpResponse("OK")
Exemplo n.º 30
0
 def friends(self, request):
     """
     Gets Profiles of Facebook Friends
     """
     fb = get_persistent_graph(request)
     # TODO: iterate over the pagination info
     fbids = [int(i['id']) for i in fb.get('me/friends').get('data')]
     return Profile.objects.filter(facebook_id__in=fbids)
Exemplo n.º 31
0
def open_graph_beta(request):
    '''
    Simple example on how to do open graph postings
    '''
    fb = get_persistent_graph(request)
    entity_url = 'http://www.fashiolista.com/item/2081202/'
    result = fb.set('me/fashiolista:love', item=entity_url)
    messages.info(request, 'Frictionless sharing to open graph beta action fashiolista:love with item_url %s, this url contains open graph data which Facebook scrapes' % entity_url)
Exemplo n.º 32
0
def connect(request):
    '''
    Handles the view logic around connect user
    - (if authenticated) connect the user
    - login
    - register
    '''
    backend = get_registration_backend()
    context = RequestContext(request)

    assert context.get('FACEBOOK_APP_ID'), 'Please specify a facebook app id '\
        'and ensure the context processor is enabled'
    facebook_login = bool(int(request.REQUEST.get('facebook_login', 0)))
    
    if facebook_login:
        require_persistent_graph(request)
        logger.info('trying to connect using facebook')
        graph = get_persistent_graph(request)
        if graph:
            logger.info('found a graph object')
            facebook = FacebookUserConverter(graph)
            
            if facebook.is_authenticated():
                logger.info('facebook is authenticated')
                facebook_data = facebook.facebook_profile_data()
                #either, login register or connect the user
                try:
                    action, user = connect_user(request)
                    logger.info('Django facebook performed action: %s', action)
                except facebook_exceptions.IncompleteProfileError, e:
                    warn_message = u'Incomplete profile data encountered '\
                        u'with error %s' % e.message.decode('utf-8', 'replace')
                    send_warning(warn_message, e=e,
                                 facebook_data=facebook_data)

                    context['facebook_mode'] = True
                    context['form'] = e.form
                    return render_to_response(
                        facebook_settings.FACEBOOK_REGISTRATION_TEMPLATE,
                        context_instance=context,
                    )

                if action is CONNECT_ACTIONS.CONNECT:
                    messages.info(request, _("You have connected your account "
                        "to %s's facebook profile") % facebook_data['name'])
                elif action is CONNECT_ACTIONS.REGISTER:
                    response = backend.post_registration_redirect(request, user)
                    return response
        else:
            if 'attempt' in request.GET:
                return next_redirect(request, next_key=['error_next', 'next'],
                    additional_params=dict(fb_error_or_cancel=1))
            else:
                logger.info('Facebook authentication needed for connect, ' \
                            'raising an error')
                raise OpenFacebookException('please authenticate')

        return next_redirect(request)
Exemplo n.º 33
0
def test_open_facebook(request):
    from django_facebook.api import FacebookUserConverter

    fb = get_persistent_graph(request)

    instace = FacebookUserConverter(fb)

    #Get Friends
    return HttpResponse(instace.get_friends())
Exemplo n.º 34
0
def wall_post(request):
    fb = get_persistent_graph(request)

    message = request.REQUEST.get("message")
    fb.set("me/feed", message=message)

    messages.info(request, "Posted the message to your wall")

    return next_redirect(request)
Exemplo n.º 35
0
def test_open_facebook(request):
    from django_facebook.api import FacebookUserConverter

    fb = get_persistent_graph(request)

    instace = FacebookUserConverter(fb)

    # Get Friends
    return HttpResponse(instace.get_friends())
Exemplo n.º 36
0
def canvas(request):
    context = RequestContext(request)

    context['auth_url'] = generate_oauth_url()
    fb = get_persistent_graph(request)
    if fb.is_authenticated():
        likes = context['facebook'].get_connections("me", "likes", limit=3)
        logger.info('found these likes %s', likes)

    return render_to_response('django_facebook/canvas.html', context)
Exemplo n.º 37
0
def retrieve_friends_dict(request):
    try:
        open_graph = get_persistent_graph(request)
        converter = FacebookUserConverter(open_graph)
        friends = converter.get_friends()
        friends_data = {u['name'].strip().upper(): u['uid'] for u in friends}
        return friends_data
    except Exception as e:
        return {}
        print e
Exemplo n.º 38
0
def canvas(request):
    context = RequestContext(request)

    context['auth_url'] = generate_oauth_url()
    fb = get_persistent_graph(request)
    if fb.is_authenticated():
        likes = context['facebook'].get_connections("me", "likes", limit=3)
        logger.info('found these likes %s', likes)

    return render_to_response('django_facebook/canvas.html', context)
Exemplo n.º 39
0
def image_upload(request):
    fb = get_persistent_graph(request)
    pictures = request.REQUEST.getlist("pictures")

    for picture in pictures:
        fb.set("me/photos", url=picture, message="the writing is one The " "wall image %s" % picture)

    messages.info(request, "The images have been added to your profile!")

    return next_redirect(request)
Exemplo n.º 40
0
def map(request):
   graph = get_persistent_graph(request)
   pics = graph.fql("SELECT pic_square FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())")
   pic = list()
   for li in pics:
     s = li.get('pic_square')
     if s is not None:
       pic.append(s.encode('ascii','ignore'))
   pic=json.dumps(pic)
   return render(request,'hellodjango/templates/mmap.html',{'pic':pic})
Exemplo n.º 41
0
def fbconnect(request):
    # Calling the real facebook connect() view
    response = connect(request)
    if not 'facebook_login' in request.REQUEST:
        fbid = get_persistent_graph(request).get('me')['id']
        user = authenticate(facebook_id=fbid)
        login(request, user)
        response.status_code = 302
        response['Location'] = '/'
    return response
Exemplo n.º 42
0
def get_facebook_user_id(request):
    graph = get_persistent_graph(request)
    user_facebook_info = graph.get('me')

    if user_facebook_info and 'id' in user_facebook_info:
        return user_facebook_info['id']
    else:
        raise Exception(
            'Error while getting user facebook id. Please inform administrator.'
        )
Exemplo n.º 43
0
def retrieve_friends(request, field='uid'):
    try:
        open_graph = get_persistent_graph(request)
        converter = FacebookUserConverter(open_graph)
        friends = converter.get_friends()
        friends_data = [u[field] for u in friends]
        return friends_data
    except Exception as e:
        return []
        print e
Exemplo n.º 44
0
def connect(request):
    """
    Handles the view logic around connect user
    - (if authenticated) connect the user
    - login
    - register
    """
    context = RequestContext(request)

    assert context.get("FACEBOOK_APP_ID"), (
        "Please specify a facebook app id " "and ensure the context processor is enabled"
    )
    facebook_login = bool(int(request.REQUEST.get("facebook_login", 0)))

    if facebook_login:
        # code to redirect if we don't have adequate permissions
        from django_facebook.utils import test_permissions

        scope_list = facebook_settings.FACEBOOK_DEFAULT_SCOPE
        # standardizing the url to prevent things like attempt from being included
        redirect_uri = request.build_absolute_uri(request.path) + "?facebook_login=1"
        oauth_url, redirect_uri = get_oauth_url(request, scope_list, redirect_uri=redirect_uri)
        if not test_permissions(request, scope_list, redirect_uri):
            return HttpResponseRedirect(oauth_url)

        graph = get_persistent_graph(request)
        if graph:
            facebook = FacebookUserConverter(graph)
            if facebook.is_authenticated():
                facebook_data = facebook.facebook_profile_data()
                # either, login register or connect the user
                try:
                    action, user = connect_user(request)
                    logger.info("Django facebook, action was %s", action)
                except facebook_exceptions.IncompleteProfileError, e:
                    warn_message = u"Incomplete profile data encountered " u"with error %s" % e
                    send_warning(warn_message, e=e, facebook_data=facebook.facebook_profile_data())

                    context["facebook_mode"] = True
                    context["form"] = e.form
                    return render_to_response(
                        facebook_settings.FACEBOOK_REGISTRATION_TEMPLATE, context_instance=context
                    )

                if action is CONNECT_ACTIONS.CONNECT:
                    messages.info(
                        request,
                        _("You have connected your account " "to %s's facebook profile") % facebook_data["name"],
                    )
                elif action is CONNECT_ACTIONS.REGISTER:
                    return user.get_profile().post_facebook_registration(request)
        else:
            return next_redirect(request, next_key=["error_next", "next"], additional_params=dict(fb_error_or_cancel=1))

        return next_redirect(request)
Exemplo n.º 45
0
def image_upload(request):
    fb = get_persistent_graph(request)
    pictures = request.REQUEST.getlist('pictures')

    for picture in pictures:
        fb.set('me/photos', url=picture, message='the writing is one The '
            'wall image %s' % picture)

    messages.info(request, 'The images have been added to your profile!')

    return next_redirect(request)
Exemplo n.º 46
0
 def test_long_username(self):
     request = RequestMock().get('/')
     request.session = {}
     request.user = AnonymousUser()
     graph = get_persistent_graph(request, access_token='long_username')
     converter = FacebookUserConverter(graph)
     base_data = converter.facebook_registration_data()
     action, user = connect_user(self.request, facebook_graph=graph)
     self.assertEqual(len(base_data['username']), 30)
     self.assertEqual(len(user.username), 30)
     self.assertEqual(len(user.first_name), 30)
     self.assertEqual(len(user.last_name), 30)
Exemplo n.º 47
0
 def test_gender_matching(self):
     request = RequestMock().get('/')
     request.session = {}
     request.user = AnonymousUser()
     graph = get_persistent_graph(request, access_token='paul')
     converter = FacebookUserConverter(graph)
     base_data = converter.facebook_profile_data()
     self.assertEqual(base_data['gender'], 'male')
     data = converter.facebook_registration_data()
     self.assertEqual(data['gender'], 'm')
     action, user = connect_user(self.request, facebook_graph=graph)
     self.assertEqual(user.get_profile().gender, 'm')
Exemplo n.º 48
0
def wall_post(request):
    '''
    Handle image uploading to Facebook
    '''
    fb = get_persistent_graph(request)
    if fb.is_authenticated():
        #handling the form without a form class for explanation
        #in your own app you could use a neat django form to do this
        message = request.POST.get('message')
        fb.set('me/feed', message=message)

        from django.contrib import messages
        messages.info(request, 'Posted the message to your wall')

    return next_redirect(request)
Exemplo n.º 49
0
    def __init__(self, request, place, page_url):
        """ Create a new facebook import service object.

        @type request: django.core.handlers.wsgi.WSGIRequest
        @type place: str
        @param place: city for search and filter by
        @type page_url: str
        @param page_url: facebook page url (events owner)
        """
        self.request = request
        self.place = place
        self.page_url = page_url

        self.page = 0
        self.graph = get_persistent_graph(request)
        self.lower_place = self.place.lower()
Exemplo n.º 50
0
def connect_async_ajax(request):
    '''
    Not yet implemented:
    The idea is to run the entire connect flow on the background using celery
    Freeing up webserver resources, when facebook has issues
    '''
    from django_facebook import tasks as facebook_tasks
    graph = get_persistent_graph(request)
    output = {}
    if graph:
        facebook = FacebookUserConverter(graph)
        task = facebook_tasks.async_connect_user(request, graph)
        output['task_id'] = task.id
    from open_facebook.utils import json
    json_dump = json.dumps(output)
    return HttpResponse(json_dump)
Exemplo n.º 51
0
def image_upload(request):
    fb = get_persistent_graph(request)
    print request
    if request.FILES:
        print "123"
        pictures = request.POST.getlist('images')
        print pictures
        for picture in pictures:
            fb.set('me/photos',
                   url="http://asdasd.asd",
                   message='the writing is one The '
                   'wall image %s' % picture)

        messages.info(request, 'The images have been added to your profile!')

        return next_redirect(request)
    return render(request, 'send_images.html')
Exemplo n.º 52
0
def image_upload(request):
    '''
    Handle image uploading to Facebook
    '''
    fb = get_persistent_graph(request)
    if fb.is_authenticated():
        #handling the form without a form class for explanation
        #in your own app you could use a neat django form to do this
        pictures = request.POST.getlist('pictures')
        from django.contrib import messages

        for picture in pictures:
            fb.set('me/photos', url=picture, message='the writing is one The '
                'wall image %s' % picture)

        messages.info(request, 'The images have been added to your profile!')

    return next_redirect(request)
Exemplo n.º 53
0
def test_permissions(request, scope_list, redirect_uri=None):
    '''
    Call Facebook me/permissions to see if we are allowed to do this
    '''
    from django_facebook.api import get_persistent_graph
    from open_facebook import exceptions as facebook_exceptions
    fb = get_persistent_graph(request, redirect_uri=redirect_uri)
    permissions_dict = {}
    
    if fb:
        try:
            permissions_response = fb.get('me/permissions')
            permissions = permissions_response['data'][0]
        except facebook_exceptions.OAuthException, e:
            #this happens when someone revokes their permissions while the session
            #is still stored
            permissions = {}
        permissions_dict = dict([(k,bool(int(v))) for k,v in permissions.items() if v == '1' or v == 1])
Exemplo n.º 54
0
    def test_update_access_token(self):
        request = RequestMock().get('/')
        request.session = {}
        request.user = AnonymousUser()
        graph = get_persistent_graph(request, access_token='paul')
        action, user = connect_user(self.request, facebook_graph=graph)
        first_user_id = user.id

        # new token required should start out as False
        profile = try_get_profile(user)
        new_token_required = get_user_attribute(user, profile,
                                                'new_token_required')
        self.assertEqual(new_token_required, False)

        # we manually set it to true
        update_user_attributes(user,
                               profile,
                               dict(new_token_required=True),
                               save=True)
        if profile:
            profile = get_profile_model().objects.get(id=profile.id)
        user = get_user_model().objects.get(id=user.id)
        new_token_required = get_user_attribute(user, profile,
                                                'new_token_required')
        self.assertEqual(new_token_required, True)

        # another update should however set it back to False
        request.facebook = None
        graph = get_facebook_graph(request, access_token='paul2')
        logger.info('and the token is %s', graph.access_token)
        action, user = connect_user(self.request, facebook_graph=graph)
        user = get_user_model().objects.get(id=user.id)
        self.assertEqual(user.id, first_user_id)
        if profile:
            profile = get_profile_model().objects.get(id=profile.id)
        user = get_user_model().objects.get(id=user.id)
        new_token_required = get_user_attribute(user, profile,
                                                'new_token_required')
        self.assertEqual(new_token_required, False)
Exemplo n.º 55
0
def post(request):
    if request.method == 'POST':
        form = PictureForm(request.POST, request.FILES)
        if form.is_valid():
            picture = form.save(commit=False)
            picture.owner = request.user
            picture.save()

            #Adding brands to picture
            words = input_to_words(request.POST['brands'])
            add_brands(words, picture)

            fb = get_persistent_graph(request)
            picture_to_upload = picture.get_url()
            fb.set('me/photos',
                   url=picture_to_upload,
                   message=picture.description)
            messages.info(request, 'Imagen subida correctamente')

            return HttpResponseRedirect('/pictures/view/%s' % (picture.pk))
    else:
        form = PictureForm()
    return render_to_response('pictures/post.html', {'form': form},
                              context_instance=RequestContext(request))
Exemplo n.º 56
0
 def test_persistent_graph(self):
     from django.test import RequestFactory
     request = RequestFactory()
     request.session = {}
     request.user = AnonymousUser()
     get_persistent_graph(request, access_token='short_username')
Exemplo n.º 57
0
def create_facebook_event(event,
                          request,
                          facebook_owner_id,
                          facebook_owner_type='user'):
    graph = get_persistent_graph(request)

    if not graph:
        raise Exception('Error: facebook authentication is required')

    parser = HTMLParser()
    description = strip_tags(parser.unescape(event.description))

    googlemap_link = 'http://maps.google.com/?ie=UTF8&hq=&q=%s,%s&ll=%s,%s&z=13' % (
        event.location.y, event.location.x, event.location.y, event.location.x)
    description = '%s\r\n\nLocation: %s\r\n\nPrice: %s' % (
        description, googlemap_link, event.price)

    if facebook_owner_type == 'user' and event.tickets:
        description = '%s\r\n\nTickets: %s' % (description, event.tickets)

    location = event.venue.name
    if event.venue.street:
        location += ', %s' % event.venue.street

    location += ', %s' % event.venue.city.name_std
    dates = Event.events.annotate(start_time=Min('single_events__start_time'))\
                 .annotate(end_time=Max('single_events__end_time')).get(pk=event.id)

    if dates.start_time >= dates.end_time:
        dates.end_time += datetime.timedelta(days=1)

    common_params = {
        'name': shorten_string(event.name, 72),  # max length is 75 (with ...)
        'description': unicode(description).encode('utf-8'),
        'location': location
    }

    if facebook_owner_type == 'page' and event.tickets:
        validate = URLValidator()
        try:
            validate(event.tickets)
            common_params['ticket_uri'] = event.tickets
        except ValidationError:
            pass

    if event.is_multiday():
        single_events = list(SingleEvent.homepage_events.filter(event=event))
    else:
        single_events = list(SingleEvent.future_events.filter(event=event))

    event_url = '%s/events' % facebook_owner_id
    event_images = list(event.sorted_images)
    have_images = False
    if len(event_images) > 0:
        event_image = os.path.abspath(
            os.path.join(settings.MEDIA_ROOT, event_images[0].picture.path))
        have_images = True

    event_groups, event_group = [], []
    index = 0
    for single_event in single_events:
        event_group.append(single_event)
        index += 1
        if index == 10:
            event_groups.append(event_group)
            index, event_group = 0, []

    if index != 0:
        event_groups.append(event_group)

    facebook_event_ids, posted_single_events = [], []
    for event_group in event_groups:
        batch, attached_images = [], {}
        for single_event in event_group:
            if not single_event.facebook_event:
                posted_single_events.append(single_event)
                params = common_params.copy()
                params.update({
                    'start_time':
                    single_event.start_time.strftime('%Y-%m-%dT%H:%M:%S-0600'),
                    'end_time':
                    single_event.end_time.strftime('%Y-%m-%dT%H:%M:%S-0600'),
                })

                operation_name = 'create-event-%s' % single_event.id

                batch.append({
                    'method': 'POST',
                    'relative_url': event_url,
                    'body': urllib.urlencode(params),
                    'name': operation_name,
                    'omit_response_on_success': False
                })

                if have_images:
                    picture_url = '{result=%s:$.id}/picture' % operation_name
                    image_name = 'source%s' % single_event.id

                    batch.append({
                        'method': 'POST',
                        'relative_url': picture_url,
                        'attached_files': image_name
                    })

                    attached_images[image_name] = open(event_image)

        if posted_single_events:
            values = {
                'access_token': graph.access_token,
                'batch': json.dumps(batch)
            }

            if have_images:
                values.update(attached_images)

            response = _send_multipart_data(graph.api_url, values)
            for item in response:
                data = json.loads(item['body'])
                if type(data) == dict and 'id' in data:
                    facebook_event_ids.append(data['id'])

    if not posted_single_events:
        raise Exception('Error: no events for posting')

    result = {}
    for i in range(0, len(posted_single_events)):
        attach_facebook_event(int(facebook_event_ids[i]),
                              posted_single_events[i])
        result[posted_single_events[i].id] = facebook_event_ids[i]

    if event.is_multiday():
        single_event = SingleEvent.objects.filter(event=event,
                                                  is_occurrence=False)[0]
        single_event.facebook_event = posted_single_events[0].facebook_event
        single_event.save()

    return result
Exemplo n.º 58
0
 def test_get_persistent(self):
     graph = get_persistent_graph(self.request)
     # fake that we are authenticated and have a facebook graph
     with patch.object(self.request, 'facebook'):
         self.request.user = get_user_model().objects.all()[:1][0]
         graph = get_persistent_graph(self.request)
Exemplo n.º 59
0
def get_prepared_event_data(request, data):
    """
    @todo Refactor - split on several methods
    """
    graph = get_persistent_graph(request)
    facebook_event = graph.fql('''select name,
                                         start_time,
                                         end_time,
                                         description,
                                         pic_big,
                                         pic_cover,
                                         location,
                                         venue,
                                         ticket_uri
                                         from event
                                         where eid = %s''' %
                               data['facebook_event_id'])[0]

    if type(facebook_event['start_time']) == int:
        start_time = datetime.datetime.fromtimestamp(
            facebook_event['start_time'])
    else:
        start_time = dateparser.parse(facebook_event['start_time'])

    if 'end_time' in facebook_event and facebook_event['end_time']:
        if type(facebook_event['end_time']) == int:
            end_time = datetime.datetime.fromtimestamp(
                facebook_event['end_time'])
        else:
            end_time = dateparser.parse(facebook_event['end_time'])
    else:
        end_time = start_time + datetime.timedelta(hours=3)

    image_source = facebook_event['pic_cover']['source'] if facebook_event['pic_cover'] \
        and 'source' in facebook_event['pic_cover'] \
        else facebook_event['pic_big']

    location = city = street = ''
    longitude = latitude = 0

    if facebook_event['venue']:
        location = facebook_event.get('location', '')
        city = facebook_event['venue'].get('city', '')
        street = facebook_event['venue'].get('street', '')
        longitude = facebook_event['venue'].get('longitude', 0)
        latitude = facebook_event['venue'].get('latitude', 0)

    if not (city and longitude and latitude):
        location = city = street = ''
        longitude = latitude = 0

    location_data = {
        'place': location,
        'geo_venue': location,
        'geo_street': street,
        'geo_street_number': '',
        'geo_city': city,
        'geo_longtitude': longitude,
        'location_lng': longitude,
        'geo_latitude': latitude,
        'location_lat': latitude,
        'venue_name': ''
    }

    description = facebook_event['description'].replace('\n', '<br />\n')

    result = {
        'name':
        facebook_event['name'],
        'user_context_type':
        'account',
        'user_context_id':
        request.account.id,
        'family':
        False,
        'date_night':
        False,
        'wheelchair':
        False,
        'website':
        'https://www.facebook.com/events/' + data['facebook_event_id'],
        'when':
        start_time.strftime('%d-%m-%Y'),
        'when_json':
        _get_time_range_json(start_time, end_time),
        'price':
        '$',
        'description':
        description,
        'description_json':
        json.dumps({
            'default': description,
            'days': {
                start_time.strftime('%m/%d/%Y'): description
            }
        }),
        'tags':
        '',
        'tickets':
        facebook_event['ticket_uri'],
        'images':
        _get_images_json(image_source),
        'picture_src':
        '',
        'cropping':
        '',
        'linking_venue_mode':
        'GOOGLE',
        'event_type':
        'SINGLE',
        'occurrences_json': []
    }

    result.update(location_data)
    return result