Esempio n. 1
0
def follow(request,
           username,
           public_profile_field=None,
           template_name='profiles/profile_list.html',
           extra_context=None):
    from_user = request.user
    to_user = User.objects.get(username=username)
    #follower friendship type
    friendship = Friendship.objects.filter(from_user=from_user,
                                           to_user=to_user)
    if friendship.count() > 0:
        friendship[0].reactivate()
    else:
        friendship = Friendship(from_user=from_user,
                                to_user=to_user,
                                relation_mutual=False)
        friendship.save()
    if notification:
        notification.send([to_user], "new_follower",
                          {"new_follower": from_user})
    #stats
    from_user_stats = ProfileStats.objects.get(user=from_user)
    from_user_stats.following = int(from_user_stats.following) + 1
    from_user_stats.save()
    to_user_stats = ProfileStats.objects.get(user=to_user)
    to_user_stats.followers = int(to_user_stats.followers) + 1
    to_user_stats.save()
    response = {'success': True}
    if request.is_ajax():
        json_response = simplejson.dumps(response)
        return HttpResponse(json_response, mimetype="application/json")
    return HttpResponseRedirect(
        reverse('profiles_profile_detail', kwargs={'username': username}))
 def makeFriendship(self, user, friend):
     if self.getRelation(user, friend) == Friendship.STRANGERS:
         friendship = Friendship()
         friendship.user_id = user.id
         friendship.friend_id = friend.id
         friendship.save()
     return True
Esempio n. 3
0
def follow(request, username,  public_profile_field=None,
                   template_name='profiles/profile_list.html',
                   extra_context=None):    
        from_user= request.user
        to_user = User.objects.get(username=username)
        #follower friendship type 
        friendship = Friendship.objects.filter(from_user=from_user, to_user=to_user)
        if friendship.count() >0:
            friendship[0].reactivate()            
        else:                
            friendship = Friendship(from_user=from_user, to_user=to_user, relation_mutual=False)
            friendship.save()
        if notification:
            notification.send([to_user], "new_follower", {"new_follower": from_user})   
        #stats
        from_user_stats = ProfileStats.objects.get(user=from_user)
        from_user_stats.following = int(from_user_stats.following) + 1
        from_user_stats.save()
        to_user_stats = ProfileStats.objects.get(user=to_user)
        to_user_stats.followers = int(to_user_stats.followers) + 1
        to_user_stats.save()
        response = {'success':True}
        if request.is_ajax(): 
            json_response = simplejson.dumps(response)           
            return HttpResponse(json_response, mimetype="application/json")                     
        return HttpResponseRedirect(reverse('profiles_profile_detail',
                              kwargs={ 'username': username }))
Esempio n. 4
0
def make_friends(from_user, to_user):
    if not Friendship.objects.are_friends(from_user, to_user):
        if from_user != to_user:
            friendship = Friendship(from_user=from_user, to_user=to_user)
            friendship.save()
            return True
    else:
        return False
Esempio n. 5
0
def follow(request, user_id):
    """关注 @fanlintao 20131105"""
    error = {'success': '', 'error': ''}
    t_user = get_object_or_404(MyUser, pk=user_id)
    f = Friendship(from_user=request.user, to_user=t_user)
    f.save()
    error['success'] = 'success'
    return HttpResponse(json.dumps(error, ensure_ascii=False), mimetype="application/json")
Esempio n. 6
0
def follow(request, user_id):
    """关注 @fanlintao 20131105"""
    error = {'success': '', 'error': ''}
    t_user = get_object_or_404(MyUser, pk=user_id)
    f = Friendship(from_user=request.user, to_user=t_user)
    f.save()
    error['success'] = 'success'
    return HttpResponse(json.dumps(error, ensure_ascii=False),
                        mimetype="application/json")
Esempio n. 7
0
def add_friend(request):
    if request.method == 'POST':
        username = request.POST['username']
        try:
            friend = User.objects.get(username=username)
        except User.DoesNotExist:
            return redirect("/friends/?error=no_friend")
        Friendship.create_friendship(request.user, friend)
        return redirect("/friends/")
Esempio n. 8
0
    def setUp(self):
        user1 = User.objects.create_user('johndoe',
                                         '*****@*****.**',
                                         'johndoe')
        self.client.login(username='******', password='******')

        user2 = User.objects.create_user('janedoe',
                                         '*****@*****.**',
                                         'janedoe')

        Friendship.create_friendship(user1, user2)
Esempio n. 9
0
def make_friends(from_user, to_user):
    """
    Provides a helper function to create a friendship between two users.
    """
    if not Friendship.objects.are_friends(from_user, to_user):
        if from_user != to_user:
            friendship = Friendship(from_user=from_user, to_user=to_user)
            friendship.save()
            return True
    else:
        return False
