Commit bfbd548c9f5088ca91299c8b5529dd6964ed5233
1 parent
e31770eb
Revert "Adds new ExternalProfile module and refactor ExternalPerson"
This reverts commit e31770eb839b50a6e914961d09737326fbb3b70b.
Showing
5 changed files
with
164 additions
and
192 deletions
Show diff stats
app/models/concerns/external_user.rb
... | ... | @@ -20,7 +20,7 @@ module ExternalUser |
20 | 20 | if login && domain && environment.has_federated_network?(domain) |
21 | 21 | external_environment = environment.external_environments.find_by_domain(domain) |
22 | 22 | scheme = "http#{external_environment.uses_ssl? ? 's' : ''}" |
23 | -p url = URI.parse(scheme+"://"+ domain +'/.well-known/webfinger?resource=acct:'+ | |
23 | + url = URI.parse(scheme+"://"+ domain +'/.well-known/webfinger?resource=acct:'+ | |
24 | 24 | login+'@'+domain) |
25 | 25 | http = build_request(url) |
26 | 26 | req = Net::HTTP::Get.new(url.to_s) | ... | ... |
app/models/concerns/follower.rb
... | ... | @@ -2,18 +2,9 @@ module Follower |
2 | 2 | extend ActiveSupport::Concern |
3 | 3 | |
4 | 4 | def follow(profile, circles) |
5 | - puts "follow..." | |
6 | 5 | circles = [circles] unless circles.is_a?(Array) |
7 | 6 | circles.each do |new_circle| |
8 | - puts "seguindo alguen..." | |
9 | - puts "profile_type: #{new_circle.profile_type}, class_name: #{profile.class.name}" | |
10 | - puts "new_circle.person: #{new_circle.person}, self: #{self}" | |
11 | - if (new_circle.person != self && !(self.kind_of?(new_circle.person.class)) || new_circle.profile_type != profile.class.name) | |
12 | - next | |
13 | - end | |
14 | - puts '*20'*20 | |
15 | - puts "CHEGOU NO PROFILE FOLLOWER" | |
16 | - puts '*20'*20 | |
7 | + next if new_circle.person != self || new_circle.profile_type != profile.class.name | |
17 | 8 | ProfileFollower.create(profile: profile, circle: new_circle) |
18 | 9 | end |
19 | 10 | end | ... | ... |
app/models/external_person.rb
1 | 1 | # A pseudo profile is a person from a remote network |
2 | -class ExternalPerson < ExternalProfile | |
2 | +class ExternalPerson < ActiveRecord::Base | |
3 | 3 | |
4 | 4 | include Human |
5 | 5 | include ProfileEntity |
6 | + include Follower | |
6 | 7 | |
8 | + has_many :circles, as: :person | |
7 | 9 | validates_uniqueness_of :identifier, scope: :source |
8 | 10 | |
9 | 11 | validates_presence_of :source, :email, :created_at |
... | ... | @@ -27,6 +29,13 @@ class ExternalPerson < ExternalProfile |
27 | 29 | _('Public profile') |
28 | 30 | end |
29 | 31 | |
32 | + def avatar | |
33 | + "http://#{self.source}/profile/#{self.identifier}/icon/" | |
34 | + end | |
35 | + | |
36 | + def url | |
37 | + "http://#{self.source}/profile/#{self.identifier}" | |
38 | + end | |
30 | 39 | |
31 | 40 | alias :public_profile_url :url |
32 | 41 | |
... | ... | @@ -68,6 +77,10 @@ class ExternalPerson < ExternalProfile |
68 | 77 | "#{scheme}://#{self.source}" |
69 | 78 | end |
70 | 79 | |
80 | + def profile_custom_icon(gravatar_default=nil) | |
81 | + self.avatar | |
82 | + end | |
83 | + | |
71 | 84 | def preferred_login_redirection |
72 | 85 | environment.redirection_after_login |
73 | 86 | end |
... | ... | @@ -111,6 +124,26 @@ class ExternalPerson < ExternalProfile |
111 | 124 | "#{jid(options)}/#{self.name}" |
112 | 125 | end |
113 | 126 | |
127 | + class ExternalPerson::Image | |
128 | + def initialize(path) | |
129 | + @path = path | |
130 | + end | |
131 | + | |
132 | + def public_filename(size = nil) | |
133 | + URI.join(@path, size.to_s) | |
134 | + end | |
135 | + | |
136 | + def content_type | |
137 | + # This is not really going to be used anywhere that matters | |
138 | + # so we are hardcodding it here. | |
139 | + 'image/png' | |
140 | + end | |
141 | + end | |
142 | + | |
143 | + def image | |
144 | + ExternalPerson::Image.new(avatar) | |
145 | + end | |
146 | + | |
114 | 147 | def data_hash(gravatar_default = nil) |
115 | 148 | friends_list = {} |
116 | 149 | { |
... | ... | @@ -129,4 +162,132 @@ class ExternalPerson < ExternalProfile |
129 | 162 | } |
130 | 163 | end |
131 | 164 | |
165 | + # External Person should respond to all methods in Person and Profile | |
166 | + def person_instance_methods | |
167 | + methods_and_responses = { | |
168 | + enterprises: Enterprise.none, communities: Community.none, friends: | |
169 | + Person.none, memberships: Profile.none, friendships: Person.none, | |
170 | + following_articles: Article.none, article_followers: ArticleFollower.none, | |
171 | + requested_tasks: Task.none, mailings: Mailing.none, scraps_sent: | |
172 | + Scrap.none, favorite_enterprise_people: FavoriteEnterprisePerson.none, | |
173 | + favorite_enterprises: Enterprise.none, acepted_forums: Forum.none, | |
174 | + articles_with_access: Article.none, suggested_profiles: | |
175 | + ProfileSuggestion.none, suggested_people: ProfileSuggestion.none, | |
176 | + suggested_communities: ProfileSuggestion.none, user: nil, | |
177 | + refused_communities: Community.none, has_permission?: false, | |
178 | + has_permission_with_admin?: false, has_permission_without_admin?: false, | |
179 | + has_permission_with_plugins?: false, has_permission_without_plugins?: | |
180 | + false, memberships_by_role: Person.none, can_change_homepage?: false, | |
181 | + can_control_scrap?: false, receives_scrap_notification?: false, | |
182 | + can_control_activity?: false, can_post_content?: false, | |
183 | + suggested_friend_groups: [], friend_groups: [], add_friend: nil, | |
184 | + already_request_friendship?: false, remove_friend: nil, | |
185 | + presence_of_required_fields: nil, active_fields: [], required_fields: [], | |
186 | + signup_fields: [], default_set_of_blocks: [], default_set_of_boxes: [], | |
187 | + default_set_of_articles: [], cell_phone: nil, comercial_phone: nil, | |
188 | + nationality: nil, schooling: nil, contact_information: nil, sex: nil, | |
189 | + birth_date: nil, jabber_id: nil, personal_website: nil, address_reference: | |
190 | + nil, district: nil, schooling_status: nil, formation: nil, | |
191 | + custom_formation: nil, area_of_study: nil, custom_area_of_study: nil, | |
192 | + professional_activity: nil, organization_website: nil, organization: nil, | |
193 | + photo: nil, city: nil, state: nil, country: nil, zip_code: nil, | |
194 | + address_line2: nil, copy_communities_from: nil, | |
195 | + has_organization_pending_tasks?: false, organizations_with_pending_tasks: | |
196 | + Organization.none, pending_tasks_for_organization: Task.none, | |
197 | + build_contact: nil, is_a_friend?: false, ask_to_join?: false, refuse_join: | |
198 | + nil, blocks_to_expire_cache: [], cache_keys: [], communities_cache_key: '', | |
199 | + friends_cache_key: '', manage_friends_cache_key: '', | |
200 | + relationships_cache_key: '', is_member_of?: false, | |
201 | + each_friend: nil, is_last_admin?: false, is_last_admin_leaving?: false, | |
202 | + leave: nil, last_notification: nil, notification_time: 0, notifier: nil, | |
203 | + remove_suggestion: nil, allow_invitation_from?: false, in_social_circle?: false, | |
204 | + allow_followers: false, in_circles: Circle.none, followers: [], in_circle?: false | |
205 | + } | |
206 | + | |
207 | + derivated_methods = generate_derivated_methods(methods_and_responses) | |
208 | + derivated_methods.merge(methods_and_responses) | |
209 | + end | |
210 | + | |
211 | + def profile_instance_methods | |
212 | + methods_and_responses = { | |
213 | + role_assignments: RoleAssignment.none, favorite_enterprises: | |
214 | + Enterprise.none, memberships: Profile.none, friendships: Profile.none, | |
215 | + tasks: Task.none, suggested_profiles: ProfileSuggestion.none, | |
216 | + suggested_people: ProfileSuggestion.none, suggested_communities: | |
217 | + ProfileSuggestion.none, public_profile: true, nickname: nil, custom_footer: | |
218 | + '', custom_header: '', address: '', zip_code: '', contact_phone: '', | |
219 | + image_builder: nil, description: '', closed: false, template_id: nil, lat: | |
220 | + nil, lng: nil, is_template: false, fields_privacy: {}, preferred_domain_id: | |
221 | + nil, category_ids: [], country: '', city: '', state: '', | |
222 | + national_region_code: '', redirect_l10n: false, notification_time: 0, | |
223 | + custom_url_redirection: nil, email_suggestions: false, | |
224 | + allow_members_to_invite: false, invite_friends_only: false, secret: false, | |
225 | + profile_admin_mail_notification: false, redirection_after_login: nil, | |
226 | + profile_activities: ProfileActivity.none, action_tracker_notifications: | |
227 | + ActionTrackerNotification.none, tracked_notifications: | |
228 | + ActionTracker::Record.none, scraps_received: Scrap.none, template: | |
229 | + Profile.none, comments_received: Comment.none, email_templates: | |
230 | + EmailTemplate.none, members: Profile.none, members_like: Profile.none, | |
231 | + members_by: Profile.none, members_by_role: Profile.none, scraps: | |
232 | + Scrap.none, welcome_page_content: nil, settings: {}, find_in_all_tasks: | |
233 | + nil, top_level_categorization: {}, interests: Category.none, geolocation: | |
234 | + '', country_name: '', pending_categorizations: [], add_category: false, | |
235 | + create_pending_categorizations: false, top_level_articles: Article.none, | |
236 | + valid_identifier: true, valid_template: false, create_default_set_of_boxes: | |
237 | + true, copy_blocks_from: nil, default_template: nil, | |
238 | + template_without_default: nil, template_with_default: nil, apply_template: | |
239 | + false, iframe_whitelist: [], recent_documents: Article.none, last_articles: | |
240 | + Article.none, is_validation_entity?: false, hostname: nil, own_hostname: | |
241 | + nil, article_tags: {}, tagged_with: Article.none, | |
242 | + insert_default_article_set: false, copy_articles_from: true, | |
243 | + copy_article_tree: nil, copy_article?: false, add_member: false, | |
244 | + remove_member: false, add_admin: false, remove_admin: false, add_moderator: | |
245 | + false, display_info_to?: true, update_category_from_region: nil, | |
246 | + accept_category?: false, custom_header_expanded: '', | |
247 | + custom_footer_expanded: '', public?: true, themes: [], find_theme: nil, | |
248 | + blogs: Blog.none, blog: nil, has_blog?: false, forums: Forum.none, forum: | |
249 | + nil, has_forum?: false, admins: [], settings_field: {}, setting_changed: | |
250 | + false, public_content: true, enable_contact?: false, folder_types: [], | |
251 | + folders: Article.none, image_galleries: Article.none, image_valid: true, | |
252 | + update_header_and_footer: nil, update_theme: nil, update_layout_template: | |
253 | + nil, recent_actions: ActionTracker::Record.none, recent_notifications: | |
254 | + ActionTracker::Record.none, more_active_label: _('no activity'), | |
255 | + more_popular_label: _('no members'), profile_custom_image: nil, | |
256 | + is_on_homepage?: false, activities: ProfileActivity.none, | |
257 | + may_display_field_to?: true, may_display_location_to?: true, public_fields: | |
258 | + {}, followed_by?: false, display_private_info_to?: true, can_view_field?: | |
259 | + true, remove_from_suggestion_list: nil, layout_template: 'default', | |
260 | + is_admin?: false, add_friend: false, is_a_friend?: false, | |
261 | + already_request_friendship?: false | |
262 | + } | |
263 | + | |
264 | + derivated_methods = generate_derivated_methods(methods_and_responses) | |
265 | + derivated_methods.merge(methods_and_responses) | |
266 | + end | |
267 | + | |
268 | + def method_missing(method, *args, &block) | |
269 | + if person_instance_methods.keys.include?(method) | |
270 | + return person_instance_methods[method] | |
271 | + end | |
272 | + if profile_instance_methods.keys.include? method | |
273 | + return profile_instance_methods[method] | |
274 | + end | |
275 | + end | |
276 | + | |
277 | + def respond_to_missing?(method_name, include_private = false) | |
278 | + person_instance_methods.keys.include?(method_name) || | |
279 | + profile_instance_methods.keys.include?(method_name) || | |
280 | + super | |
281 | + end | |
282 | + | |
283 | + private | |
284 | + | |
285 | + def generate_derivated_methods(methods) | |
286 | + derivated_methods = {} | |
287 | + methods.keys.each do |method| | |
288 | + derivated_methods[method.to_s.insert(-1, '?').to_sym] = false | |
289 | + derivated_methods[method.to_s.insert(-1, '=').to_sym] = nil | |
290 | + end | |
291 | + derivated_methods | |
292 | + end | |
132 | 293 | end | ... | ... |
app/models/external_profile.rb
... | ... | @@ -1,171 +0,0 @@ |
1 | -class ExternalProfile < ActiveRecord::Base | |
2 | - | |
3 | - include Follower | |
4 | - | |
5 | - has_many :circles, as: :person | |
6 | - | |
7 | - def name | |
8 | - "#{self[:name]}@#{self.source}" | |
9 | - end | |
10 | - | |
11 | - class ExternalProfile::Image | |
12 | - def initialize(path) | |
13 | - @path = path | |
14 | - end | |
15 | - | |
16 | - def public_filename(size = nil) | |
17 | - URI.join(@path, size.to_s) | |
18 | - end | |
19 | - | |
20 | - def content_type | |
21 | - # This is not really going to be used anywhere that matters | |
22 | - # so we are hardcodding it here. | |
23 | - 'image/png' | |
24 | - end | |
25 | - end | |
26 | - | |
27 | - def url | |
28 | - "http://#{self.source}/profile/#{self.identifier}" | |
29 | - end | |
30 | - | |
31 | - def image | |
32 | - ExternalProfile::Image.new(avatar) | |
33 | - end | |
34 | - | |
35 | - def profile_custom_icon(gravatar_default=nil) | |
36 | - self.avatar | |
37 | - end | |
38 | - | |
39 | - def avatar | |
40 | - "http://#{self.source}/profile/#{self.identifier}/icon/" | |
41 | - end | |
42 | - | |
43 | - # External Person should respond to all methods in Person and Profile | |
44 | - def person_instance_methods | |
45 | - methods_and_responses = { | |
46 | - enterprises: Enterprise.none, communities: Community.none, friends: | |
47 | - Person.none, memberships: Profile.none, friendships: Person.none, | |
48 | - following_articles: Article.none, article_followers: ArticleFollower.none, | |
49 | - requested_tasks: Task.none, mailings: Mailing.none, scraps_sent: | |
50 | - Scrap.none, favorite_enterprise_people: FavoriteEnterprisePerson.none, | |
51 | - favorite_enterprises: Enterprise.none, acepted_forums: Forum.none, | |
52 | - articles_with_access: Article.none, suggested_profiles: | |
53 | - ProfileSuggestion.none, suggested_people: ProfileSuggestion.none, | |
54 | - suggested_communities: ProfileSuggestion.none, user: nil, | |
55 | - refused_communities: Community.none, has_permission?: false, | |
56 | - has_permission_with_admin?: false, has_permission_without_admin?: false, | |
57 | - has_permission_with_plugins?: false, has_permission_without_plugins?: | |
58 | - false, memberships_by_role: Person.none, can_change_homepage?: false, | |
59 | - can_control_scrap?: false, receives_scrap_notification?: false, | |
60 | - can_control_activity?: false, can_post_content?: false, | |
61 | - suggested_friend_groups: [], friend_groups: [], add_friend: nil, | |
62 | - already_request_friendship?: false, remove_friend: nil, | |
63 | - presence_of_required_fields: nil, active_fields: [], required_fields: [], | |
64 | - signup_fields: [], default_set_of_blocks: [], default_set_of_boxes: [], | |
65 | - default_set_of_articles: [], cell_phone: nil, comercial_phone: nil, | |
66 | - nationality: nil, schooling: nil, contact_information: nil, sex: nil, | |
67 | - birth_date: nil, jabber_id: nil, personal_website: nil, address_reference: | |
68 | - nil, district: nil, schooling_status: nil, formation: nil, | |
69 | - custom_formation: nil, area_of_study: nil, custom_area_of_study: nil, | |
70 | - professional_activity: nil, organization_website: nil, organization: nil, | |
71 | - photo: nil, city: nil, state: nil, country: nil, zip_code: nil, | |
72 | - address_line2: nil, copy_communities_from: nil, | |
73 | - has_organization_pending_tasks?: false, organizations_with_pending_tasks: | |
74 | - Organization.none, pending_tasks_for_organization: Task.none, | |
75 | - build_contact: nil, is_a_friend?: false, ask_to_join?: false, refuse_join: | |
76 | - nil, blocks_to_expire_cache: [], cache_keys: [], communities_cache_key: '', | |
77 | - friends_cache_key: '', manage_friends_cache_key: '', | |
78 | - relationships_cache_key: '', is_member_of?: false, | |
79 | - each_friend: nil, is_last_admin?: false, is_last_admin_leaving?: false, | |
80 | - leave: nil, last_notification: nil, notification_time: 0, notifier: nil, | |
81 | - remove_suggestion: nil, allow_invitation_from?: false, in_social_circle?: false, | |
82 | - allow_followers: false, in_circles: Circle.none, followers: [], in_circle?: false | |
83 | - } | |
84 | - | |
85 | - derivated_methods = generate_derivated_methods(methods_and_responses) | |
86 | - derivated_methods.merge(methods_and_responses) | |
87 | - end | |
88 | - | |
89 | - def profile_instance_methods | |
90 | - methods_and_responses = { | |
91 | - role_assignments: RoleAssignment.none, favorite_enterprises: | |
92 | - Enterprise.none, memberships: Profile.none, friendships: Profile.none, | |
93 | - tasks: Task.none, suggested_profiles: ProfileSuggestion.none, | |
94 | - suggested_people: ProfileSuggestion.none, suggested_communities: | |
95 | - ProfileSuggestion.none, public_profile: true, nickname: nil, custom_footer: | |
96 | - '', custom_header: '', address: '', zip_code: '', contact_phone: '', | |
97 | - image_builder: nil, description: '', closed: false, template_id: nil, lat: | |
98 | - nil, lng: nil, is_template: false, fields_privacy: {}, preferred_domain_id: | |
99 | - nil, category_ids: [], country: '', city: '', state: '', | |
100 | - national_region_code: '', redirect_l10n: false, notification_time: 0, | |
101 | - custom_url_redirection: nil, email_suggestions: false, | |
102 | - allow_members_to_invite: false, invite_friends_only: false, secret: false, | |
103 | - profile_admin_mail_notification: false, redirection_after_login: nil, | |
104 | - profile_activities: ProfileActivity.none, action_tracker_notifications: | |
105 | - ActionTrackerNotification.none, tracked_notifications: | |
106 | - ActionTracker::Record.none, scraps_received: Scrap.none, template: | |
107 | - Profile.none, comments_received: Comment.none, email_templates: | |
108 | - EmailTemplate.none, members: Profile.none, members_like: Profile.none, | |
109 | - members_by: Profile.none, members_by_role: Profile.none, scraps: | |
110 | - Scrap.none, welcome_page_content: nil, settings: {}, find_in_all_tasks: | |
111 | - nil, top_level_categorization: {}, interests: Category.none, geolocation: | |
112 | - '', country_name: '', pending_categorizations: [], add_category: false, | |
113 | - create_pending_categorizations: false, top_level_articles: Article.none, | |
114 | - valid_identifier: true, valid_template: false, create_default_set_of_boxes: | |
115 | - true, copy_blocks_from: nil, default_template: nil, | |
116 | - template_without_default: nil, template_with_default: nil, apply_template: | |
117 | - false, iframe_whitelist: [], recent_documents: Article.none, last_articles: | |
118 | - Article.none, is_validation_entity?: false, hostname: nil, own_hostname: | |
119 | - nil, article_tags: {}, tagged_with: Article.none, | |
120 | - insert_default_article_set: false, copy_articles_from: true, | |
121 | - copy_article_tree: nil, copy_article?: false, add_member: false, | |
122 | - remove_member: false, add_admin: false, remove_admin: false, add_moderator: | |
123 | - false, display_info_to?: true, update_category_from_region: nil, | |
124 | - accept_category?: false, custom_header_expanded: '', | |
125 | - custom_footer_expanded: '', public?: true, themes: [], find_theme: nil, | |
126 | - blogs: Blog.none, blog: nil, has_blog?: false, forums: Forum.none, forum: | |
127 | - nil, has_forum?: false, admins: [], settings_field: {}, setting_changed: | |
128 | - false, public_content: true, enable_contact?: false, folder_types: [], | |
129 | - folders: Article.none, image_galleries: Article.none, image_valid: true, | |
130 | - update_header_and_footer: nil, update_theme: nil, update_layout_template: | |
131 | - nil, recent_actions: ActionTracker::Record.none, recent_notifications: | |
132 | - ActionTracker::Record.none, more_active_label: _('no activity'), | |
133 | - more_popular_label: _('no members'), profile_custom_image: nil, | |
134 | - is_on_homepage?: false, activities: ProfileActivity.none, | |
135 | - may_display_field_to?: true, may_display_location_to?: true, public_fields: | |
136 | - {}, followed_by?: false, display_private_info_to?: true, can_view_field?: | |
137 | - true, remove_from_suggestion_list: nil, layout_template: 'default', | |
138 | - is_admin?: false, add_friend: false, is_a_friend?: false, | |
139 | - already_request_friendship?: false | |
140 | - } | |
141 | - | |
142 | - derivated_methods = generate_derivated_methods(methods_and_responses) | |
143 | - derivated_methods.merge(methods_and_responses) | |
144 | - end | |
145 | - | |
146 | - def method_missing(method, *args, &block) | |
147 | - if person_instance_methods.keys.include?(method) | |
148 | - return person_instance_methods[method] | |
149 | - end | |
150 | - if profile_instance_methods.keys.include? method | |
151 | - return profile_instance_methods[method] | |
152 | - end | |
153 | - end | |
154 | - | |
155 | - def respond_to_missing?(method_name, include_private = false) | |
156 | - person_instance_methods.keys.include?(method_name) || | |
157 | - profile_instance_methods.keys.include?(method_name) || | |
158 | - super | |
159 | - end | |
160 | - | |
161 | - private | |
162 | - | |
163 | - def generate_derivated_methods(methods) | |
164 | - derivated_methods = {} | |
165 | - methods.keys.each do |method| | |
166 | - derivated_methods[method.to_s.insert(-1, '?').to_sym] = false | |
167 | - derivated_methods[method.to_s.insert(-1, '=').to_sym] = nil | |
168 | - end | |
169 | - derivated_methods | |
170 | - end | |
171 | -end |
db/migrate/20160822110424_rename_external_people_to_external_profiles.rb
-
mentioned in commit aa37360cdc7a415255bb534c9637eadee009836e