From 08bf9a987d28fa1eeb1007f027081fef45fb8a9f Mon Sep 17 00:00:00 2001 From: Marcos Ronaldo Date: Wed, 15 Jun 2016 12:13:38 -0300 Subject: [PATCH] changes old follow method. fixes some tests. other changes --- app/models/add_member.rb | 1 + app/models/article.rb | 4 ++-- app/models/block.rb | 2 +- app/models/enterprise.rb | 6 +++--- app/models/favorite_enterprise_person.rb | 4 ++++ app/models/friendship.rb | 1 + app/models/person.rb | 17 +++++++++++------ app/models/profile.rb | 7 ++++++- test/unit/friendship_test.rb | 8 ++++---- 9 files changed, 33 insertions(+), 17 deletions(-) diff --git a/app/models/add_member.rb b/app/models/add_member.rb index 5e978ef..4110a03 100644 --- a/app/models/add_member.rb +++ b/app/models/add_member.rb @@ -22,6 +22,7 @@ class AddMember < Task self.roles = [Profile::Roles.member(organization.environment.id).id] end target.affiliate(requestor, self.roles.select{|r| !r.to_i.zero? }.map{|i| Role.find(i)}) + person.follow(organization) end def title diff --git a/app/models/article.rb b/app/models/article.rb index 4608805..1ad7137 100644 --- a/app/models/article.rb +++ b/app/models/article.rb @@ -534,13 +534,13 @@ class Article < ApplicationRecord scope :display_filter, lambda {|user, profile| return published if (user.nil? && profile && profile.public?) - return [] if user.nil? || (profile && !profile.public? && !user.follows?(profile)) + return [] if user.nil? || (profile && !profile.public? && !profile.in_social_circle?(user)) where( [ "published = ? OR last_changed_by_id = ? OR profile_id = ? OR ? OR (show_to_followers = ? AND ? AND profile_id IN (?))", true, user.id, user.id, profile.nil? ? false : user.has_permission?(:view_private_content, profile), - true, (profile.nil? ? true : user.follows?(profile)), ( profile.nil? ? (user.friends.select('profiles.id')) : [profile.id]) + true, (profile.nil? ? true : profile.in_social_circle?(user)), ( profile.nil? ? (user.friends.select('profiles.id')) : [profile.id]) ] ) } diff --git a/app/models/block.rb b/app/models/block.rb index a05d09e..4e138a6 100644 --- a/app/models/block.rb +++ b/app/models/block.rb @@ -88,7 +88,7 @@ class Block < ApplicationRecord end def display_to_user?(user) - display_user == 'all' || (user.nil? && display_user == 'not_logged') || (user && display_user == 'logged') || (user && display_user == 'followers' && user.follows?(owner)) + display_user == 'all' || (user.nil? && display_user == 'not_logged') || (user && display_user == 'logged') || (user && display_user == 'followers' && owner.in_social_circle?(user)) end def display_always(context) diff --git a/app/models/enterprise.rb b/app/models/enterprise.rb index de68ab9..278f07e 100644 --- a/app/models/enterprise.rb +++ b/app/models/enterprise.rb @@ -174,8 +174,8 @@ class Enterprise < Organization '' end - def followed_by? person - super or self.fans.where(id: person.id).count > 0 - end + #def followed_by? person + # super or self.fans.where(id: person.id).count > 0 + #end end diff --git a/app/models/favorite_enterprise_person.rb b/app/models/favorite_enterprise_person.rb index 6820f34..72b6483 100644 --- a/app/models/favorite_enterprise_person.rb +++ b/app/models/favorite_enterprise_person.rb @@ -7,6 +7,10 @@ class FavoriteEnterprisePerson < ApplicationRecord belongs_to :enterprise belongs_to :person + after_create do |favorite| + favorite.person.follow(favorite.enterprise) + end + protected def is_trackable? diff --git a/app/models/friendship.rb b/app/models/friendship.rb index 9630d4b..d3ff315 100644 --- a/app/models/friendship.rb +++ b/app/models/friendship.rb @@ -9,6 +9,7 @@ class Friendship < ApplicationRecord after_create do |friendship| Friendship.update_cache_counter(:friends_count, friendship.person, 1) Friendship.update_cache_counter(:friends_count, friendship.friend, 1) + friendship.person.follow(friendship.friend, friendship.group) end after_destroy do |friendship| diff --git a/app/models/person.rb b/app/models/person.rb index 255bc7b..97be317 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -196,7 +196,7 @@ class Person < Profile friendship = self.friendships.build friendship.friend = friend friendship.group = group - follow(friend, group) if friendship.save + friendship.save end end @@ -219,7 +219,8 @@ class Person < Profile end def unfollow(profile) - ProfileFollower.where(follower_id: id, profile_id: profile.id).first.destroy + follower = ProfileFollower.where(follower_id: id, profile_id: profile.id) if profile + follower.first.destroy if follower.present? end FIELDS = %w[ @@ -598,10 +599,14 @@ class Person < Profile Profile.following_profiles self end - protected - - def followed_by?(profile) - self == profile || self.followers.include?(profile) + def in_social_circle?(person) + self.is_a_friend?(person) || super end + #protected + + #def followed_by?(profile) + # self == profile || self.followers.include?(profile) + #end + end diff --git a/app/models/profile.rb b/app/models/profile.rb index 2e11755..b2a1659 100644 --- a/app/models/profile.rb +++ b/app/models/profile.rb @@ -773,6 +773,7 @@ private :generate_url, :url_options else self.affiliate(person, Profile::Roles.admin(environment.id), attributes) if members.count == 0 self.affiliate(person, Profile::Roles.member(environment.id), attributes) + person.follow(self) end person.tasks.pending.of("InviteMember").select { |t| t.data[:community_id] == self.id }.each { |invite| invite.cancel } remove_from_suggestion_list person @@ -1116,7 +1117,11 @@ private :generate_url, :url_options end def followed_by?(person) - person.is_member_of?(self) + (person == self) || (person.in? self.followers) + end + + def in_social_circle?(person) + (person == self) || (person.is_member_of?(self)) end def display_private_info_to?(user) diff --git a/test/unit/friendship_test.rb b/test/unit/friendship_test.rb index 6ab087a..4a37a7f 100644 --- a/test/unit/friendship_test.rb +++ b/test/unit/friendship_test.rb @@ -28,14 +28,14 @@ class FriendshipTest < ActiveSupport::TestCase f.person = a f.friend = b f.save! - ta = ActionTracker::Record.last + ta = ActionTracker::Record.where(:target_type => "Friendship").last assert_equal a, ta.user assert_equal 'b', ta.get_friend_name[0] f = Friendship.new f.person = a f.friend = c f.save! - ta = ActionTracker::Record.last + ta = ActionTracker::Record.where(:target_type => "Friendship").last assert_equal a, ta.user assert_equal 'c', ta.get_friend_name[1] end @@ -46,14 +46,14 @@ class FriendshipTest < ActiveSupport::TestCase f.person = a f.friend = b f.save! - ta = ActionTracker::Record.last + ta = ActionTracker::Record.where(:target_type => "Friendship").last assert_equal a, ta.user assert_equal ['b'], ta.get_friend_name f = Friendship.new f.person = b f.friend = a f.save! - ta = ActionTracker::Record.last + ta = ActionTracker::Record.where(:target_type => "Friendship").last assert_equal b, ta.user assert_equal ['a'], ta.get_friend_name end -- libgit2 0.21.2