コード例 #1
0
ファイル: views.py プロジェクト: keokilee/makahiki
def change(request, extra_context={}, next_override=None):
    file_error = None
    avatars = Avatar.objects.filter(user=request.user).order_by('-primary')
    if avatars.count() > 0:
        avatar = avatars[0]
        kwargs = {'initial': {'choice': avatar.id}}
    else:
        avatar = None
        kwargs = {}
    primary_avatar_form = PrimaryAvatarForm(request.POST or None, user=request.user, **kwargs)
    if request.method == "POST":
        updated = False
        if 'avatar' in request.FILES:
            try:
              __handle_uploaded_file(request.FILES['avatar'], request.user)
              updated = True
              return HttpResponseRedirect(reverse("profile_index") + "?changed_avatar=True")
            except Exception:
              file_error = "Uploaded file is larger than 1 MB."
              
        if 'choice' in request.POST and primary_avatar_form.is_valid():
            avatar = Avatar.objects.get(id=
                primary_avatar_form.cleaned_data['choice'])
            avatar.primary = True
            avatar.save()
            updated = True
            
            return HttpResponseRedirect(reverse("profile_index") + "?changed_avatar=True")
        
    fb_user = facebook.get_user_from_cookie(request.COOKIES, settings.FACEBOOK_APP_ID, settings.FACEBOOK_SECRET_KEY)
    fb_id = None
    
    if fb_user:
      try:
        graph = facebook.GraphAPI(fb_user["access_token"])
        graph_profile = graph.get_object("me")
        fb_id = graph_profile["id"]
      except facebook.GraphAPIError:
        pass
      
    fb_form = FacebookPictureForm(initial={
      "facebook_photo": "http://graph.facebook.com/%s/picture?type=large" % fb_id
    })
    return render_to_response(
        'makahiki_avatar/change.html',
        extra_context,
        context_instance = RequestContext(
            request,
            { 'avatar': avatar, 
              'avatars': avatars,
              'primary_avatar_form': primary_avatar_form,
              'next': next_override or _get_next(request), 
              'fb_id': fb_id,
              'fb_form': fb_form,
              'file_error': file_error,
            }
        )
    )
コード例 #2
0
def _get_profile_form(request, form=None, non_xhr=False):
    """
  Helper method to render the profile form.
  """
    try:
        fb_user = facebook.get_user_from_cookie(request.COOKIES,
                                                settings.FACEBOOK_APP_ID,
                                                settings.FACEBOOK_SECRET_KEY)
    except:
        fb_user = None

    fb_id = None
    facebook_photo = None
    if fb_user:
        try:
            graph = facebook.GraphAPI(fb_user["access_token"])
            graph_profile = graph.get_object("me")
            fb_id = graph_profile["id"]
            facebook_photo = "http://graph.facebook.com/%s/picture?type=large" % fb_id
        except facebook.GraphAPIError:
            return HttpResponse(json.dumps({
                "contents":
                "Facebook is not available at the moment, please try later",
            }),
                                mimetype='application/json')

    if not form:
        form = ProfileForm(
            initial={
                "display_name": request.user.get_profile().name,
                "facebook_photo": facebook_photo,
            })

    response = render_to_string("home/first-login/profile.html", {
        "form": form,
        "fb_id": fb_id,
    },
                                context_instance=RequestContext(request))

    if non_xhr:
        return HttpResponse('<textarea>' +
                            json.dumps({
                                "title": "Introduction: Step 4 of 7",
                                "contents": cgi.escape(response),
                            }) + '</textarea>',
                            mimetype='text/html')
    else:
        return HttpResponse(json.dumps({
            "title": "Introduction: Step 4 of 7",
            "contents": response,
        }),
                            mimetype='application/json')
