Пример #1
0
def fetch_me(request):
    user = User.objects.get(fb_uid=request.facebook["uid"])
    if not user.data_fetched:
        graph = facebook.GraphAPI(request.facebook["access_token"])
        fb_profile = graph.get_object("me")
        profile = FacebookProfile(fb_profile)
        user.name = fb_profile["name"]
        user.first_name = profile.first_name
        user.last_name = profile.last_name
        user.email = fb_profile.get("email", "")
        user.birthday = profile.dob
        user.location_name = profile.location or ""
        user.location_state = profile.location_state or ""
        user.location_city = profile.location_city or ""
        user.far_from_home = profile.far_from_home()
        user.data_fetched = True
        user.save()
        voter = fetch_voter_from_fb_profile(profile)
        user = User.objects.get(id=user.id)
        if voter:
            user.votizen_id = voter.votizen_id
            user.registered = voter.registered
            user.save()
        try:
            _send_join_email(user, request)
        except Exception as e:
            logging.exception("error sending join email")
        if user.registered:
            update_friends_of.delay(user.id)
        _fetch_fb_friends(request)
    redirect_url = reverse("main:pledge")
    return HttpResponse(redirect_url, content_type="text/plain")
Пример #2
0
def fetch_me(request):
    user = User.objects.get(fb_uid=request.facebook["uid"])
    if not user.data_fetched:
        graph = facebook.GraphAPI(request.facebook["access_token"])
        fb_profile = graph.get_object("me")
        profile = FacebookProfile(fb_profile)
        user.name = fb_profile["name"]
        user.first_name = profile.first_name
        user.last_name = profile.last_name
        user.email = fb_profile.get("email", "")
        user.birthday = profile.dob
        user.location_name = profile.location or ""
        user.location_state = profile.location_state or ""
        user.location_city = profile.location_city or ""
        user.far_from_home = profile.far_from_home()
        user.data_fetched = True
        user.save()
        voter = fetch_voter_from_fb_profile(profile)
        user = User.objects.get(id=user.id)
        if voter:
            user.votizen_id = voter.votizen_id
            user.registered = voter.registered
            user.save()
        try:
            _send_join_email(user, request)
        except Exception as e:
            logging.exception("error sending join email")
        if user.registered:
            update_friends_of.delay(user.id)
        _fetch_fb_friends(request)
    redirect_url = reverse("main:pledge")
    return HttpResponse(redirect_url, content_type="text/plain")
Пример #3
0
def my_vote_vote(request):
    user = User.objects.get(fb_uid=request.facebook["uid"])
    after = request.session.get('after', None)

    if request.method == 'GET':
        return render_to_response("my_vote_vote.html", {
            'page': 'my_vote',
            'section': 'vote',
            'user': user,
        }, context_instance=RequestContext(request))

    elif request.method == 'POST':
        if 'yes' in request.POST:
            explicit_share = request.POST.get('tell-friends', '') == 'on'
            if explicit_share:
                og_url = opengraph_url(request, settings.FACEBOOK_OG_VOTE_ACTION)
                share = requests.post(og_url, params={
                        'election': settings.BASE_URL + reverse('vote_object'),
                        'access_token': request.facebook['access_token'],
                        'fb:explicitly_shared': 'true',
                        })
                print 'Explicit share vote response: %s' % share.status_code
                print share.content
            user.explicit_share_vote = explicit_share
            user.date_voted = datetime.now()
            try:
                friendships = Friendship.objects.filter(fb_uid=user.fb_uid)
                for friendship in friendships:
                    friendship.date_voted = datetime.now()
                    friendship.save()
            except Friendship.DoesNotExist:
                pass
            messages.add_message(
                request, messages.INFO,
                # Translators: message displayed to users in when they mark themselves as having voted.
                _("Your voice was heard! Make sure your friends' voices are also heard:")
            )
            if after:
                redirect_view = after
            else:
                redirect_view = 'main:invite_friends_2'
        else:
            user.date_voted = None
            messages.add_message(
                request, messages.INFO,
                # Translators: message displayed to users in when they mark themselves as not having voted.
                _("Got it, you haven't voted yet. Don't forget!")
            )
            if after:
                redirect_view = after
            else:
                redirect_view = 'main:invite_friends_2'
        user.save()

        update_friends_of.delay(user.id)

        return redirect(redirect_view)
