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
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})
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 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
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")
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
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})
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))
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})
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))
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")
def perform_create(self, serializer): friendship = Friendship(**serializer.validated_data) friendship.sender = self.request.user friendship.save()
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() i=i+1