def index(user, request): greets = Greeting.objects.filter(users=user).order_by('lang') languages = Language.objects.all() first_name = '' try: graph = GraphAPI(user.access_token) first_name = graph.get_object('me')['first_name'] except Exception: first_name = '' c = {'uid':user.uid, 'greets':greets, 'languages':languages, 'first_name':first_name} return render(user, request, "index.html", c)
def set_default_lang(user, request): try: graph = GraphAPI(user.access_token) # Get friend list friends = graph.get_connections("me","friends")['data'] except Exception: return redirect('/greetme/') if request.method =='POST': form = DefaultLanguageForm(request.POST) if form.is_valid(): cd = form.cleaned_data o = DefaultLanguage(lang=cd['lang'], user=user) o.save() included_friends = request.POST.getlist('select') excluded_friends = [f for f in friends if included_friends.count(f['id'])==0] # Delete the previous settings before e = ExcludedFriend.objects.filter(user=user) e.delete() for sel in excluded_friends: e = ExcludedFriend(user=user, friend_id=sel['id']) e.save() return redirect('/greetme/') else: try: o = DefaultLanguage.objects.get(user=user) except DefaultLanguage.DoesNotExist: o = DefaultLanguage(user=user) form = DefaultLanguageForm( instance=o) ex_friends_id = [ ex.friend_id for ex in ExcludedFriend.objects.filter(user=user)] excluded_friends = [] included_friends = [] for f in friends: if ex_friends_id.count(f['id'])>0: excluded_friends.append(f) else: included_friends.append(f) return render(user, request, 'options.html', {'form': form,\ 'excluded_friends':excluded_friends,\ 'included_friends': included_friends})
def get_user_from_token(uid, access_token): """ Get the user and if it doesn't exist create it into db. Store a local instance of the user data so we don't need a round-trip to Facebook on every request """ try: user = FacebookUser.objects.get(uid=uid, aid=FACEBOOK_APP['ID']) except FacebookUser.DoesNotExist: try: graph = GraphAPI(access_token) profile = graph.get_object("me") user = FacebookUser(uid=str(profile["id"]), aid=FACEBOOK_APP['ID'], profile_url=profile["link"], access_token=access_token, username=str(profile["username"])) user.save() # We have to create some default greeting senteces for him # and an default language too def_greets = Greeting.objects.filter(default=True) for def_g in def_greets: def_g.users.add(user) try: l = Language.objects.get(id='en') except Language.DoesNotExist: l = Language(id='en', name='English') l.save() opt = DefaultLanguage(user=user, lang=l) opt.save() except GraphAPIError: return None else: # Update the access token! if access_token and user.access_token != access_token: user.access_token = access_token user.save() return user