Пример #4
0
def submit_pledge(request):
    next = reverse("main:my_vote")
    user = User.objects.get(fb_uid=request.facebook["uid"])

    explicit_share = request.GET.get('explicit_share', None) == 'true'
    if explicit_share:
        og_url = opengraph_url(request, settings.FACEBOOK_OG_PLEDGE_ACTION)
        share = requests.post(og_url,
                              params={
                                  'vote_obj':
                                  settings.BASE_URL + reverse('pledge_object'),
                                  'access_token':
                                  request.facebook['access_token'],
                                  'fb:explicitly_shared':
                                  'true',
                              })
        print 'Explicit share pledge response: %s' % share.status_code
        print share.content

    user = User.objects.get(id=user.id)
    user.explicit_share = explicit_share
    user.date_pledged = datetime.now()
    user.save()

    showing_message = False

    join_block = request.GET.get('join_block', None) == 'true'
    if join_block:
        block = _voting_block_from_session(request.session)
        if not VotingBlockMember.objects.filter(
                member=user, voting_block_id=block.pk).exists():
            showing_message = True
            messages.add_message(request, messages.INFO,
                                 _voting_block_join_message(block))
            try:
                VotingBlockMember.objects.create(member=user,
                                                 voting_block_id=block.pk,
                                                 joined=datetime.now())
            except IntegrityError:
                pass
        next = reverse("main:voting_blocks_item", args=[
            block.pk,
        ])

    update_friends_of.delay(user.id)
    if not showing_message:
        messages.add_message(
            request,
            messages.INFO,
            # Translators: message displayed to users in green bar when they pledge to vote
            _("Thank you for pledging to vote!"))
    return {"next": next}
Пример #5
0
def _unpledge(request):
    if request.method == 'POST':
        user = User.objects.get(fb_uid=request.facebook["uid"])
        user.date_pledged = None
        user.save()
        update_friends_of.delay(user.id)
        messages.add_message(
            request, messages.INFO,
            # Translators: message displayed to users when they unpledge
            _("Sorry to hear that you're no longer pledging to vote.")
        )
        return redirect('main:my_vote')
    return HttpResponseNotAllowed()
Пример #6
0
def _unpledge(request):
    if request.method == 'POST':
        user = User.objects.get(fb_uid=request.facebook["uid"])
        user.date_pledged = None
        user.save()
        update_friends_of.delay(user.id)
        messages.add_message(
            request,
            messages.INFO,
            # Translators: message displayed to users when they unpledge
            _("Sorry to hear that you're no longer pledging to vote."))
        return redirect('main:my_vote')
    return HttpResponseNotAllowed()
Пример #7
0
def submit_pledge(request):
    next = reverse("main:my_vote")
    user = User.objects.get(fb_uid=request.facebook["uid"])

    explicit_share = request.GET.get('explicit_share', None) == 'true'
    if explicit_share:
        og_url = opengraph_url(request, settings.FACEBOOK_OG_PLEDGE_ACTION)
        share = requests.post(og_url, params={
            'vote': settings.BASE_URL + reverse('pledge_object'),
            'access_token': request.facebook['access_token'],
            'fb:explicitly_shared': 'true',
        })
        print 'Explicit share pledge response: %s' % share.status_code
        print share.content

    user = User.objects.get(id=user.id)
    user.explicit_share = explicit_share
    user.date_pledged = datetime.now()
    user.save()

    showing_message = False

    join_block = request.GET.get('join_block', None) == 'true'
    if join_block:
        block = _voting_block_from_session(request.session)
        if not VotingBlockMember.objects.filter(
            member=user, voting_block_id=block.pk).exists():
            showing_message = True
            messages.add_message(
                request, messages.INFO,
                _voting_block_join_message(block))
            try:
                VotingBlockMember.objects.create(
                    member=user,
                    voting_block_id=block.pk,
                    joined=datetime.now())
            except IntegrityError:
                pass
        next = reverse("main:voting_blocks_item", args=[block.pk,])

    update_friends_of.delay(user.id)
    if not showing_message:
        messages.add_message(
            request, messages.INFO,
            # Translators: message displayed to users in green bar when they pledge to vote
            _("Thank you for pledging to vote!"))
    return {"next": next}
