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 104f5f99 Redesign get_invite_times
104f5f99 is described below
commit 104f5f99bc991872a0f809c2eac04db4745ff394
Author: Sebb <[email protected]>
AuthorDate: Sat Mar 16 17:21:37 2024 +0000
Redesign get_invite_times
- also return meeting end
- return a hash, rather than an anonymous array
---
lib/whimsy/asf/meeting-util.rb | 41 +++++++++++++++++++++++++++++++++-----
www/members/board-nominate.cgi | 2 +-
www/members/board-nominations.cgi | 2 +-
www/members/member_nominations.cgi | 2 +-
www/members/nominations.cgi | 2 +-
5 files changed, 40 insertions(+), 9 deletions(-)
diff --git a/lib/whimsy/asf/meeting-util.rb b/lib/whimsy/asf/meeting-util.rb
index d6810190..84a86934 100644
--- a/lib/whimsy/asf/meeting-util.rb
+++ b/lib/whimsy/asf/meeting-util.rb
@@ -376,12 +376,12 @@ module ASF
end
# get the times from the VCAL events file
- # returns: nominations close, polls close, meeting starts as seconds since
epoch
+ # returns: hash with keys: nominations_close:, polls_close:,
meeting_start, meeting_close:
def self.get_invite_times
times = {}
File.readlines(File.join(latest_meeting_dir,
VCAL_EVENTS_FILENAME)).slice_before(/^BEGIN:VEVENT/).drop(1).each do |ev|
uid = nil
- dtstart = nil
+ dtstart = dtend = nil
ev.each do |line|
case line
when /^UID:(.+)/
@@ -393,19 +393,50 @@ module ASF
else
raise ArgumentError.new("Cannot parse #{line.chomp} in
#{VCAL_EVENTS_FILENAME}")
end
+ when /^DTEND;TZID=(.+):(.+)/
+ tz = $1
+ if tz == 'UTC'
+ dtend = DateTime.iso8601($2.chomp).to_time.to_i
+ else
+ raise ArgumentError.new("Cannot parse #{line.chomp} in
#{VCAL_EVENTS_FILENAME}")
+ end
end
end
times[uid] = dtstart
+ times['asf-members-end'] = dtend if uid == 'asf-members'
end
- return [times['asf-members-nominations-close'],
times['asf-members-polls-close'], times['asf-members']]
+ return {
+ nominations_close: times['asf-members-nominations-close'],
+ polls_close: times['asf-members-polls-close'],
+ meeting_start: times['asf-members'],
+ meeting_end: times['asf-members-end'],
+ }
+ end
+
+ # Shorthand methods for callers
+ def self.nominations_close
+ self.get_invite_times[:nominations_close]
+ end
+
+ def self.polls_close
+ self.get_invite_times[:polls_close]
+ end
+
+ def self.meeting_start
+ self.get_invite_times[:meeting_start]
+ end
+
+ def self.meeting_end
+ self.get_invite_times[:meeting_end]
end
# How long remains before applications close?
+ # (Time is measured from scheduled end of the meeting in which the votes
were declared)
# Returned as hash, e.g. {:hoursremain=>605, :days=>25, :hours=>5}
def self.application_time_remaining
- _, _, meeting = self.get_invite_times # this is in seconds
+ meetingend = self.meeting_end # this is in seconds
now = DateTime.now.to_time.to_i
- remain = (meeting + APPLICATION_EXPIRY_POST_VOTE_SECS - now) / 3600
+ remain = (meetingend + APPLICATION_EXPIRY_POST_VOTE_SECS - now) / 3600
{hoursremain: remain, days: remain/24, hours: remain%24}
end
diff --git a/www/members/board-nominate.cgi b/www/members/board-nominate.cgi
index dcfb4d22..2da953f8 100755
--- a/www/members/board-nominate.cgi
+++ b/www/members/board-nominate.cgi
@@ -13,7 +13,7 @@ require 'whimsy/asf/meeting-util'
require 'whimsy/asf/time-utils'
t_now = Time.now.to_i
-t_end = ASF::MeetingUtil.get_invite_times.first
+t_end = ASF::MeetingUtil.nominations_close
nomclosed = t_now > t_end
def emit_form(title, prev_data)
diff --git a/www/members/board-nominations.cgi
b/www/members/board-nominations.cgi
index 9db4b23a..b9a3d2b1 100755
--- a/www/members/board-nominations.cgi
+++ b/www/members/board-nominations.cgi
@@ -12,7 +12,7 @@ require_relative '../../tools/parsemail'
require 'whimsy/asf/time-utils'
t_now = Time.now.to_i
-t_end = ASF::MeetingUtil.get_invite_times.first
+t_end = ASF::MeetingUtil.nominations_close
# link to members private-arch
diff --git a/www/members/member_nominations.cgi
b/www/members/member_nominations.cgi
index 71087e9a..7054ce97 100755
--- a/www/members/member_nominations.cgi
+++ b/www/members/member_nominations.cgi
@@ -13,7 +13,7 @@ require 'whimsy/asf/meeting-util'
require 'whimsy/asf/time-utils'
t_now = Time.now.to_i
-t_end = ASF::MeetingUtil.get_invite_times.first
+t_end = ASF::MeetingUtil.nominations_close
nomclosed = t_now > t_end
def emit_form(title, prev_data)
diff --git a/www/members/nominations.cgi b/www/members/nominations.cgi
index 735d426a..e333286e 100755
--- a/www/members/nominations.cgi
+++ b/www/members/nominations.cgi
@@ -12,7 +12,7 @@ require_relative '../../tools/parsemail'
require 'whimsy/asf/time-utils'
t_now = Time.now.to_i
-t_end = ASF::MeetingUtil.get_invite_times.first
+t_end = ASF::MeetingUtil.nominations_close
# link to members private-arch
MBOX = 'https://mail-search.apache.org/members/private-arch/members/'