From 83e3f912f8aa6738de8d9e2c59391ec408b6872e Mon Sep 17 00:00:00 2001 From: Matthias Viehweger Date: Wed, 11 Dec 2024 18:28:37 +0100 Subject: [PATCH 1/3] Only send the new-alumnus-mail for flocks --- app/jobs/alumni_mail_job.rb | 7 ++----- spec/jobs/alumni_mail_job_spec.rb | 9 ++++++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/jobs/alumni_mail_job.rb b/app/jobs/alumni_mail_job.rb index 7e79a75..2e3133d 100644 --- a/app/jobs/alumni_mail_job.rb +++ b/app/jobs/alumni_mail_job.rb @@ -13,12 +13,9 @@ def initialize(group_id, person_id) def perform return if no_more_active_roles? + return unless group.is_a?(Group::Flock) - if group.is_a?(Group::Flock) - AlumniMailer.new_member_flock(person).deliver_now - else - AlumniMailer.new_member(person).deliver_now - end + AlumniMailer.new_member_flock(person).deliver_now end private diff --git a/spec/jobs/alumni_mail_job_spec.rb b/spec/jobs/alumni_mail_job_spec.rb index 330d717..e00e9cb 100644 --- a/spec/jobs/alumni_mail_job_spec.rb +++ b/spec/jobs/alumni_mail_job_spec.rb @@ -27,12 +27,15 @@ expect { AlumniMailJob.new(group.id, person.id).perform }.to change { ActionMailer::Base.deliveries.size }.by(1) end - it 'sends email if there are only Alumnus::Member roles left' do + it 'sends email if the group is not a flock' do group = groups(:city) person = Fabricate(Group::RegionalAlumnusGroup::Member.sti_name.to_sym, group: group.alumnus_group).person - expect(AlumniMailer).to receive(:new_member).with(person).and_call_original - expect { AlumniMailJob.new(group.id, person.id).perform }.to change { ActionMailer::Base.deliveries.size }.by(1) + expect(group).not_to be_a(Group::Flock) + + expect(AlumniMailer).not_to receive(:new_member).with(person).and_call_original + expect(AlumniMailer).not_to receive(:new_member_flock).and_call_original + expect { AlumniMailJob.new(group.id, person.id).perform }.to change { ActionMailer::Base.deliveries.size }.by(0) end it 'does not send flock email if there are other roles in the current flock-layer left' do From 5605123f6ba298ffeba65fb967a60c2aa74d41d4 Mon Sep 17 00:00:00 2001 From: Matthias Viehweger Date: Wed, 11 Dec 2024 18:31:14 +0100 Subject: [PATCH 2/3] Remove obsolete mailer and custom content --- app/mailers/alumni_mailer.rb | 7 +--- ...1173100_remove_outdated_custom_contents.rb | 32 +++++++++++++++++++ db/seeds/custom_contents.rb | 19 ++--------- 3 files changed, 36 insertions(+), 22 deletions(-) create mode 100644 db/migrate/20241211173100_remove_outdated_custom_contents.rb diff --git a/app/mailers/alumni_mailer.rb b/app/mailers/alumni_mailer.rb index fde2c14..00023ca 100644 --- a/app/mailers/alumni_mailer.rb +++ b/app/mailers/alumni_mailer.rb @@ -1,16 +1,11 @@ -# Copyright (c) 2012-2017, Jungwacht Blauring Schweiz. This file is part of +# Copyright (c) 2012-2024, Jungwacht Blauring Schweiz. This file is part of # hitobito_jubla and licensed under the Affero General Public License version 3 # or later. See the COPYING file at the top-level directory or at # https://github.com/hitobito/hitobito_jubla. class AlumniMailer < ApplicationMailer - NEW_MEMBER = "new_member".freeze NEW_MEMBER_FLOCK = "new_member_flock".freeze - def new_member(recipient) - custom_content_mail(recipient.email, NEW_MEMBER, mail_values(recipient)) - end - def new_member_flock(recipient) custom_content_mail(recipient.email, NEW_MEMBER_FLOCK, mail_values(recipient)) end diff --git a/db/migrate/20241211173100_remove_outdated_custom_contents.rb b/db/migrate/20241211173100_remove_outdated_custom_contents.rb new file mode 100644 index 0000000..877f243 --- /dev/null +++ b/db/migrate/20241211173100_remove_outdated_custom_contents.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +class RemoveOutdatedCustomContents < ActiveRecord::Migration[7.0] + def up + custom_content_id = select_value("SELECT id FROM custom_contents WHERE key = 'new_member'") + + if custom_content_id.blank? + say "CustomContent 'new_member' not found, moving on." + return + end + + execute("DELETE FROM custom_content_translations WHERE custom_content_id = #{custom_content_id};") + execute("DELETE FROM custom_contents WHERE id = #{custom_content_id};") + end + + def down + CustomContent.seed_once(:key, + { + key: "new_member", + placeholders_required: "recipient-name, recipient-profile-url" + }) + + CustomContent::Translation.seed_once(:custom_content_id, :locale, + { + custom_content_id: CustomContent.where(key: "new_member").first.id, + locale: "de", + label: "Ehemalige: Benachrichtigung", + subject: "Danke für deinen Einsatz bei der Jubla!", + body: "Liebe/Lieber {recipient-name}