Esempio n. 10
0
 def accept(self):
     if not Friendship.objects.are_friends(self.to_user, self.from_user):
         friendship = Friendship(to_user=self.to_user, from_user=self.from_user)
         friendship.save()
         self.status = "5"
         self.save()
         if notification:
             notification.send([self.from_user], "friends_accept", {"invitation": self})
             notification.send([self.to_user], "friends_accept_sent", {"invitation": self})
             for user in friend_set_for(self.to_user) | friend_set_for(self.from_user):
                 if user != self.to_user and user != self.from_user:
                     notification.send([user], "friends_otherconnect", {"invitation": self, "to_user": self.to_user})
Esempio n. 11
0
 def accept(self, new_user):
     # mark invitation accepted
     self.status = "5"
     self.save()
     # auto-create friendship
     friendship = Friendship(to_user=new_user, from_user=self.from_user)
     friendship.save()
     # notify
     if notification:
         notification.send([self.from_user], "join_accept", {"invitation": self, "new_user": new_user})
         friends = []
         for user in friend_set_for(new_user) | friend_set_for(self.from_user):
             if user != new_user and user != self.from_user:
                 friends.append(user)
         notification.send(friends, "friends_otherconnect", {"invitation": self, "to_user": new_user})
Esempio n. 12
0
 def test_is_member_friends(self):
     # return false if requesting user is not a friend
     self.failIf(models.is_member_friends(self.target_user, self.requesting_user))
     
     # return true if requesting user is a friends
     Friendship(to_user=self.requesting_user, from_user=self.target_user).save()
     self.failUnless(models.is_member_friends(self.target_user, self.requesting_user))
Esempio n. 13
0
def ajax_follow(request):
    """关注 @fanlintao 20131106 """
    error = {'success': '', 'error': ''}
    if request.method == 'POST':
        try:
            t_user = MyUser.objects.get(pk=request.POST.get('user_id'))
            try:
                Friendship.objects.get(from_user=request.user, to_user=t_user)
                error['error'] = 'error'
                return HttpResponse(json.dumps(error, ensure_ascii=False), mimetype="application/json")
            except ObjectDoesNotExist:
                f = Friendship(from_user=request.user, to_user=t_user)
                f.save()
                friend_notify.send(sender=f, instance=f)
                error['success'] = 'success'
                return HttpResponse(json.dumps(error, ensure_ascii=False), mimetype="application/json")
        except ObjectDoesNotExist:
            error['error'] = 'error'
            return HttpResponse(json.dumps(error, ensure_ascii=False), mimetype="application/json")
Esempio n. 14
0
def index(request):
    userperson = request.user.person
    user = request.user.username

    if request.POST:
        newf = request.POST.get("new")
        lookup = User.objects.filter(username = newf)

        if len(lookup) == 0 or user == newf:
            fr = Friendship.objects.filter(source = userperson)
            friends = map(lambda f: f.target, fr)
            return render(request, 'friends/index.html', {'error': 'that is not a valid user', 'friends': friends, 'username': userperson.firstname, 'points': userperson.currentpoints})

        else:
            u = userperson
            t = lookup[0].person
            friends = Friendship.objects.filter(source = u, target = t)
            if len(friends) > 0:
                fr = Friendship.objects.filter(source = userperson)
                friends = map(lambda f: f.target, fr)
                return render(request, 'friends/index.html', {'error': 'you are already friends', 'friends': friends, 'username': userperson.firstname, 'points': userperson.currentpoints})
            f = Friendship(source = u, target = t)
            f2 = Friendship(source = t, target = u)
            f.save()
            f2.save()
            fr = Friendship.objects.filter(source = userperson)
            friends = map(lambda f: f.target, fr)
            return render(request, 'friends/index.html', {'error': 'successful!', 'friends': friends, 'username': userperson.firstname, 'points': userperson.currentpoints})

    else:
        fr = Friendship.objects.filter(source = userperson)
        friends = map(lambda f: f.target, fr)
        return render(request, 'friends/index.html', {'friends':friends, 'username': userperson.firstname, 'points': userperson.currentpoints})
Esempio n. 15
0
def ajax_follow(request):
    """关注 @fanlintao 20131106 """
    error = {'success': '', 'error': ''}
    if request.method == 'POST':
        try:
            t_user = MyUser.objects.get(pk=request.POST.get('user_id'))
            try:
                Friendship.objects.get(from_user=request.user, to_user=t_user)
                error['error'] = 'error'
                return HttpResponse(json.dumps(error, ensure_ascii=False),
                                    mimetype="application/json")
            except ObjectDoesNotExist:
                f = Friendship(from_user=request.user, to_user=t_user)
                f.save()
                friend_notify.send(sender=f, instance=f)
                error['success'] = 'success'
                return HttpResponse(json.dumps(error, ensure_ascii=False),
                                    mimetype="application/json")
        except ObjectDoesNotExist:
            error['error'] = 'error'
            return HttpResponse(json.dumps(error, ensure_ascii=False),
                                mimetype="application/json")
Esempio n. 16
0
 def perform_create(self, serializer):
     friendship = Friendship(**serializer.validated_data)
     friendship.sender = self.request.user
     friendship.save()