Пример #8
0
def my_vote_pledge(request):
    if not request.facebook:
        # assuming optimizely server.
        user = { "pledged": False }
    else:
        user = User.objects.get(fb_uid=request.facebook["uid"])
        if request.GET.get("from_widget", False):
            user.registered = True
            user.used_registration_widget = True
            user.save()
            update_friends_of.delay(user.id)
            messages.add_message(
                request, messages.INFO,
                # Translators: message displayed to users in green bar when they register to vote
                _("Thank you for enrolling to vote!"))
    voting_block = _voting_block_from_session(request.session)
    return render_to_response("my_vote_pledge.html", {
        'page': 'my_vote',
        'section': 'pledge',
        'user': user,
        'voting_block': voting_block
    }, context_instance=RequestContext(request))
Пример #9
0
def my_vote_pledge(request):
    if not request.facebook:
        # assuming optimizely server.
        user = {"pledged": False}
    else:
        user = User.objects.get(fb_uid=request.facebook["uid"])
        if request.GET.get("from_widget", False):
            user.registered = True
            user.used_registration_widget = True
            user.save()
            update_friends_of.delay(user.id)
            messages.add_message(
                request,
                messages.INFO,
                # Translators: message displayed to users in green bar when they register to vote
                _("Thank you for registering to vote!"))
    voting_block = _voting_block_from_session(request.session)
    return render_to_response("my_vote_pledge.html", {
        'page': 'my_vote',
        'section': 'pledge',
        'user': user,
        'voting_block': voting_block
    },
                              context_instance=RequestContext(request))
Пример #10
0
def my_vote_vote(request):
    user = User.objects.get(fb_uid=request.facebook["uid"])
    after = request.session.get('after', None)

    if request.method == 'GET':
        return render_to_response("my_vote_vote.html", {
            'page': 'my_vote',
            'section': 'vote',
            'user': user,
        },
                                  context_instance=RequestContext(request))

    elif request.method == 'POST':
        if 'yes' in request.POST:
            explicit_share = request.POST.get('tell-friends', '') == 'on'
            if explicit_share:
                og_url = opengraph_url(request,
                                       settings.FACEBOOK_OG_VOTE_ACTION)
                share = requests.post(og_url,
                                      params={
                                          'election_obj':
                                          settings.BASE_URL +
                                          reverse('vote_object'),
                                          'access_token':
                                          request.facebook['access_token'],
                                          'fb:explicitly_shared':
                                          'true',
                                      })
                print 'Explicit share vote response: %s' % share.status_code
                print share.content
            user.explicit_share_vote = explicit_share
            user.date_voted = datetime.now()
            try:
                friendships = Friendship.objects.filter(fb_uid=user.fb_uid)
                for friendship in friendships:
                    friendship.date_voted = datetime.now()
                    friendship.save()
            except Friendship.DoesNotExist:
                pass
            messages.add_message(
                request,
                messages.INFO,
                # Translators: message displayed to users in when they mark themselves as having voted.
                _("Your voice was heard! Make sure your friends' voices are also heard:"
                  ))
            if after:
                redirect_view = after
            else:
                redirect_view = 'main:invite_friends_2'
        else:
            user.date_voted = None
            messages.add_message(
                request,
                messages.INFO,
                # Translators: message displayed to users in when they mark themselves as not having voted.
                _("Got it, you haven't voted yet. Don't forget!"))
            if after:
                redirect_view = after
            else:
                redirect_view = 'main:invite_friends_2'
        user.save()

        update_friends_of.delay(user.id)

        return redirect(redirect_view)