Herzlichen Dank für dein wichtiges Engagement für Jungwacht Blauring. Bestimmt hast du viele tolle Erlebnisse gehabt und gute Freundschaften aufgebaut – eben Lebensfreu(n)de.

\"Freude und Freunde – und das fürs Leben\" soll auch heissen, dass deine Jubla-Zeit jetzt nicht vorbei sein muss. Als frischgebackene Ehemalige / frischgebackener Ehemaliger bist du nämlich ein wichtiger Teil für Jungwacht Blauring. Vielleicht braucht deine ehemalige Schar jedes Jahr tatkräftige Unterstützung beim Sommerlager-Aufbau? Oder der entsprechende Kantonalverband ist auf der Suche nach Leuten, die beim kantonalen Geländespiel die Verpflegung organisieren? Es wäre doch toll, wenn du auf diese oder andere Arten noch mit Jungwacht Blauring in Verbindung bleiben könntest. Darum kannst du in deinem Profil auf der jubla.db bestimmen, welche Ebene dich in Zukunft kontaktieren und dir Informationen senden darf. Vielen Dank nochmals für dein Engagement – auch über deine aktive Zeit hinaus.

Liebe Grüsse
Jungwacht Blauring Schweiz" + }) + end +end diff --git a/db/seeds/custom_contents.rb b/db/seeds/custom_contents.rb index f8fe88e..7afed31 100644 --- a/db/seeds/custom_contents.rb +++ b/db/seeds/custom_contents.rb @@ -1,6 +1,6 @@ # encoding: utf-8 -# Copyright (c) 2012-2017, Jungwacht Blauring Schweiz. This file is part of +# Copyright (c) 2012-2024, Jungwacht Blauring Schweiz. This file is part of # hitobito_jubla and licensed under the Affero General Public License version 3 # or later. See the COPYING file at the top-level directory or at # https://github.com/hitobito/hitobito_jubla. @@ -17,12 +17,7 @@ placeholders_optional: 'recipient-names, due-date, contact-address, census-url' }, - { - key: AlumniMailer::NEW_MEMBER, - placeholders_required: 'recipient-name, recipient-profile-url' - }, - - { + { key: AlumniMailer::NEW_MEMBER_FLOCK, placeholders_required: 'recipient-name, recipient-profile-url' }, @@ -45,15 +40,7 @@ body: "Hallo {recipient-names}

Wir bitten dich, den Bestand deiner Gruppe zu aktualisieren und die Bestandesmeldung bis am {due-date} zu bestätigen:

{census-url}

Vielen Dank für deine Mithilfe. Bei Fragen kannst du dich an die folgende Adresse wenden:

{contact-address}

Deine Jubla" }, - { - custom_content_id: CustomContent.where(key: AlumniMailer::NEW_MEMBER).first.id, - locale: 'de', - label: 'Ehemalige: Benachrichtigung', - subject: 'Danke für deinen Einsatz bei der Jubla!', - body: "Liebe/Lieber {recipient-name}

Herzlichen Dank für dein wichtiges Engagement für Jungwacht Blauring. Bestimmt hast du viele tolle Erlebnisse gehabt und gute Freundschaften aufgebaut – eben Lebensfreu(n)de.

\"Freude und Freunde – und das fürs Leben\" soll auch heissen, dass deine Jubla-Zeit jetzt nicht vorbei sein muss. Als frischgebackene Ehemalige / frischgebackener Ehemaliger bist du nämlich ein wichtiger Teil für Jungwacht Blauring. Vielleicht braucht deine ehemalige Schar jedes Jahr tatkräftige Unterstützung beim Sommerlager-Aufbau? Oder der entsprechende Kantonalverband ist auf der Suche nach Leuten, die beim kantonalen Geländespiel die Verpflegung organisieren? Es wäre doch toll, wenn du auf diese oder andere Arten noch mit Jungwacht Blauring in Verbindung bleiben könntest. Darum kannst du in deinem Profil auf der jubla.db bestimmen, welche Ebene dich in Zukunft kontaktieren und dir Informationen senden darf. Vielen Dank nochmals für dein Engagement – auch über deine aktive Zeit hinaus.

Liebe Grüsse
Jungwacht Blauring Schweiz" - }, - - { + { custom_content_id: CustomContent.where(key: AlumniMailer::NEW_MEMBER_FLOCK).first.id, locale: 'de', label: 'Ehemalige: Benachrichtigung Schar', From d3cbd0f31bc372660536b6eb2d7878012a1181b6 Mon Sep 17 00:00:00 2001 From: Matthias Viehweger Date: Wed, 11 Dec 2024 18:31:22 +0100 Subject: [PATCH 3/3] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index defe916..9fb3f7d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## unreleased * Filter nach für ausgetretene Personen von "Ehemalige" zu "Austritte" umbenannt (hitobito_jubla#159) +* Benachrichtigungen an neue Ehemalige werden nur noch auf Scharebene verschickt. (hitobito_jubla#166) ## Version 2.2