Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Setting to disable email notifications of comments #3059

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions app/controllers/admin/emails_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ def email_params
:send_on_accepted, :send_on_rejected, :send_on_confirmed_without_registration,
:send_on_submitted_proposal,
:submitted_proposal_subject, :submitted_proposal_body,
:send_on_event_comment,
:registration_subject, :accepted_subject, :rejected_subject, :confirmed_without_registration_subject,
:registration_body, :accepted_body, :rejected_body, :confirmed_without_registration_body,
:send_on_conference_dates_updated, :conference_dates_updated_subject, :conference_dates_updated_body,
Expand Down
4 changes: 1 addition & 3 deletions app/jobs/event_comment_mail_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@ class EventCommentMailJob < ApplicationJob
queue_as :default

def perform(comment)
conference = comment.commentable.program.conference

User.comment_notifiable(conference).each do |user|
User.comment_notifiable(comment.conference_id).each do |user|
Mailbot.event_comment_mail(comment, user).deliver_now
end
end
Expand Down
14 changes: 10 additions & 4 deletions app/models/comment.rb
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,19 @@ def self.find_commentable(commentable_str, commentable_id)
commentable_str.constantize.find(commentable_id)
end

def conference_id
commentable.program.conference_id
end

private

def send_notification
EventCommentMailJob.perform_later(self)
def conference
commentable.program.conference
end

def conference_id
commentable.program.conference_id
def send_notification
return unless conference.email_settings.send_on_event_comment?

EventCommentMailJob.perform_later(self)
end
end
2 changes: 1 addition & 1 deletion app/models/user.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def for_registration conference
after_save :touch_events

# add scope
scope :comment_notifiable, ->(conference) {joins(:roles).where('roles.name IN (?)', [:organizer, :cfp]).where('roles.resource_type = ? AND roles.resource_id = ?', 'Conference', conference.id)}
scope :comment_notifiable, ->(conference_id) {joins(:roles).where('roles.name IN (?)', [:organizer, :cfp]).where('roles.resource_type = ? AND roles.resource_id = ?', 'Conference', conference_id)}

# scopes for user distributions
scope :recent, lambda {
Expand Down
4 changes: 4 additions & 0 deletions app/views/admin/emails/index.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@
%a.btn.btn-link.control_label.template_help_link{ 'data-name' => 'registration_help' } Show Help
= render partial: 'help', locals: { id: 'registration_help', show_event_variables: false }
#proposal.tab-pane{ role: 'tabpanel' }
.checkbox
%label
= f.check_box :send_on_event_comment
Send an email to all organizers and CfP team members when a comment is added?
.checkbox
%label
= f.check_box :send_on_submitted_proposal, data: { name: 'email_settings_proposal_submited_subject'}, class: 'send_on_radio'
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class AddSendOnEventCommentToEmailSettings < ActiveRecord::Migration[7.0]
def change
add_column :email_settings, :send_on_event_comment, :boolean, default: true
end
end
3 changes: 2 additions & 1 deletion db/schema.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.

ActiveRecord::Schema.define(version: 20181229233811) do
ActiveRecord::Schema.define(version: 2022_04_01_000955) do

create_table "answers", force: :cascade do |t|
t.string "title"
Expand Down Expand Up @@ -192,6 +192,7 @@
t.boolean "send_on_submitted_proposal", default: false
t.string "submitted_proposal_subject"
t.text "submitted_proposal_body"
t.boolean "send_on_event_comment", default: true
end

create_table "event_schedules", force: :cascade do |t|
Expand Down
4 changes: 2 additions & 2 deletions spec/models/user_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -88,11 +88,11 @@
let(:cfp_user) { create(:user, role_ids: [cfp_role.id]) }

it 'includes organizer and cfp user' do
expect(User.comment_notifiable(conference)).to include(organizer, cfp_user)
expect(User.comment_notifiable(conference.id)).to include(organizer, cfp_user)
end

it 'excludes ordinary user' do
expect(User.comment_notifiable(conference)).not_to include(user)
expect(User.comment_notifiable(conference.id)).not_to include(user)
end
end

Expand Down