[refs #114] change subsrcibe status to boolean
This commit is contained in:
parent
5efaca77cf
commit
119c378149
|
@ -6,7 +6,7 @@ class CommitSubscribesController < ApplicationController
|
||||||
before_filter :find_commit
|
before_filter :find_commit
|
||||||
|
|
||||||
def create
|
def create
|
||||||
if Subscribe.set_subscribe_to_commit(@options, Subscribe::ON)
|
if Subscribe.subscribe_to_commit(@options)
|
||||||
flash[:notice] = I18n.t("flash.subscribe.commit.saved")
|
flash[:notice] = I18n.t("flash.subscribe.commit.saved")
|
||||||
# TODO js
|
# TODO js
|
||||||
redirect_to commit_path(@project, @commit)
|
redirect_to commit_path(@project, @commit)
|
||||||
|
@ -17,7 +17,7 @@ class CommitSubscribesController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
Subscribe.set_subscribe_to_commit(@options, Subscribe::OFF)
|
Subscribe.unsubscribe_from_commit(@options)
|
||||||
flash[:notice] = t("flash.subscribe.commit.destroyed")
|
flash[:notice] = t("flash.subscribe.commit.destroyed")
|
||||||
redirect_to commit_path(@project, @commit)
|
redirect_to commit_path(@project, @commit)
|
||||||
end
|
end
|
||||||
|
|
|
@ -32,7 +32,7 @@ class Comment < ActiveRecord::Base
|
||||||
recipients << self.project.owner if self.project.owner_type == 'User' # project owner
|
recipients << self.project.owner if self.project.owner_type == 'User' # project owner
|
||||||
recipients.compact.uniq.each do |user|
|
recipients.compact.uniq.each do |user|
|
||||||
options = {:project_id => self.project.id, :subscribeable_id => self.commentable.id, :subscribeable_type => self.commentable.class.name, :user_id => user.id}
|
options = {:project_id => self.project.id, :subscribeable_id => self.commentable.id, :subscribeable_type => self.commentable.class.name, :user_id => user.id}
|
||||||
Subscribe.set_subscribe_to_commit(options, Subscribe::ON) if Subscribe.subscribed_to_commit?(self.project, user, self.commentable)
|
Subscribe.subscribe_to_commit(options) if Subscribe.subscribed_to_commit?(self.project, user, self.commentable)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,18 +1,12 @@
|
||||||
class Subscribe < ActiveRecord::Base
|
class Subscribe < ActiveRecord::Base
|
||||||
ON = 1
|
|
||||||
OFF = 0
|
|
||||||
belongs_to :subscribeable, :polymorphic => true
|
belongs_to :subscribeable, :polymorphic => true
|
||||||
belongs_to :user
|
belongs_to :user
|
||||||
belongs_to :project
|
belongs_to :project
|
||||||
|
|
||||||
validates :status, :inclusion => {:in => 0..1}
|
|
||||||
|
|
||||||
scope :on, where(:status => ON)
|
|
||||||
scope :off, where(:status => OFF)
|
|
||||||
scope :finder_hack, order('') # FIXME .subscribes - error; .subscribes.finder_hack - success Oo
|
scope :finder_hack, order('') # FIXME .subscribes - error; .subscribes.finder_hack - success Oo
|
||||||
|
|
||||||
def subscribed?
|
def subscribed?
|
||||||
status == ON
|
status
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.comment_subscribes(comment)
|
def self.comment_subscribes(comment)
|
||||||
|
@ -33,7 +27,7 @@ class Subscribe < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.new_comment_commit_notification(comment)
|
def self.new_comment_commit_notification(comment)
|
||||||
subscribes = Subscribe.comment_subscribes(comment).on
|
subscribes = Subscribe.comment_subscribes(comment).where(:status => true)
|
||||||
subscribes.each do |subscribe|
|
subscribes.each do |subscribe|
|
||||||
next if comment.own_comment?(subscribe.user) || !subscribe.user.notifier.can_notify
|
next if comment.own_comment?(subscribe.user) || !subscribe.user.notifier.can_notify
|
||||||
UserMailer.delay.new_comment_notification(comment, subscribe.user)
|
UserMailer.delay.new_comment_notification(comment, subscribe.user)
|
||||||
|
@ -49,6 +43,18 @@ class Subscribe < ActiveRecord::Base
|
||||||
(user.committer?(commit) && user.notifier.new_comment_commit_owner)
|
(user.committer?(commit) && user.notifier.new_comment_commit_owner)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
def self.subscribe_to_commit(options)
|
||||||
|
Subscribe.set_subscribe_to_commit(options, true)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
def self.unsubscribe_from_commit(options)
|
||||||
|
Subscribe.set_subscribe_to_commit(options, false)
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
def self.set_subscribe_to_commit(options, status)
|
def self.set_subscribe_to_commit(options, status)
|
||||||
if subscribe = Subscribe.where(options).first
|
if subscribe = Subscribe.where(options).first
|
||||||
subscribe.update_attribute(:status, status)
|
subscribe.update_attribute(:status, status)
|
||||||
|
@ -56,4 +62,5 @@ class Subscribe < ActiveRecord::Base
|
||||||
Subscribe.create(options.merge(:status => status))
|
Subscribe.create(options.merge(:status => status))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
end
|
|
@ -0,0 +1,11 @@
|
||||||
|
class ChangeStatusSubscribes < ActiveRecord::Migration
|
||||||
|
def self.up
|
||||||
|
remove_column :subscribes, :status
|
||||||
|
add_column :subscribes, :status, :boolean, :default => true
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.down
|
||||||
|
remove_column :subscribes, :status
|
||||||
|
add_column :subscribes, :status, :integer, :default => 1
|
||||||
|
end
|
||||||
|
end
|
|
@ -10,7 +10,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended to check this file into your version control system.
|
# It's strongly recommended to check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(:version => 20120129120025) do
|
ActiveRecord::Schema.define(:version => 20120130111133) do
|
||||||
|
|
||||||
create_table "arches", :force => true do |t|
|
create_table "arches", :force => true do |t|
|
||||||
t.string "name", :null => false
|
t.string "name", :null => false
|
||||||
|
@ -299,8 +299,8 @@ ActiveRecord::Schema.define(:version => 20120129120025) do
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
t.integer "status", :default => 1
|
|
||||||
t.integer "project_id"
|
t.integer "project_id"
|
||||||
|
t.boolean "status", :default => true
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "users", :force => true do |t|
|
create_table "users", :force => true do |t|
|
||||||
|
|
|
@ -131,7 +131,7 @@ describe Comment do
|
||||||
context 'for unsubscribe commit' do
|
context 'for unsubscribe commit' do
|
||||||
it 'should not send an e-mail' do
|
it 'should not send an e-mail' do
|
||||||
ActionMailer::Base.deliveries = []
|
ActionMailer::Base.deliveries = []
|
||||||
Subscribe.set_subscribe_to_commit({:project_id => @project.id, :subscribeable_id => @commit.id, :subscribeable_type => @commit.class.name, :user_id => @user.id}, Subscribe::OFF)
|
Subscribe.unsubscribe_from_commit(:project_id => @project.id, :subscribeable_id => @commit.id, :subscribeable_type => @commit.class.name, :user_id => @user.id)
|
||||||
comment = Comment.create(:user => @stranger, :body => 'hello!', :project => @project,
|
comment = Comment.create(:user => @stranger, :body => 'hello!', :project => @project,
|
||||||
:commentable_type => @commit.class.name, :commentable_id => @commit.id)
|
:commentable_type => @commit.class.name, :commentable_id => @commit.id)
|
||||||
ActionMailer::Base.deliveries.count.should == 0 # cache project.commit_comments_subscribes ...
|
ActionMailer::Base.deliveries.count.should == 0 # cache project.commit_comments_subscribes ...
|
||||||
|
@ -234,7 +234,7 @@ describe Comment do
|
||||||
context 'for unsubscribe project' do
|
context 'for unsubscribe project' do
|
||||||
it 'should not send an e-mail' do
|
it 'should not send an e-mail' do
|
||||||
ActionMailer::Base.deliveries = []
|
ActionMailer::Base.deliveries = []
|
||||||
Subscribe.set_subscribe_to_commit({:project_id => @project.id, :subscribeable_id => @commit.id, :subscribeable_type => @commit.class.name, :user_id => @user.id}, Subscribe::OFF)
|
Subscribe.unsubscribe_from_commit(:project_id => @project.id, :subscribeable_id => @commit.id, :subscribeable_type => @commit.class.name, :user_id => @user.id)
|
||||||
comment = Comment.create(:user => @stranger, :body => 'hello!', :project => @project,
|
comment = Comment.create(:user => @stranger, :body => 'hello!', :project => @project,
|
||||||
:commentable_type => @commit.class.name, :commentable_id => @commit.id)
|
:commentable_type => @commit.class.name, :commentable_id => @commit.id)
|
||||||
ActionMailer::Base.deliveries.count.should == 0
|
ActionMailer::Base.deliveries.count.should == 0
|
||||||
|
@ -321,7 +321,7 @@ describe Comment do
|
||||||
@stranger.notifier.update_attribute :new_comment_commit_owner, false
|
@stranger.notifier.update_attribute :new_comment_commit_owner, false
|
||||||
#@stranger.notifier.update_attribute :new_comment_commit_commentor, false
|
#@stranger.notifier.update_attribute :new_comment_commit_commentor, false
|
||||||
|
|
||||||
Subscribe.set_subscribe_to_commit({:project_id => @project.id, :subscribeable_id => @commit.id, :subscribeable_type => @commit.class.name, :user_id => @stranger.id}, Subscribe::ON)
|
Subscribe.subscribe_to_commit(:project_id => @project.id, :subscribeable_id => @commit.id, :subscribeable_type => @commit.class.name, :user_id => @stranger.id)
|
||||||
comment = Comment.create(:user => @project.owner, :body => 'hello!', :project => @project,
|
comment = Comment.create(:user => @project.owner, :body => 'hello!', :project => @project,
|
||||||
:commentable_type => @commit.class.name, :commentable_id => @commit.id)
|
:commentable_type => @commit.class.name, :commentable_id => @commit.id)
|
||||||
ActionMailer::Base.deliveries.count.should == 1
|
ActionMailer::Base.deliveries.count.should == 1
|
||||||
|
@ -331,7 +331,7 @@ describe Comment do
|
||||||
it 'should not send an e-mail for own comment' do
|
it 'should not send an e-mail for own comment' do
|
||||||
ActionMailer::Base.deliveries = []
|
ActionMailer::Base.deliveries = []
|
||||||
#@project.owner.notifier.update_attribute :can_notify, false
|
#@project.owner.notifier.update_attribute :can_notify, false
|
||||||
Subscribe.set_subscribe_to_commit({:project_id => @project.id, :subscribeable_id => @commit.id, :subscribeable_type => @commit.class.name, :user_id => @stranger.id}, Subscribe::ON)
|
Subscribe.subscribe_to_commit(:project_id => @project.id, :subscribeable_id => @commit.id, :subscribeable_type => @commit.class.name, :user_id => @stranger.id)
|
||||||
comment = Comment.create(:user => @owner, :body => 'hello!', :project => @project,
|
comment = Comment.create(:user => @owner, :body => 'hello!', :project => @project,
|
||||||
:commentable_type => @commit.class.name, :commentable_id => @commit.id)
|
:commentable_type => @commit.class.name, :commentable_id => @commit.id)
|
||||||
ActionMailer::Base.deliveries.count.should == 0
|
ActionMailer::Base.deliveries.count.should == 0
|
||||||
|
@ -350,7 +350,7 @@ describe Comment do
|
||||||
|
|
||||||
it 'should send a one e-mail when subscribed to commit' do
|
it 'should send a one e-mail when subscribed to commit' do
|
||||||
ActionMailer::Base.deliveries = []
|
ActionMailer::Base.deliveries = []
|
||||||
Subscribe.set_subscribe_to_commit({:project_id => @project.id, :subscribeable_id => @commit.id, :subscribeable_type => @commit.class.name, :user_id => @stranger.id}, Subscribe::ON)
|
Subscribe.subscribe_to_commit(:project_id => @project.id, :subscribeable_id => @commit.id, :subscribeable_type => @commit.class.name, :user_id => @stranger.id)
|
||||||
@stranger.update_attribute :email, 'code@tpope.net'
|
@stranger.update_attribute :email, 'code@tpope.net'
|
||||||
comment = Comment.create(:user => @user, :body => 'hello!', :project => @project,
|
comment = Comment.create(:user => @user, :body => 'hello!', :project => @project,
|
||||||
:commentable_type => @commit.class.name, :commentable_id => @commit.id)
|
:commentable_type => @commit.class.name, :commentable_id => @commit.id)
|
||||||
|
|
Loading…
Reference in New Issue