コード例 #3
0
ファイル: views.py プロジェクト: ilwoof/makahiki
def get_facebook_photo(request):
    """
  Connect to Facebook to get the user's facebook photo..
  """
    if request.is_ajax():
        fb_user = facebook.get_user_from_cookie(request.COOKIES,
                                                settings.FACEBOOK_APP_ID,
                                                settings.FACEBOOK_SECRET_KEY)
        fb_id = None
        fb_error = None
        if not fb_user:
            return HttpResponse(json.dumps({
                "error":
                "We could not access your info.  Please log in again."
            }),
                                mimetype="application/json")

        try:
            graph = facebook.GraphAPI(fb_user["access_token"])
            graph_profile = graph.get_object("me")
            fb_id = graph_profile["id"]
        except facebook.GraphAPIError:
            return HttpResponse(json.dumps({
                "contents":
                "Facebook is not available at the moment, please try later",
            }),
                                mimetype='application/json')

        # Insert the form into the response.
        form = FacebookPictureForm(
            initial={
                "facebook_photo":
                "http://graph.facebook.com/%s/picture?type=large" % fb_id
            })

        response = render_to_string("makahiki_avatar/avatar_facebook.html", {
            "fb_error": fb_error,
            "fb_id": fb_id,
            "fb_form": form,
        },
                                    context_instance=RequestContext(request))

        return HttpResponse(json.dumps({
            "contents": response,
        }),
                            mimetype='application/json')

    raise Http404
コード例 #4
0
ファイル: views.py プロジェクト: keokilee/makahiki
def _get_profile_form(request, form=None, non_xhr=False):
  """
  Helper method to render the profile form.
  """
  try:
    fb_user = facebook.get_user_from_cookie(request.COOKIES, settings.FACEBOOK_APP_ID, settings.FACEBOOK_SECRET_KEY)
  except:
    fb_user = None
    
  fb_id = None
  facebook_photo = None
  if fb_user:
    try:
      graph = facebook.GraphAPI(fb_user["access_token"])
      graph_profile = graph.get_object("me")
      fb_id = graph_profile["id"]
      facebook_photo = "http://graph.facebook.com/%s/picture?type=large" % fb_id
    except facebook.GraphAPIError:
      return HttpResponse(json.dumps({
          "contents": "Facebook is not available at the moment, please try later",
      }), mimetype='application/json')
    
  if not form:
    form = ProfileForm(initial={
      "display_name": request.user.get_profile().name,
      "facebook_photo": facebook_photo,
    })
  
  response = render_to_string("home/first-login/profile.html", {
    "form": form,
    "fb_id": fb_id,
  }, context_instance=RequestContext(request))

  if non_xhr:
    return HttpResponse('<textarea>' + json.dumps({
        "title": "Introduction: Step 4 of 7",
        "contents": cgi.escape(response),
    }) + '</textarea>', mimetype='text/html')
  else:
    return HttpResponse(json.dumps({
        "title": "Introduction: Step 4 of 7",
        "contents": response,
    }), mimetype='application/json')
コード例 #5
0
ファイル: views.py プロジェクト: keokilee/makahiki
def get_facebook_photo(request):
  """
  Connect to Facebook to get the user's facebook photo..
  """
  if request.is_ajax():
    fb_user = facebook.get_user_from_cookie(request.COOKIES, settings.FACEBOOK_APP_ID, settings.FACEBOOK_SECRET_KEY)
    fb_id = None
    fb_error = None
    if not fb_user:
      return HttpResponse(json.dumps({
          "error": "We could not access your info.  Please log in again."
      }), mimetype="application/json")
    
    try:
      graph = facebook.GraphAPI(fb_user["access_token"])
      graph_profile = graph.get_object("me")
      fb_id = graph_profile["id"]
    except facebook.GraphAPIError:
      return HttpResponse(json.dumps({
          "contents": "Facebook is not available at the moment, please try later",
      }), mimetype='application/json')
      
    
    # Insert the form into the response.
    form = FacebookPictureForm(initial={
      "facebook_photo": "http://graph.facebook.com/%s/picture?type=large" % fb_id
    })
    
    response = render_to_string("makahiki_avatar/avatar_facebook.html", {
      "fb_error": fb_error,
      "fb_id": fb_id,
      "fb_form": form,
    }, context_instance=RequestContext(request))

    return HttpResponse(json.dumps({
        "contents": response,
    }), mimetype='application/json')

  raise Http404
