Skip to content
Extraits de code Groupes Projets
Valider 7ace73b8 rédigé par maxwell's avatar maxwell Validation de zhitomirskiyi
Parcourir les fichiers

iz ms wip fixing contactController destroy

parent 8c2e6dd8
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -30,6 +30,16 @@ class ContactsController < ApplicationController
end
end
def destroy
contact = current_user.contacts.where(:id => params[:id]).first
if current_user.disconnect(contact)
flash[:notice] = I18n.t('contacts.destroy.success', :name => contact.person.name)
else
flash[:error] = I18n.t('contacts.destroy.failure', :name => contact.person.name)
end
redirect_to contact.person
end
private
def request_to_aspect(aspect, person)
......
......@@ -76,11 +76,6 @@ class PeopleController < ApplicationController
end
end
def destroy
current_user.disconnect(Person.where(:id => params[:id]).first)
redirect_to root_url
end
def retrieve_remote
if params[:diaspora_handle]
webfinger(params[:diaspora_handle], :single_aspect_form => true)
......
......@@ -2,7 +2,7 @@
-# licensed under the Affero General Public License version 3 or later. See
-# the COPYRIGHT file.
.aspect_list#aspects_list{:data=>{:person_id=>person.id}}
.aspect_list#aspects_list(( {:data=>{:contact_id=>contact.id} }) if contact)
%ul
- for aspect in aspects_with_person
= render :partial => 'aspects/aspect_list_item',
......@@ -30,4 +30,4 @@
.right
= link_to t('aspects.aspect_contacts.done_editing'), "#", :class => "button", :onClick => '$.facebox.close();'
- if contact
= link_to t('people.profile_sidebar.remove_contact'), person, :confirm => t('are_you_sure'), :method => :delete
= link_to t('people.profile_sidebar.remove_contact'), contact, :confirm => t('are_you_sure'), :method => :delete
......@@ -7,7 +7,7 @@
= search_field_tag :contact_search, "", :class => 'contact_list_search', :results => 5, :placeholder => t('.all_contacts')
%ul
- for contact in contacts
%li{:data=>{:guid=>contact.person.id}}
%li{:data=>{:contact_id=>contact.id}}
= person_image_tag contact.person
%h4.name
= link_to contact.person.name, contact.person
......
......@@ -39,6 +39,9 @@ en:
one: "1 contact"
few: "%{count} contacts"
other: "%{count} contacts"
destroy:
success: "Successfully disconnected from %{name}"
failure: "Failed to disconnect from %{name}"
new_requests:
zero: "no new requests"
one: "new request!"
......
......@@ -74,18 +74,19 @@ module Diaspora
end
def disconnect(bad_contact)
Rails.logger.info("event=disconnect user=#{diaspora_handle} target=#{bad_contact.diaspora_handle}")
person = bad_contact.person
Rails.logger.info("event=disconnect user=#{diaspora_handle} target=#{person.diaspora_handle}")
retraction = Retraction.for(self)
retraction.subscribers = [bad_contact]#HAX
retraction.subscribers = [person]#HAX
Postzord::Dispatch.new(self, retraction).post
remove_contact(bad_contact)
end
def remove_contact(bad_person)
contact = contact_for(bad_person)
posts = raw_visible_posts.where(:person_id => bad_person.id).all
def remove_contact(contact)
bad_person_id = contact.person_id
posts = raw_visible_posts.where(:person_id => bad_person_id).all
visibilities = PostVisibility.joins(:post, :aspect).where(
:posts => {:person_id => bad_person.id},
:posts => {:person_id => bad_person_id},
:aspects => {:user_id => self.id}
)
visibility_ids = visibilities.map{|v| v.id}
......@@ -95,12 +96,12 @@ module Diaspora
post.destroy
end
end
raise "Contact not deleted" unless contact.destroy
contact.destroy
end
def disconnected_by(bad_contact)
Rails.logger.info("event=disconnected_by user=#{diaspora_handle} target=#{bad_contact.diaspora_handle}")
remove_contact bad_contact
def disconnected_by(person)
Rails.logger.info("event=disconnected_by user=#{diaspora_handle} target=#{person.diaspora_handle}")
remove_contact(self.contact_for(person))
end
def activate_contact(person, aspect)
......
......@@ -4,6 +4,7 @@ namespace :backup do
require 'cloudfiles'
task :mysql do
NUMBER_OF_DAYS = 3
puts("event=backup status=start type=mysql")
db = YAML::load(File.open(File.join(File.dirname(__FILE__), '..','..', 'config', 'database.yml')))
user = db['production']['user']
......@@ -28,6 +29,12 @@ namespace :backup do
puts("event=backup status=success type=mysql")
`rm /tmp/backup/#{tar_name}`
`rm -rf /tmp/backup/mysql/`
files = mysql_container.objects
files.sort!.pop(NUMBER_OF_DAYS * 24)
files.each do |file|
mysql_container.delete_object(file)
end
else
puts("event=backup status=failure type=mysql")
end
......
......@@ -22,13 +22,13 @@ var List = {
});
});
},
disconnectUser: function(person_id){
disconnectUser: function(contact_id){
$.ajax({
url: "/people/" + person_id,
url: "/contacts/" + contact_id,
type: "DELETE",
success: function(){
if( $('.contact_list').length == 1){
$('.contact_list li[data-guid='+person_id+']').fadeOut(200);
$('.contact_list li[data-contact_id='+contact_id+']').fadeOut(200);
} else if($('#aspects_list').length == 1) {
$.facebox.close();
};
......@@ -60,16 +60,16 @@ $(document).ready(function() {
$('.added').live('ajax:failure', function(data, html, xhr) {
if(confirm(Diaspora.widgets.i18n.t('shared.contact_list.cannot_remove'))){
var person_id;
var contact_id;
if( $('.contact_list').length == 1){
person_id = $(this).parents('li').attr("data-guid");
$('.contact_list li[data-guid='+person_id+']').fadeOut(200);
contact_id = $(this).parents('li').attr("data-contact_id");
$('.contact_list li[data-contact_id='+contact_id+']').fadeOut(200);
} else if($('#aspects_list').length == 1) {
person_id = $(this).parents('#aspects_list').attr("data-person_id");
contact_id = $(this).parents('#aspects_list').attr("data-contact_id");
};
List.disconnectUser(person_id);
List.disconnectUser(contact_id);
};
$(this).fadeTo(200,1);
});
......@@ -88,7 +88,11 @@ $(document).ready(function() {
$(".badges").prepend(json.badge_html);
$(this).parent().html(json.button_html);
$('.aspect_list ul').find('.add').each(function(a,b){$(b).attr('href', $(b).attr('href').replace('contacts','aspect_memberships'));})
if($('#aspects_list').length == 1) {
$('.aspect_list').attr('data-contact_id', json.contact_id);
alert('^- TODO');
$('.aspect_list ul').find('.add').each(function(a,b){$(b).attr('href', $(b).attr('href').replace('contacts','aspect_memberships'));})
};
$(this).fadeTo(200,1);
});
......
......@@ -24,7 +24,7 @@ describe ContactsController do
request.env["HTTP_REFERER"] = 'http://' + request.host
end
describe 'new' do
describe '#new' do
it 'succeeds' do
pending "This is going to be new request"
......@@ -33,7 +33,7 @@ describe ContactsController do
end
end
describe 'create' do
describe '#create' do
context 'with an incoming request' do
before do
@user3 = Factory.create(:user)
......@@ -74,4 +74,28 @@ describe ContactsController do
end
end
end
describe '#destroy' do
it 'disconnects from the person' do
@user.should_receive(:disconnect).with(@contact)
delete :destroy, :id => @contact.id
end
it 'flases success if the contact is not destroyed' do
@user.stub!(:disconnect).and_return(true)
delete :destroy, :id => @contact.id
flash[:notice].should_not be_empty
end
it 'flases failure if the contact is not destroyed' do
@user.stub!(:disconnect).and_return(false)
delete :destroy, :id => @contact.id
flash[:error].should_not be_empty
end
it 'redirects back to the person page' do
delete :destroy, :id => @contact.id
response.should redirect_to(@contact.person)
end
end
end
......@@ -20,6 +20,8 @@ describe 'a user receives a post' do
@user3 = eve
@aspect3 = @user3.aspects.first
@contact = @user1.contact_for(@user2.person)
end
it 'streams only one message to the everyone aspect when a multi-aspected contacts posts' do
......@@ -89,7 +91,7 @@ describe 'a user receives a post' do
end
it 'removes posts upon disconnecting' do
@user1.disconnect(@user2.person)
@user1.disconnect(@contact)
@user1.reload
@user1.raw_visible_posts.should_not include @status_message
end
......@@ -128,7 +130,7 @@ describe 'a user receives a post' do
@status_message.reload
@status_message.user_refs.should == 3
@user1.disconnect(@user2.person)
@user1.disconnect(@contact)
@status_message.reload
@status_message.user_refs.should == 2
end
......@@ -146,7 +148,7 @@ describe 'a user receives a post' do
@status_message.post_visibilities.reset
@status_message.user_refs.should == 4
@user1.disconnect(@user2.person)
@user1.disconnect(@contact)
@status_message.post_visibilities.reset
@status_message.user_refs.should == 3
end
......
......@@ -138,14 +138,14 @@ describe Person do
it 'should not delete an orphaned contact' do
@user.activate_contact(@person, @aspect)
lambda {@user.disconnect(@person)}.should_not change(Person, :count)
lambda {@user.disconnect(@user.contact_for(@person))}.should_not change(Person, :count)
end
it 'should not delete an un-orphaned contact' do
@user.activate_contact(@person, @aspect)
@user2.activate_contact(@person, @aspect2)
lambda {@user.disconnect(@person)}.should_not change(Person, :count)
lambda {@user.disconnect(@user.contact_for(@person))}.should_not change(Person, :count)
end
end
......
......@@ -250,7 +250,7 @@ describe Diaspora::UserModules::Connecting do
it 'should disconnect the other user on the same seed' do
lambda {
user2.disconnect user.person }.should change {
user2.disconnect user2.contact_for(user.person) }.should change {
user2.reload.contacts.count }.by(-1)
aspect2.reload.contacts.count.should == 0
end
......@@ -280,14 +280,14 @@ describe Diaspora::UserModules::Connecting do
it "deletes the disconnected user's posts from visible_posts" do
user2.reload.raw_visible_posts.include?(@message).should be_true
user2.disconnect user.person
user2.disconnect user2.contact_for(user.person)
user2.reload.raw_visible_posts.include?(@message).should be_false
end
it "deletes the disconnected user's posts from the aspect's posts" do
Post.count.should == 1
aspect2.reload.posts.include?(@message).should be_true
user2.disconnect user.person
user2.disconnect user2.contact_for(user.person)
aspect2.reload.posts.include?(@message).should be_false
Post.count.should == 1
end
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter