From a9c9619a54fe7617c1ca91bf32703a8386d35a97 Mon Sep 17 00:00:00 2001 From: ilya Date: Tue, 17 Aug 2010 10:43:18 -0700 Subject: [PATCH 1/6] DG IZ; posting from a user includes adding to the many posts association in said user --- app/models/user.rb | 6 +++++- spec/models/user_spec.rb | 6 ++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 7ab2987d9..297a2d9c8 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -44,7 +44,11 @@ class User post = model_class.instantiate(options) post.creator_signature = post.sign_with_key(encryption_key) post.notify_people - post.socket_to_uid owner.id if (owner_id && post.respond_to?( :socket_to_uid)) + post.socket_to_uid owner.id if (owner_id && post.respond_to?(:socket_to_uid)) + + self.posts << post + self.save + post end ######### Posts and Such ############### diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index e0d2415c7..621e0ad5d 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -283,6 +283,12 @@ describe User do @user.posts.count.should == 0 end + + it "should add the post to that user's posts when a user posts it" do + status_message = @user.post :status_message, :message => "hi" + @user.reload + @user.posts.include?(status_message).should be true + end it 'should be removed on unfriending' do status_message = @user2.post :status_message, :message => "hi" From 5dff3369ad23b547e29526aaf38a00c2022eeed5 Mon Sep 17 00:00:00 2001 From: ilya Date: Tue, 17 Aug 2010 10:48:40 -0700 Subject: [PATCH 2/6] DG IZ; removed puts statements. --- app/controllers/sockets_controller.rb | 2 +- config/initializers/socket.rb | 2 +- lib/message_handler.rb | 5 +++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/controllers/sockets_controller.rb b/app/controllers/sockets_controller.rb index 802aa9cb5..fd966afeb 100644 --- a/app/controllers/sockets_controller.rb +++ b/app/controllers/sockets_controller.rb @@ -4,7 +4,7 @@ class SocketsController < ApplicationController include Rails.application.routes.url_helpers def incoming(msg) - puts "Got a connection to: #{msg}" + Rails.logger.info("Socket received connection to: #{msg}") end def outgoing(uid,object) diff --git a/config/initializers/socket.rb b/config/initializers/socket.rb index 0f4e68f7b..381d1f6c2 100644 --- a/config/initializers/socket.rb +++ b/config/initializers/socket.rb @@ -12,7 +12,7 @@ require "lib/diaspora/websocket" sid = Diaspora::WebSocket.subscribe(ws.request['Path'].gsub('/',''), ws) - ws.onmessage { |msg| SocketsController.new.incoming(msg) }#@channel.push msg; puts msg} + ws.onmessage { |msg| SocketsController.new.incoming(msg) } ws.onclose { Diaspora::WebSocket.unsubscribe(ws.request['Path'].gsub('/',''), sid) } } diff --git a/lib/message_handler.rb b/lib/message_handler.rb index 4bc54b4c9..8f97e53c3 100644 --- a/lib/message_handler.rb +++ b/lib/message_handler.rb @@ -31,8 +31,9 @@ class MessageHandler end http.errback { - puts http.response - puts "failure from #{query.destination}, retrying" + Rails.logger.info(http.response) + Rails.logger.info("Failure from #{query.destination}, retrying...") + query.try_count +=1 @queue.push query unless query.try_count >= NUM_TRIES process From 7316c6073cf9ca34385689c6a86f50da381458db Mon Sep 17 00:00:00 2001 From: ilya Date: Tue, 17 Aug 2010 10:58:50 -0700 Subject: [PATCH 3/6] DG IZ local person bug --- app/helpers/requests_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/helpers/requests_helper.rb b/app/helpers/requests_helper.rb index 9eed63e91..37a5485c4 100644 --- a/app/helpers/requests_helper.rb +++ b/app/helpers/requests_helper.rb @@ -30,7 +30,7 @@ module RequestsHelper url = nil local_person = Person.by_webfinger identifier if local_person - action = (local_person == current_user.local_person ? :none : :friend) + action = (local_person == current_user.person ? :none : :friend) url = local_person.receive_url elsif !(identifier.include?(request.host) || identifier.include?("localhost")) f = Redfinger.finger(identifier) From 4f8b8ad3c565dd37a03827dae535bb957ca4e300 Mon Sep 17 00:00:00 2001 From: ilya Date: Tue, 17 Aug 2010 11:03:31 -0700 Subject: [PATCH 4/6] DG IZ saving the post --- app/models/user.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/user.rb b/app/models/user.rb index 297a2d9c8..22af43d39 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -43,6 +43,7 @@ class User model_class = class_name.to_s.camelize.constantize post = model_class.instantiate(options) post.creator_signature = post.sign_with_key(encryption_key) + post.save post.notify_people post.socket_to_uid owner.id if (owner_id && post.respond_to?(:socket_to_uid)) From 2af41a0ea9da8d63716d1e02db858660910890c3 Mon Sep 17 00:00:00 2001 From: ilya Date: Tue, 17 Aug 2010 12:12:35 -0700 Subject: [PATCH 5/6] DG IZ; posts_for :group method in User --- app/models/user.rb | 11 ++++++++++- spec/models/user_spec.rb | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 22af43d39..a3a71a297 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -51,7 +51,16 @@ class User self.save post - end ######### Posts and Such ############### + end + + def posts_for( opts = {} ) + if opts[:group] + group = self.groups.find_by_id( opts[:group].id ) + self.posts.find_all_by_person_id( group.person_ids ) + end + end + + ######### Posts and Such ############### def retract( post ) retraction = Retraction.for(post) diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 621e0ad5d..805464409 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -371,6 +371,39 @@ describe User do Post.count.should be 1 end + describe 'group streams' do + before do + @group = @user.group(:name => 'heroes') + @group2 = @user.group(:name => 'stuff') + @user2 = Factory.create :user + @user.activate_friend(@user2.person, @group) + + @user3 = Factory.create :user + @user.activate_friend(@user3.person, @group2) + + @user4 = Factory.create :user + @user.activate_friend(@user4.person, @group2) + end + + it 'should generate a valid stream for a group of people' do + status_message1 = @user2.post :status_message, :message => "hi" + status_message2 = @user3.post :status_message, :message => "heyyyy" + status_message3 = @user4.post :status_message, :message => "yooo" + + @user.receive status_message1.to_diaspora_xml + @user.receive status_message2.to_diaspora_xml + @user.receive status_message3.to_diaspora_xml + @user.reload + + @user.posts_for(:group => @group).include?(status_message1).should be true + @user.posts_for(:group => @group).include?(status_message2).should be false + @user.posts_for(:group => @group).include?(status_message3).should be false + + @user.posts_for(:group => @group2).include?(status_message1).should be false + @user.posts_for(:group => @group2).include?(status_message2).should be true + @user.posts_for(:group => @group2).include?(status_message3).should be true + end + end end end From 2a90e59f1e1e6af905762147932f826dcaa1e9a4 Mon Sep 17 00:00:00 2001 From: ilya Date: Tue, 17 Aug 2010 12:22:14 -0700 Subject: [PATCH 6/6] DG IZ the group should view the posts for the group (and yourself) w --- app/controllers/groups_controller.rb | 7 +++++-- app/models/user.rb | 2 +- spec/models/user_spec.rb | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb index b3e826077..e7437c454 100644 --- a/app/controllers/groups_controller.rb +++ b/app/controllers/groups_controller.rb @@ -28,9 +28,12 @@ class GroupsController < ApplicationController end def show - @people_ids = @group.people.map {|p| p.id} - @posts = Post.paginate :person_id => @people_ids, :order => 'created_at DESC' + @people_ids = @group.person_ids + @group = Group.first(:id => params[:id]) + + @posts = current_user.posts_for( :group => @group ).paginate :order => 'created_at DESC' + #@posts = Post.paginate :person_id => @people_ids, :order => 'created_at DESC' end def edit diff --git a/app/models/user.rb b/app/models/user.rb index a3a71a297..246fca82e 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -56,7 +56,7 @@ class User def posts_for( opts = {} ) if opts[:group] group = self.groups.find_by_id( opts[:group].id ) - self.posts.find_all_by_person_id( group.person_ids ) + self.posts.find_all_by_person_id( (group.person_ids + [self.person.id] ), :order => "created_at desc") end end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 805464409..169bdda43 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -346,7 +346,7 @@ describe User do it 'should not override userrefs on receive by another person' do @user3 = Factory.create :user - @user3.activate_friend(@user2, @group3) + @user3.activate_friend(@user2.person, @group3) status_message = @user2.post :status_message, :message => "hi" @user.receive status_message.to_diaspora_xml