blob: 6dbcfa6439eba6cdee72e27fbb4d428ba354eec6 [file] [log] [blame]
#!/usr/bin/env ruby
require 'wunderbar'
require 'whimsy/asf'
require 'yaml'
require 'date'
user = ASF::Person.new($USER)
unless user.asf_member? or ASF.pmc_chairs.include? user or $USER=='ea'
print "Status: 401 Unauthorized\r\n"
print "WWW-Authenticate: Basic realm=\"ASF Members and Officers\"\r\n\r\n"
exit
end
level= nil
case ENV['PATH_INFO']
when '/'
show = "ALL"
title = "All Prospect Actions"
when "/today"
show = "ACTIVE"
title = "Prospect Actions due by Today"
when "/this-week"
show = "THISWEEK"
title = "This week's Prospect Actions"
else
show = "ALL"
title = "All Prospect Actions"
end
_html do
_head_ do
_title title
_style %{
th {border-bottom: solid black}
table {border-spacing: 1em 0.2em }
th span {float: right}
th span:after {padding-left: 0.5em; content: "\u2195"}
tr:hover {background-color: #FF8}
.headerSortUp span:after {content: " \u2198"}
.headerSortDown span:after {content: " \u2197"}
.remind {color: red}
}
_script src: '/jquery.min.js'
_script src: '/jquery.tablesorter.js'
end
_body? do
# common banner
_a href: 'https://whimsy.apache.org/' do
_img alt: "ASF Logo", src: "https://id.apache.org/img/asf_logo_wide.png"
end
_h1_ title
# parse prospect records
prospect_repo = 'private/foundation/Fundraising/prospects'
sponsorship_repo = 'private/foundation/Fundraising/sponsorship'
prospects = Dir["#{ASF::SVN[prospect_repo]}/*.yml"].map do |name|
file = File.read(name.untaint)
file.gsub! /:\s*\?\s*\n/, ": '?'\n" # make parseable
data = YAML.load(file)
next if String === data
basename = File.basename(name.untaint)
sponsor_file_path = "#{ASF::SVN[sponsorship_repo]}/#{basename}"
if File.exists?(sponsor_file_path)
sponsor_data = YAML.load(File.read(sponsor_file_path))
else
sponsor_data = {"name"=>basename}
end
[basename, data, sponsor_data]
end
_p do
_a "all", href: "all"
_ "|"
_a "due by today", href: "today"
_ "|"
_a "this week", href: "this-week"
end
_table_ do
_thead_ do
_tr do
_th 'By'
_th 'Date'
_th 'Prospect'
_th 'Comment'
end
end
_tbody do
count=0
prospects.compact.each do |file, data, sponsor|
actions = data['action']
if actions
actions.each do |action|
date = Date.parse(action['by-date'])
today = Date.today()
endofweek = (today + (5- today.cwday) %7)
next if show == "TODAY" and date > today
next if show == "THISWEEK" and date > endofweek
_tr_ do
_td action['by']
if date < today
_td.remind action['by-date']
else
_td action['by-date']
end
_td! do
_div sponsor
_a "#{sponsor['name']}", href: "https://svn.apache.org/repos/#{prospect_repo}/#{file}"
end
_td action['comment']
end
count=count+1
end
end
end
end
end
_script %{
$("table").tablesorter({sortList: [[0,1]]});
$('th').append('<span></span>');
}
end
end