This is an automated email from the ASF dual-hosted git repository.

sebb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/whimsy.git


The following commit(s) were added to refs/heads/master by this push:
     new 44cf0d7c Add initial reminder support
44cf0d7c is described below

commit 44cf0d7c671648c3a00e816f74b85329c920a8a5
Author: Sebb <[email protected]>
AuthorDate: Sat Jan 6 17:49:43 2024 +0000

    Add initial reminder support
---
 www/board/agenda/routes.rb                         | 28 ++++++++++++++++++++++
 .../agenda/views/actions/send-reminders.json.rb    | 26 ++++++++++++++++++++
 2 files changed, 54 insertions(+)

diff --git a/www/board/agenda/routes.rb b/www/board/agenda/routes.rb
index 77cf0081..532e99e9 100755
--- a/www/board/agenda/routes.rb
+++ b/www/board/agenda/routes.rb
@@ -617,5 +617,33 @@ post %r{/(\d\d\d\d-\d\d-\d\d)/} do |date|
     Agenda.update_cache agenda, agendapath, contents, false
   end
 
+  auto_remind(date, agenda)
+
   redirect to("/#{date}/")
 end
+
+get %r{/testautoremind/(\d\d\d\d-\d\d-\d\d)/} do |date|
+    agenda = "board_agenda_#{date.gsub('-', '_')}.txt"
+    @dryrun = !Status.testnode? # For debug only!
+    _json auto_remind(date, agenda)
+end
+
+# Code to send initial reminders
+def auto_remind(date, agenda)
+  # draft reminder text
+  @reminder = 'reminder1' # reminder template
+  @tzlink = 
ASF::Board.tzlink(ASF::Board::TIMEZONE.utc_to_local(ASF::Board.nextMeeting))
+  reminder = eval(File.read("views/actions/reminder-text.json.rb"))
+
+  # extract data
+  @subject = reminder[:subject]
+  @message = reminder[:body]
+
+  # send reminders and summary
+  @summary = 'reminder-summary' # template name
+  @sendsummary = true
+  @agenda = agenda
+  @meeting = date
+  @from = '"Board Chair" <[email protected]>'
+  eval(File.read("views/actions/send-reminders.json.rb"))
+end
diff --git a/www/board/agenda/views/actions/send-reminders.json.rb 
b/www/board/agenda/views/actions/send-reminders.json.rb
index 9910c4a1..e3bf58ff 100644
--- a/www/board/agenda/views/actions/send-reminders.json.rb
+++ b/www/board/agenda/views/actions/send-reminders.json.rb
@@ -6,6 +6,7 @@ ASF::Mail.configure
 
 sent = {}
 unsent = []
+sent_emails = [] if @sendsummary # initial automated reminder
 
 # extract values for common fields
 from = @from
@@ -73,9 +74,34 @@ Agenda.parse(@agenda, :full).each do |item|
 
   # deliver mail
   mail.deliver! unless @dryrun
+
+  if @sendsummary # initial automated reminder
+    # Mustache is not able to iterate over a hash
+    sent_emails << {name: item['title'], emails: [mail.to, 
mail.cc].flatten.join(',')}
+  end
   sent[item['title']] = mail.to_s
 end
 
 # provide a response to the request
 unsent += @pmcs - sent.keys if @pmcs
+if @sendsummary # initial automated reminder
+  view = {
+    meeting: @meeting,
+    agenda: @agenda,
+    unsent: unsent,
+    sent_emails: sent_emails,
+  }
+  render = AgendaTemplate.render(@summary, view)
+  subject = render[:subject]
+  body = render[:body]
+  mail = Mail.new do
+    from from
+    to from
+    subject subject
+    body body
+  end
+  mail.deliver! unless @dryrun
+  sent[:summary] = mail.to_s
+end
+
 {count: sent.length, unsent: unsent, sent: sent, dryrun: @dryrun}

Reply via email to