コード例 #6
0
ファイル: views.py プロジェクト: ilwoof/makahiki
def change(request, extra_context={}, next_override=None):
    file_error = None
    avatars = Avatar.objects.filter(user=request.user).order_by('-primary')
    if avatars.count() > 0:
        avatar = avatars[0]
        kwargs = {'initial': {'choice': avatar.id}}
    else:
        avatar = None
        kwargs = {}
    primary_avatar_form = PrimaryAvatarForm(request.POST or None,
                                            user=request.user,
                                            **kwargs)
    if request.method == "POST":
        updated = False
        if 'avatar' in request.FILES:
            try:
                __handle_uploaded_file(request.FILES['avatar'], request.user)
                updated = True
                return HttpResponseRedirect(
                    reverse("profile_index") + "?changed_avatar=True")
            except Exception:
                file_error = "Uploaded file is larger than 1 MB."

        if 'choice' in request.POST and primary_avatar_form.is_valid():
            avatar = Avatar.objects.get(
                id=primary_avatar_form.cleaned_data['choice'])
            avatar.primary = True
            avatar.save()
            updated = True

            return HttpResponseRedirect(
                reverse("profile_index") + "?changed_avatar=True")

    fb_user = facebook.get_user_from_cookie(request.COOKIES,
                                            settings.FACEBOOK_APP_ID,
                                            settings.FACEBOOK_SECRET_KEY)
    fb_id = None

    if fb_user:
        try:
            graph = facebook.GraphAPI(fb_user["access_token"])
            graph_profile = graph.get_object("me")
            fb_id = graph_profile["id"]
        except facebook.GraphAPIError:
            pass

    fb_form = FacebookPictureForm(
        initial={
            "facebook_photo":
            "http://graph.facebook.com/%s/picture?type=large" % fb_id
        })
    return render_to_response(
        'makahiki_avatar/change.html',
        extra_context,
        context_instance=RequestContext(
            request, {
                'avatar': avatar,
                'avatars': avatars,
                'primary_avatar_form': primary_avatar_form,
                'next': next_override or _get_next(request),
                'fb_id': fb_id,
                'fb_form': fb_form,
                'file_error': file_error,
            }))
コード例 #7
0
ファイル: views.py プロジェクト: tmac408/makahiki
def change(request, extra_context={}, next_override=None):
    avatars = Avatar.objects.filter(user=request.user).order_by('-primary')
    if avatars.count() > 0:
        avatar = avatars[0]
        kwargs = {'initial': {'choice': avatar.id}}
    else:
        avatar = None
        kwargs = {}
    primary_avatar_form = PrimaryAvatarForm(request.POST or None, user=request.user, **kwargs)
    if request.method == "POST":
        updated = False
        if 'avatar' in request.FILES:
            path = avatar_file_path(user=request.user, 
                filename=request.FILES['avatar'].name)
            avatar = Avatar(
                user = request.user,
                primary = True,
                avatar = path,
            )
            new_file = avatar.avatar.storage.save(path, request.FILES['avatar'])
            avatar.save()
            updated = True
            # request.user.message_set.create(
            #                 message=_("Successfully uploaded a new avatar."))
        if 'choice' in request.POST and primary_avatar_form.is_valid():
            avatar = Avatar.objects.get(id=
                primary_avatar_form.cleaned_data['choice'])
            avatar.primary = True
            avatar.save()
            updated = True
            # request.user.message_set.create(
            #                 message=_("Successfully updated your avatar."))
        # if updated and notification:
        #     notification.send([request.user], "avatar_updated", {"user": request.user, "avatar": avatar})
        #     notification.send((x['friend'] for x in Friendship.objects.friends_for_user(request.user)), "avatar_friend_updated", {"user": request.user, "avatar": avatar})
        # return HttpResponseRedirect(next_override or _get_next(request))
        return HttpResponseRedirect(reverse("profile_index") + "?changed_avatar=True")
        
    fb_user = facebook.get_user_from_cookie(request.COOKIES, settings.FACEBOOK_APP_ID, settings.FACEBOOK_SECRET_KEY)
    fb_id = None
    
    if fb_user:
      try:
        graph = facebook.GraphAPI(fb_user["access_token"])
        graph_profile = graph.get_object("me")
        fb_id = graph_profile["id"]
      except facebook.GraphAPIError:
        pass
      
    return render_to_response(
        'makahiki_avatar/change.html',
        extra_context,
        context_instance = RequestContext(
            request,
            { 'avatar': avatar, 
              'avatars': avatars,
              'primary_avatar_form': primary_avatar_form,
              'next': next_override or _get_next(request), 
              'fb_id': fb_id,}
        )
    )