From b0088c73d87c1db3e108e158d53aa2db5f42dcae Mon Sep 17 00:00:00 2001 From: ilya Date: Wed, 18 Aug 2010 10:37:33 -0700 Subject: [PATCH 01/13] DG IZ; user's own post gets referenced in group model --- app/controllers/application_controller.rb | 1 - app/controllers/status_messages_controller.rb | 3 --- app/models/group.rb | 2 ++ app/models/user.rb | 9 +++++++++ spec/models/group_spec.rb | 14 +++++++++++++- 5 files changed, 24 insertions(+), 5 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index c3b74a861..291246750 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -19,7 +19,6 @@ class ApplicationController < ActionController::Base if current_user @groups = current_user.groups @friends = current_user.friends - @latest_status_message = StatusMessage.newest_for(current_user.person) @group = params[:group] ? current_user.group_by_id(params[:group]) : current_user.groups.first end end diff --git a/app/controllers/status_messages_controller.rb b/app/controllers/status_messages_controller.rb index f941389a5..9b363032e 100644 --- a/app/controllers/status_messages_controller.rb +++ b/app/controllers/status_messages_controller.rb @@ -3,12 +3,9 @@ class StatusMessagesController < ApplicationController def index @status_messages = StatusMessage.paginate :page => params[:page], :order => 'created_at DESC' - - respond_to do |format| format.html end - end def create diff --git a/app/models/group.rb b/app/models/group.rb index 0f40d6d9b..e872bc30c 100644 --- a/app/models/group.rb +++ b/app/models/group.rb @@ -5,9 +5,11 @@ class Group key :person_ids, Array key :request_ids, Array + key :my_post_ids, Array many :people, :in => :person_ids, :class_name => 'Person' many :requests, :in => :request_ids, :class_name => 'Request' + many :my_posts, :in => :my_post_ids, :class_name => 'Post' belongs_to :user, :class_name => 'User' diff --git a/app/models/user.rb b/app/models/user.rb index 12067eee7..8cca14abe 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -41,6 +41,10 @@ class User ######## Posting ######## def post(class_name, options = {}) options[:person] = self.person + + group = options[:group] + options.delete(:group) + model_class = class_name.to_s.camelize.constantize post = model_class.instantiate(options) post.creator_signature = post.sign_with_key(encryption_key) @@ -51,6 +55,11 @@ class User self.raw_visible_posts << post self.save + + if group + group.my_posts << post + group.save + end post end diff --git a/spec/models/group_spec.rb b/spec/models/group_spec.rb index 1d0f400d5..896d12962 100644 --- a/spec/models/group_spec.rb +++ b/spec/models/group_spec.rb @@ -33,7 +33,6 @@ describe Group do group.people.include?(@friend_2).should be true group.people.size.should == 2 end - end describe 'querying' do @@ -52,4 +51,17 @@ describe Group do @group.people.size.should == 1 end end + + describe 'posting' do + + it 'should add post to group via post method' do + @group = @user.group(:name => 'losers', :people => [@friend]) + + status_message = @user.post( :status_message, :message => "hey", :group => @group ) + + @group.reload + @group.my_posts.include?(status_message).should be true + end + + end end From 055c222fc2b084ee836d3a0901900dfb33888038 Mon Sep 17 00:00:00 2001 From: ilya Date: Wed, 18 Aug 2010 10:53:43 -0700 Subject: [PATCH 02/13] DG IZ; using group_id instead of group in post method. passing in :group_id into publisher partial --- app/models/user.rb | 7 ++++--- app/views/groups/index.html.haml | 2 +- app/views/groups/show.html.haml | 2 +- app/views/shared/_publisher.haml | 3 +++ spec/models/group_spec.rb | 2 +- 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 8cca14abe..a979af879 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -42,8 +42,8 @@ class User def post(class_name, options = {}) options[:person] = self.person - group = options[:group] - options.delete(:group) + group_id = options[:group_id] + options.delete(:group_id) model_class = class_name.to_s.camelize.constantize post = model_class.instantiate(options) @@ -56,7 +56,8 @@ class User self.raw_visible_posts << post self.save - if group + if group_id + group = self.groups.find_by_id(group_id) group.my_posts << post group.save end diff --git a/app/views/groups/index.html.haml b/app/views/groups/index.html.haml index e4d1ecca2..4ed9db19e 100644 --- a/app/views/groups/index.html.haml +++ b/app/views/groups/index.html.haml @@ -2,7 +2,7 @@ welcome home, = current_user.profile.first_name -= render "shared/publisher" += render "shared/publisher", :group_id => @group.id %ul#stream - for post in @posts diff --git a/app/views/groups/show.html.haml b/app/views/groups/show.html.haml index daaaaaabc..73f799c72 100644 --- a/app/views/groups/show.html.haml +++ b/app/views/groups/show.html.haml @@ -1,4 +1,4 @@ -= render "shared/publisher" += render "shared/publisher", :group_id => @group.id %ul#stream - for post in @posts = render type_partial(post), :post => post diff --git a/app/views/shared/_publisher.haml b/app/views/shared/_publisher.haml index 4d2f8640b..fe52ac354 100644 --- a/app/views/shared/_publisher.haml +++ b/app/views/shared/_publisher.haml @@ -3,6 +3,9 @@ #publisher_form = form_for StatusMessage.new, :remote => true do |f| = f.error_messages + + = f.hidden_field :group_id, :value => group_id + %p %label{:for => "status_message_message"} Message = f.text_area :message, :rows => 2 diff --git a/spec/models/group_spec.rb b/spec/models/group_spec.rb index 896d12962..035e9be2f 100644 --- a/spec/models/group_spec.rb +++ b/spec/models/group_spec.rb @@ -57,7 +57,7 @@ describe Group do it 'should add post to group via post method' do @group = @user.group(:name => 'losers', :people => [@friend]) - status_message = @user.post( :status_message, :message => "hey", :group => @group ) + status_message = @user.post( :status_message, :message => "hey", :group_id => @group.id ) @group.reload @group.my_posts.include?(status_message).should be true From d640c0672f8c333ce913862e8a3097516c739b57 Mon Sep 17 00:00:00 2001 From: Raphael Date: Wed, 18 Aug 2010 10:56:09 -0700 Subject: [PATCH 03/13] switch deploy branch to actually be one we are working on --- app/models/album.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/album.rb b/app/models/album.rb index b6daabb47..b30cb5c45 100644 --- a/app/models/album.rb +++ b/app/models/album.rb @@ -27,6 +27,7 @@ class Album def self.mine_or_friends(friend_param, current_user) if friend_param + puts "i am working" Album.find_all_by_person_id(current_user.friend_ids) else current_user.person.albums From 4d86933f4a8140dbc9cc3dc03d8622d837f5d95a Mon Sep 17 00:00:00 2001 From: ilya Date: Wed, 18 Aug 2010 11:39:41 -0700 Subject: [PATCH 04/13] DG IZ; user's visible posts method queries group objects for their posts --- app/models/group.rb | 4 ++-- app/models/user.rb | 9 +++++++-- spec/models/group_spec.rb | 16 +++++++++++++++- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/app/models/group.rb b/app/models/group.rb index e872bc30c..6b8f18921 100644 --- a/app/models/group.rb +++ b/app/models/group.rb @@ -5,11 +5,11 @@ class Group key :person_ids, Array key :request_ids, Array - key :my_post_ids, Array + key :post_ids, Array many :people, :in => :person_ids, :class_name => 'Person' many :requests, :in => :request_ids, :class_name => 'Request' - many :my_posts, :in => :my_post_ids, :class_name => 'Post' + many :posts, :in => :post_ids, :class_name => 'Post' belongs_to :user, :class_name => 'User' diff --git a/app/models/user.rb b/app/models/user.rb index a979af879..210714fcd 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -58,7 +58,7 @@ class User if group_id group = self.groups.find_by_id(group_id) - group.my_posts << post + group.posts << post group.save end @@ -68,7 +68,7 @@ class User def visible_posts( opts = {} ) if opts[:by_members_of] group = self.groups.find_by_id( opts[:by_members_of].id ) - self.raw_visible_posts.find_all_by_person_id( (group.person_ids + [self.person.id] ), :order => "created_at desc") + group.posts end end @@ -267,6 +267,11 @@ class User self.raw_visible_posts << object self.save + groups = self.groups_with_person(object.person) + groups.each{ |group| group.posts << object + group.save + } + groups = groups_with_person(object.person) object.socket_to_uid(id, :group_id => groups.first.id) if (object.respond_to?(:socket_to_uid) && !self.owns?(object)) end diff --git a/spec/models/group_spec.rb b/spec/models/group_spec.rb index 035e9be2f..26f3397d4 100644 --- a/spec/models/group_spec.rb +++ b/spec/models/group_spec.rb @@ -60,7 +60,21 @@ describe Group do status_message = @user.post( :status_message, :message => "hey", :group_id => @group.id ) @group.reload - @group.my_posts.include?(status_message).should be true + @group.posts.include?(status_message).should be true + end + + it 'should add post to group via receive method' do + group = @user.group(:name => 'losers') + group2 = @user2.group(:name => 'winners') + friend_users(@user, group, @user2, group2) + + message = @user2.post(:status_message, :message => "Hey Dude") + + @user.receive message.to_diaspora_xml + + group.reload + group.posts.include?(message).should be true + @user.visible_posts(:by_members_of => group).include?(message).should be true end end From 10aef7a0a3fabcd6cf21bf833dfa77cb97e59338 Mon Sep 17 00:00:00 2001 From: Raphael Date: Wed, 18 Aug 2010 11:46:28 -0700 Subject: [PATCH 05/13] Begin rescue on publics controller to make the post for nonexistent user error more readable --- app/controllers/publics_controller.rb | 6 +++++- spec/models/album_spec.rb | 3 --- spec/models/user/receive_spec.rb | 12 ++++++++++++ 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/app/controllers/publics_controller.rb b/app/controllers/publics_controller.rb index 91edf995d..e7ab1ea1b 100644 --- a/app/controllers/publics_controller.rb +++ b/app/controllers/publics_controller.rb @@ -22,7 +22,11 @@ class PublicsController < ApplicationController end def receive - @user = Person.first(:id => params[:id]).owner + begin + @user = Person.first(:id => params[:id]).owner + rescue NoMethodError => e + Rails.logger.error("Received post #{params[:xml]} for nonexistent person #{params[:id}") + end Rails.logger.debug "PublicsController has received: #{params[:xml]}" @user.receive params[:xml] if params[:xml] render :nothing => true diff --git a/spec/models/album_spec.rb b/spec/models/album_spec.rb index f5038ec1c..e31dc5e4a 100644 --- a/spec/models/album_spec.rb +++ b/spec/models/album_spec.rb @@ -88,8 +88,5 @@ describe Album do it 'should have an id' do @xml.include?(@album.id.to_s).should be true end - end - - end diff --git a/spec/models/user/receive_spec.rb b/spec/models/user/receive_spec.rb index 4919e66f4..a657f41e8 100644 --- a/spec/models/user/receive_spec.rb +++ b/spec/models/user/receive_spec.rb @@ -25,6 +25,18 @@ describe User do Post.all(:person_id => person.id).first.message.should == 'store this!' StatusMessage.all.size.should == 1 end + + it 'should not create new groups on message receive' do + num_groups = @user.groups.size + + (0..5).each{ |n| + status_message = @user2.post :status_message, :message => "store this #{n}!" + xml = status_message.to_diaspora_xml + @user.receive( xml ) + } + + @user.groups.size.should == num_groups + end describe 'post refs' do before do From 4cd46abaac8eb436f0db5df08a8c5f9f46a6791c Mon Sep 17 00:00:00 2001 From: Raphael Date: Wed, 18 Aug 2010 11:48:32 -0700 Subject: [PATCH 06/13] render nothing at the top --- app/controllers/publics_controller.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/controllers/publics_controller.rb b/app/controllers/publics_controller.rb index e7ab1ea1b..0d6df2933 100644 --- a/app/controllers/publics_controller.rb +++ b/app/controllers/publics_controller.rb @@ -22,14 +22,15 @@ class PublicsController < ApplicationController end def receive + render :nothing => true begin @user = Person.first(:id => params[:id]).owner rescue NoMethodError => e Rails.logger.error("Received post #{params[:xml]} for nonexistent person #{params[:id}") + return end Rails.logger.debug "PublicsController has received: #{params[:xml]}" @user.receive params[:xml] if params[:xml] - render :nothing => true end end From b7d648e1731d76029f2693e562ea9c07d456e97b Mon Sep 17 00:00:00 2001 From: Raphael Date: Wed, 18 Aug 2010 11:54:44 -0700 Subject: [PATCH 07/13] Validate presence of name on group --- app/controllers/publics_controller.rb | 2 +- app/models/group.rb | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/controllers/publics_controller.rb b/app/controllers/publics_controller.rb index 0d6df2933..e7b994ff5 100644 --- a/app/controllers/publics_controller.rb +++ b/app/controllers/publics_controller.rb @@ -26,7 +26,7 @@ class PublicsController < ApplicationController begin @user = Person.first(:id => params[:id]).owner rescue NoMethodError => e - Rails.logger.error("Received post #{params[:xml]} for nonexistent person #{params[:id}") + Rails.logger.error("Received post #{params[:xml]} for nonexistent person #{params[:id]}") return end Rails.logger.debug "PublicsController has received: #{params[:xml]}" diff --git a/app/models/group.rb b/app/models/group.rb index 0f40d6d9b..0ff534bea 100644 --- a/app/models/group.rb +++ b/app/models/group.rb @@ -2,6 +2,7 @@ class Group include MongoMapper::Document key :name, String + validates_presence_of :name key :person_ids, Array key :request_ids, Array From 5e439bdb28abe3cd8248beca9e6cedeff0c8dd0e Mon Sep 17 00:00:00 2001 From: Raphael Date: Wed, 18 Aug 2010 11:56:11 -0700 Subject: [PATCH 08/13] Ensure_bson on groups_with_person --- app/models/user.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index aa2973acb..e59000732 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -293,7 +293,8 @@ class User end def groups_with_person person - groups.select {|group| group.person_ids.include? person.id} + id = ensure_bson person.id + groups.select {|group| group.person_ids.include? id} end protected From f5811df5b73a62a1adb59ad7641e80afb637f6dd Mon Sep 17 00:00:00 2001 From: ilya Date: Wed, 18 Aug 2010 11:59:20 -0700 Subject: [PATCH 09/13] DG IZ; added info text to add new friend button --- app/views/shared/_group_nav.haml | 7 +++++- public/stylesheets/application.css | 21 ++++++++--------- public/stylesheets/sass/application.sass | 29 ++++++++++++------------ 3 files changed, 30 insertions(+), 27 deletions(-) diff --git a/app/views/shared/_group_nav.haml b/app/views/shared/_group_nav.haml index 66f4fa0bd..455d90bb4 100644 --- a/app/views/shared/_group_nav.haml +++ b/app/views/shared/_group_nav.haml @@ -14,7 +14,12 @@ #friend_pictures - for friend in @group.people = person_image_link(friend) - = link_to "+", "#add_request_pane", :id => 'add_request_button', :class => "add_new" + = link_to (image_tag 'add_friend_button.png'), "#add_request_pane", :id => 'add_request_button' + + - if @group.people.count == 0 + %span.add_new_description + << click the plus to add friends to this group + .yo{:style => 'display:none'} #add_request_pane diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index 18289b738..a5b4b5fc6 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -430,24 +430,21 @@ h1.big_text { #group ul > li.selected, #group ul > li.selected a { color: white; font-weight: bold; - font-size: 18px; - text-shadow: 0 2px 0px black; } + font-size: 18px; } #group a { color: #aaaaaa; font-weight: normal; } - #group #friend_pictures .add_new { + #group #friend_pictures .add_new_description { position: relative; - display: inline-block; height: 40px; - width: 40px; - background-color: black; - text-align: center; - font-size: 40px; + display: inline-block; + background-color: #222222; + color: #999999; + top: -16px; line-height: 40px; - top: -6px; } - #group #friend_pictures .add_new:hover { - background: #999999; - color: black; } + padding: 0 1em; + margin-bottom: -20px; + font-style: italic; } #group #friend_pictures img { height: 40px; } diff --git a/public/stylesheets/sass/application.sass b/public/stylesheets/sass/application.sass index 0ac9dbfce..b41a1120a 100644 --- a/public/stylesheets/sass/application.sass +++ b/public/stylesheets/sass/application.sass @@ -546,21 +546,22 @@ h1.big_text :weight normal #friend_pictures - .add_new - :position relative - :display inline-block - :height 40px - :width 40px - :background - :color #000 - :text-align center - :font-size 40px - :line-height 40px - :top -6px - &:hover - :background #999 - :color #000 + .add_new_description + :position relative + :height 40px + :display inline-block + :background + :color #222 + :color #999 + :top -16px + :line + :height 40px + :padding 0 1em + :margin + :bottom -20px + :font + :style italic img :height 40px From 9b2f2bbddf6d8c6dd7eaa99f492aa3e797d43c2a Mon Sep 17 00:00:00 2001 From: Raphael Date: Wed, 18 Aug 2010 12:14:47 -0700 Subject: [PATCH 10/13] Move socketing out to method from receive --- app/models/user.rb | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index e59000732..71936d688 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -249,7 +249,7 @@ class User person.save elsif object.is_a?(Comment) - dispatch_comment object unless owns?(object) + dispatch_comment object unless owns?(object) else Rails.logger.debug("Saving object: #{object}") object.user_refs += 1 @@ -258,12 +258,17 @@ class User self.raw_visible_posts << object self.save - groups = groups_with_person(object.person) - object.socket_to_uid(id, :group_id => group.id) if (object.respond_to?(:socket_to_uid) && !self.owns?(object)) end + + socket(object) if (object.respond_to?(:socket_to_uid) && !self.owns?(object)) end ###Helpers############ + def socket( object ) + groups = groups_with_person(object.person) + object.socket_to_uid(id, :group_id => group.id) + end + def self.instantiate( opts = {} ) opts[:person][:email] = opts[:email] opts[:person][:serialized_key] = generate_key From a7a9a9873717652e791834a7c5e31155d8adb40a Mon Sep 17 00:00:00 2001 From: ilya Date: Wed, 18 Aug 2010 12:28:15 -0700 Subject: [PATCH 11/13] DG IZ; forgot to add image for add friend button --- public/images/add_friend_button.png | Bin 0 -> 288 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 public/images/add_friend_button.png diff --git a/public/images/add_friend_button.png b/public/images/add_friend_button.png new file mode 100644 index 0000000000000000000000000000000000000000..6248f1b88bc0084916b0ec473d2e0cc7dcce2ca6 GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1SFZ~=vx6P#^NA%Cx&(BWL^R}oCO|{#S9GG z!XV7ZFl&wkP>{XE)7O>#7Kf0Kv8?Sq`_n+7O`a}}ArXg@6C_v{Cy4YkEo758dGW|P zsaT=)Cr=(Y@Zs~dN%LII_f1Y@gTe~DWM4f&Dm~B literal 0 HcmV?d00001 From f570199d1786bded07fd30e7aac921934ca2f842 Mon Sep 17 00:00:00 2001 From: Raphael Date: Wed, 18 Aug 2010 14:30:16 -0700 Subject: [PATCH 12/13] Add a couple specs to groups, moved socketing into each block, unclear where or why groups are being created wrongly --- app/models/user.rb | 8 ++++---- spec/models/group_spec.rb | 17 +++++++++++++++-- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index e4406c0a6..b5d0716c1 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -269,12 +269,12 @@ class User self.save groups = self.groups_with_person(object.person) - groups.each{ |group| group.posts << object - group.save + groups.each{ |group| + group.posts << object + group.save + object.socket_to_uid(id, :group_id => group.id) if (object.respond_to?(:socket_to_uid) && !self.owns?(object)) } - groups = groups_with_person(object.person) - object.socket_to_uid(id, :group_id => group.id) if (object.respond_to?(:socket_to_uid) && !self.owns?(object)) end end diff --git a/spec/models/group_spec.rb b/spec/models/group_spec.rb index 26f3397d4..530bcec8c 100644 --- a/spec/models/group_spec.rb +++ b/spec/models/group_spec.rb @@ -37,7 +37,11 @@ describe Group do describe 'querying' do before do - @group = @user.group(:name => 'losers', :people => [@friend]) + @group = @user.group(:name => 'losers') + @user.activate_friend(@friend, @group) + @group2 = @user2.group(:name => 'failures') + friend_users(@user, @group, @user2, @group2) + @group.reload end it 'belong to a user' do @@ -48,7 +52,16 @@ describe Group do it 'should have people' do @group.people.all.include?(@friend).should be true - @group.people.size.should == 1 + @group.people.size.should == 2 + end + + it 'should be accessible through the user' do + groups = @user.groups_with_person(@friend) + groups.size.should == 1 + groups.first.id.should == @group.id + groups.first.people.size.should == 2 + groups.first.people.include?(@friend).should be true + groups.first.people.include?(@user2.person).should be true end end From 9f74cca1910012cb440b05b08f1c88a5b4b6415e Mon Sep 17 00:00:00 2001 From: Raphael Date: Wed, 18 Aug 2010 14:32:33 -0700 Subject: [PATCH 13/13] Copy tom seed to dev seed --- db/seeds/dev.rb | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/db/seeds/dev.rb b/db/seeds/dev.rb index f13e27f4c..0dfe3f96e 100644 --- a/db/seeds/dev.rb +++ b/db/seeds/dev.rb @@ -1,25 +1,28 @@ -# This file should contain all the record creation needed to seed the database with its default values. -# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup). -# -# Examples: -# -# cities = City.create([{ :name => 'Chicago' }, { :name => 'Copenhagen' }]) -# Mayor.create(:name => 'Daley', :city => citie - require 'config/environment' +host = "localhost:3000" +url = "http://#{host}/" # Create seed user -user = User.create( :email => "robert@joindiaspora.com", - :password => "evankorth", +user = User.create!( :email => "tom@tom.joindiaspora.com", + :password => "evankorth", :person => Person.new( - :email => "robert@joindiaspora.com", - :url => "http://localhost:3000/", - :profile => Profile.new( - :first_name => "bobert", - :last_name => "brin" ))) + :email => "tom@tom.joindiaspora.com", + :url => url, + :profile => Profile.new( :first_name => "Alexander", :last_name => "Hamiltom" )) + ) +user.person.save! -puts user.save -puts user.person.save! -puts user.save! -puts user.person.inspect -puts user.inspect +user2 = User.create!( :email => "korth@tom.joindiaspora.com", + :password => "evankorth", + :person => Person.new( :email => "korth@tom.joindiaspora.com", + :url => url, + :profile => Profile.new( :first_name => "Evan", + :last_name => "Korth"))) + +user2.person.save! + +# friending users +group = user.group(:name => "other dudes") +request = user.send_friend_request_to(user2.receive_url, group.id) +reversed_request = user2.accept_friend_request( request.id, user2.group(:name => "presidents").id ) +user.receive reversed_request.to_diaspora_xml