Esempio n. 17
0
while i < 3:
    friendshipinv = FriendshipInvitation(from_child = families[0]["child"+str(i)], to_child = families[1]["child"+str(i)], from_user= families[0]["father"], to_user=families[1]["father"], message="Dude. This site is awesome", how_related=4)
    friendshipinv.save_and_notify()
    i=i+1




print "here10"
# print str(families)


# create friendships
i=1
while i < 4:
    friendship = Friendship(from_child = families[0]["child"+str(i)], to_child = families[1]["child"+str(i)])
    friendship.save()
    i=i+1

benchild = Child.objects.get(id=105)
i=1
while i < 4:
    friendship = Friendship(from_child = families[0]["child"+str(i)], to_child = benchild)
    friendship.save()
    i=i+1

benchild = Child.objects.get(id=1)
i=1
while i < 4:
    friendship = Friendship(from_child = families[0]["child"+str(i)], to_child = benchild)
    friendship.save()
Esempio n. 18
0
 def is_friend(self, user):
     return Friendship.are_friends(self, user)
Esempio n. 19
0
    def test_has_perm(self):
        # if no permissions are set fallback to default
        SocialObjectPermission.objects.all().delete()
        # default of nobody should always be false
        settings.DEFAULT_SOCIAL_PERMISSION_GROUP = 0    # Nobody

        self.requesting_user.has_perm(perm='view', obj=self.post)
        self.failIf(self.requesting_user.has_perm(perm='view', obj=self.post))
        # default of everyone should always be true
        settings.DEFAULT_SOCIAL_PERMISSION_GROUP = 3    # Everybody
        self.failUnless(self.requesting_user.has_perm(perm='view', obj=self.post))
        
        # default of friend should be true if requesting user is a friend
        settings.DEFAULT_SOCIAL_PERMISSION_GROUP = 1    # Friends
        direct_friendship = Friendship(to_user=self.requesting_user, from_user=self.target_user)
        direct_friendship.save()
        self.failUnless(self.requesting_user.has_perm(perm='view', obj=self.post))
        direct_friendship.delete()
        
        # default of friends of friends should be true if requesting user is a friend of a friend
        settings.DEFAULT_SOCIAL_PERMISSION_GROUP = 2    # Friends of Friends
        Friendship(to_user = self.intermediate_user, from_user=self.target_user).save()
        indirect_friendship = Friendship(to_user = self.requesting_user, from_user=self.intermediate_user)
        indirect_friendship.save()
        self.failUnless(self.requesting_user.has_perm(perm='view', obj=self.post))
        indirect_friendship.delete()

        # if no default is set and no perms are found raise a conf error
        del settings.DEFAULT_SOCIAL_PERMISSION_GROUP
        SocialObjectPermission.objects.all().delete()
        self.failUnlessRaises(ImproperlyConfigured, self.requesting_user.has_perm, perm='view', obj=self.post)

        # if a permission does exist use it to determine access
        # nobody perm should always be false
        nobody_perm = SocialObjectPermission(user=self.target_user, can_view=True, social_group=0, content_type=ContentType.objects.get_for_model(self.post))
        nobody_perm.save()
        self.failIf(self.requesting_user.has_perm(perm='view', obj=self.post))
        nobody_perm.delete()
        
        # everyone perm should always be true
        everyone_perm = SocialObjectPermission(user=self.target_user, can_view=True, social_group=3, content_type=ContentType.objects.get_for_model(self.post))
        everyone_perm.save()
        self.failUnless(self.requesting_user.has_perm(perm='view', obj=self.post))
        everyone_perm.delete()

        # permission takes priority by group id
        # hence nobody takes priority over everyone since it has a lower group number
        nobody_perm = SocialObjectPermission(user=self.target_user, can_view=True, social_group=0, content_type=ContentType.objects.get_for_model(self.post))
        nobody_perm.save()
        everyone_perm = SocialObjectPermission(user=self.target_user, can_view=True, social_group=3, content_type=ContentType.objects.get_for_model(self.post))
        everyone_perm.save()
        self.failIf(self.requesting_user.has_perm(perm='view', obj=self.post))
Esempio n. 20
0
 def test_is_member_friends_of_friends(self):
     # return true if requesting user is a friend
     direct_friendship = Friendship(to_user=self.requesting_user, from_user=self.target_user)
     direct_friendship.save()
     self.failUnless(models.is_member_friends_of_friends(self.target_user, self.requesting_user))
     direct_friendship.delete()
     
     # return true if requesting user is a friend of a friend
     Friendship(to_user = self.intermediate_user, from_user=self.target_user).save()
     indirect_friendship = Friendship(to_user = self.requesting_user, from_user=self.intermediate_user)
     indirect_friendship.save()
     self.failUnless(models.is_member_friends_of_friends(self.target_user, self.requesting_user))
     indirect_friendship.delete()
     
     # return false if requesting user is not a friend, nor a friend of a friend
     self.failIf(models.is_member_friends_of_friends(self.target_user, self.requesting_user))