mirror of
https://github.com/openSUSE/osem.git
synced 2026-08-13 19:54:02 +00:00
Merge pull request #298 from gopesht/notify_on_date_change
Notify on date change
This commit is contained in:
commit
143e20d1a3
11 changed files with 102 additions and 12 deletions
|
|
@ -74,6 +74,19 @@ class Admin::ConferenceController < ApplicationController
|
|||
def update
|
||||
@conference = Conference.find_by(short_title: params[:id])
|
||||
short_title = @conference.short_title
|
||||
@conference.assign_attributes(params[:conference])
|
||||
if @conference.start_date_changed? || @conference.end_date_changed?
|
||||
if @conference.email_settings.send_on_updated_conference_dates
|
||||
Mailbot.conference_date_update_mail(@conference,date_string(@conference.start_date, @conference.end_date)).deliver
|
||||
end
|
||||
end
|
||||
|
||||
if @conference.registration_start_date_changed? || @conference.registration_end_date_changed?
|
||||
if @conference.email_settings.send_on_updated_conference_registration_dates
|
||||
Mailbot.conference_registration_date_update_mail(@conference,date_string(@conference.registration_start_date, @conference.registration_end_date)).deliver
|
||||
end
|
||||
end
|
||||
|
||||
if @conference.update_attributes(params[:conference])
|
||||
redirect_to(edit_admin_conference_path(id: @conference.short_title),
|
||||
notice: 'Conference was successfully updated.')
|
||||
|
|
|
|||
|
|
@ -38,6 +38,24 @@ class Mailbot < ActionMailer::Base
|
|||
conference.email_settings.confirmed_but_not_registered_email(event))
|
||||
end
|
||||
|
||||
def conference_date_update_mail(conference,dates)
|
||||
subject = conference.email_settings.updated_conference_dates_subject.blank? ? "#{conference.title} Dates Updated" : conference.email_settings.updated_conference_dates_subject
|
||||
partial = "#{conference.title}\n New Dates : #{dates}\n For more information visit #{Rails.application.routes.url_helpers.conference_path(conference.short_title, host: CONFIG['url_for_emails'])}"
|
||||
body = conference.email_settings.updated_conference_dates_template.blank? ? "#{partial}" : "#{conference.email_settings.updated_conference_dates_template}\n #{partial}"
|
||||
conference.registrations.each do |u|
|
||||
build_email(conference, u.user.email, subject, body)
|
||||
end
|
||||
end
|
||||
|
||||
def conference_registration_date_update_mail(conference, dates)
|
||||
subject = conference.email_settings.updated_conference_registration_dates_subject.blank? ? "#{conference.title} Registration Dates Updated" : conference.email_settings.updated_conference_registration_dates_subject
|
||||
partial = "#{conference.title}\n New Registration Dates : #{dates}\n For more information visit #{Rails.application.routes.url_helpers.conference_path(conference.short_title, host: CONFIG['url_for_emails'])}"
|
||||
body = conference.email_settings.updated_conference_registration_dates_template.blank? ? "#{partial}" : "#{conference.email_settings.updated_conference_dates_template}\n #{partial}"
|
||||
conference.registrations.each do |u|
|
||||
build_email(conference, u.user.email, subject, body)
|
||||
end
|
||||
end
|
||||
|
||||
def build_email(conference, to, subject, body)
|
||||
mail(:to => to,
|
||||
:from => conference.contact_email,
|
||||
|
|
|
|||
|
|
@ -3,7 +3,10 @@ class EmailSettings < ActiveRecord::Base
|
|||
:send_on_confirmed_without_registration, :registration_email_template,
|
||||
:accepted_email_template, :rejected_email_template, :confirmed_email_template,
|
||||
:registration_subject, :accepted_subject, :rejected_subject,
|
||||
:confirmed_without_registration_subject
|
||||
:confirmed_without_registration_subject,
|
||||
:send_on_updated_conference_dates, :updated_conference_dates_subject,
|
||||
:updated_conference_dates_template, :send_on_updated_conference_registration_dates,
|
||||
:updated_conference_registration_dates_subject, :updated_conference_registration_dates_template
|
||||
|
||||
def get_values(conference, user, event = nil)
|
||||
h = {
|
||||
|
|
|
|||
|
|
@ -35,6 +35,12 @@
|
|||
= f.input :send_on_confirmed_without_registration, :label => false, :hint => "Send an email when a user has a confirmed proposal, but isn't yet registered?"
|
||||
= f.input :confirmed_without_registration_subject
|
||||
= f.input :confirmed_email_template, :input_html => { :rows => 10, :cols => 20 }
|
||||
= f.input :send_on_updated_conference_dates, hint: "This is to notify all participants that the conference dates has been changed."
|
||||
= f.input :updated_conference_dates_subject
|
||||
= f.input :updated_conference_dates_template, :input_html => { :rows => 10, :cols => 20 }
|
||||
= f.input :send_on_updated_conference_registration_dates, hint: "This is to notify all participants that the conference registration dates has been changed."
|
||||
= f.input :updated_conference_registration_dates_subject
|
||||
= f.input :updated_conference_registration_dates_template, :input_html => { :rows => 10, :cols => 20 }
|
||||
= f.action :submit, :as => :button, :button_html => {:class => "btn btn-primary"}
|
||||
|
||||
:javascript
|
||||
|
|
|
|||
|
|
@ -0,0 +1,7 @@
|
|||
class AddConferenceDatesUpdatesToEmailSettings < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :email_settings, :send_on_updated_conference_dates, :boolean, default: true
|
||||
add_column :email_settings, :updated_conference_dates_subject, :string
|
||||
add_column :email_settings, :updated_conference_dates_template, :text
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
class AddConferenceRegistrationDatesUpdatesToEmailSettings < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :email_settings, :send_on_updated_conference_registration_dates, :boolean, default: true
|
||||
add_column :email_settings, :updated_conference_registration_dates_subject, :string
|
||||
add_column :email_settings, :updated_conference_registration_dates_template, :text
|
||||
end
|
||||
end
|
||||
16
db/schema.rb
16
db/schema.rb
|
|
@ -11,7 +11,7 @@
|
|||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20140714141156) do
|
||||
ActiveRecord::Schema.define(version: 20140710130608) do
|
||||
|
||||
create_table "ahoy_events", force: true do |t|
|
||||
t.uuid "visit_id"
|
||||
|
|
@ -150,10 +150,10 @@ ActiveRecord::Schema.define(version: 20140714141156) do
|
|||
|
||||
create_table "email_settings", force: true do |t|
|
||||
t.integer "conference_id"
|
||||
t.boolean "send_on_registration", default: true
|
||||
t.boolean "send_on_accepted", default: true
|
||||
t.boolean "send_on_rejected", default: true
|
||||
t.boolean "send_on_confirmed_without_registration", default: true
|
||||
t.boolean "send_on_registration", default: true
|
||||
t.boolean "send_on_accepted", default: true
|
||||
t.boolean "send_on_rejected", default: true
|
||||
t.boolean "send_on_confirmed_without_registration", default: true
|
||||
t.text "registration_email_template"
|
||||
t.text "accepted_email_template"
|
||||
t.text "rejected_email_template"
|
||||
|
|
@ -164,6 +164,12 @@ ActiveRecord::Schema.define(version: 20140714141156) do
|
|||
t.string "accepted_subject"
|
||||
t.string "rejected_subject"
|
||||
t.string "confirmed_without_registration_subject"
|
||||
t.boolean "send_on_updated_conference_dates", default: true
|
||||
t.string "updated_conference_dates_subject"
|
||||
t.text "updated_conference_dates_template"
|
||||
t.boolean "send_on_updated_conference_registration_dates", default: true
|
||||
t.string "updated_conference_registration_dates_subject"
|
||||
t.text "updated_conference_registration_dates_template"
|
||||
end
|
||||
|
||||
create_table "event_attachments", force: true do |t|
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ describe Admin::ConferenceController do
|
|||
it 'locates the requested conference' do
|
||||
patch :update, id: conference.short_title, conference:
|
||||
attributes_for(:conference, title: 'Example Con')
|
||||
|
||||
expect(assigns(:conference)).to eq(conference)
|
||||
end
|
||||
|
||||
|
|
@ -42,6 +41,26 @@ describe Admin::ConferenceController do
|
|||
expect(response).to redirect_to edit_admin_conference_path(
|
||||
conference.short_title)
|
||||
end
|
||||
|
||||
it 'sends email notification on conference date update' do
|
||||
mailer = double
|
||||
allow(mailer).to receive(:deliver)
|
||||
conference.email_settings = create(:email_settings)
|
||||
patch :update, id: conference.short_title, conference:
|
||||
attributes_for(:conference, start_date: Date.today + 2.days, end_date: Date.today + 4.days)
|
||||
conference.reload
|
||||
allow(Mailbot).to receive(:conference_date_update_mail).and_return(mailer)
|
||||
end
|
||||
|
||||
it 'sends email notification on conference registration date update' do
|
||||
mailer = double
|
||||
allow(mailer).to receive(:deliver)
|
||||
conference.email_settings = create(:email_settings)
|
||||
patch :update, id: conference.short_title, conference:
|
||||
attributes_for(:conference, registration_start_date: Date.today + 2.days, registration_end_date: Date.today + 4.days)
|
||||
conference.reload
|
||||
allow(Mailbot).to receive(:conference_registration_date_update_mail).and_return(mailer)
|
||||
end
|
||||
end
|
||||
|
||||
context 'invalid attributes' do
|
||||
|
|
|
|||
|
|
@ -8,7 +8,9 @@ FactoryGirl.define do
|
|||
timezone 'Amsterdam'
|
||||
contact_email 'admin@example.com'
|
||||
start_date Date.today
|
||||
end_date Date.tomorrow
|
||||
end_date Date.today + 6.days
|
||||
registration_start_date Date.today + 3.days
|
||||
registration_end_date Date.today + 5.days
|
||||
make_conference_public true
|
||||
venue
|
||||
end
|
||||
|
|
|
|||
|
|
@ -6,6 +6,12 @@ FactoryGirl.define do
|
|||
send_on_accepted false
|
||||
send_on_rejected false
|
||||
send_on_confirmed_without_registration false
|
||||
send_on_updated_conference_dates true
|
||||
send_on_updated_conference_registration_dates true
|
||||
updated_conference_dates_template 'Sample Conference\n New Dates: January 17 - 21 2014'
|
||||
updated_conference_dates_subject 'Conference dates have been updated'
|
||||
updated_conference_registration_dates_subject 'Conference registration dates have been updated'
|
||||
updated_conference_registration_dates_template 'Sample Conference\n New Dates: January 17 - 21 2014'
|
||||
registration_subject 'Lorem Ipsum Dolsum'
|
||||
registration_email_template 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit'
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,19 +1,22 @@
|
|||
require 'spec_helper'
|
||||
describe 'admin/emails/index' do
|
||||
|
||||
it 'renders email templates' do
|
||||
it 'renders email templates' do
|
||||
@conference = create(:conference)
|
||||
assign :conference, @conference
|
||||
@settings = create(:email_settings)
|
||||
assign :settings, @settings
|
||||
render
|
||||
expect(rendered).
|
||||
to have_selector("input[type='checkbox'][value='1']", count: 4)
|
||||
to have_selector("input[type='checkbox'][value='1']", count: 6)
|
||||
expect(rendered).
|
||||
to have_selector("input[checked='checked'][type='checkbox'][value='1']", count: 1)
|
||||
to have_selector("input[checked='checked'][type='checkbox'][value='1']", count: 3)
|
||||
expect(rendered).to include('Lorem Ipsum Dolsum')
|
||||
expect(rendered).
|
||||
to include('Lorem ipsum dolor sit amet, consectetuer adipiscing elit')
|
||||
expect(rendered).
|
||||
to include('Conference dates have been updated')
|
||||
expect(rendered).
|
||||
to include('Conference registration dates have been updated')
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue