blob: 6516fe3a42401c058fc5a0d9b127f62890182aac [file] [log] [blame]
#!/usr/bin/env ruby
PAGETITLE = "Crosscheck Members Names With ICLAs" # Wvisible:members
$LOAD_PATH.unshift '/srv/whimsy/lib'
require 'whimsy/asf'
require 'wunderbar/bootstrap'
require 'wunderbar/jquery/stupidtable'
_html do
_body? do
_whimsy_body(
title: PAGETITLE,
related: {
'/roster/members' => 'Listing Of All Members',
'https://svn.apache.org/repos/private/foundation/officers/iclas.txt' => 'ICLA.txt Listing',
},
helpblock: -> {
_p_ do
_ 'Cross-check of members.txt vs iclas.txt.'
_br
_span.text_danger 'REMINDER: members.txt and Legal names below are NOT public data - keep this page confidential!'
end
}
) do
ASF::ICLA.preload
ldap_members = ASF::Member.list.map {|id, info| ASF::Person.find(id)}
ASF::Person.preload('cn', ldap_members)
_table.table.table_hover do
_thead do
_tr do
_th 'availid', data_sort: 'string'
_th data_sort: 'string' do
_span.text_danger 'Name from members.txt'
end
_th 'Public name', data_sort: 'string'
_th data_sort: 'string', data_sort_default: 'desc' do
_span.text_danger 'Legal name (if different)'
end
end
end
ASF::Member.list.sort.each do |id, info|
person = ASF::Person.find(id)
if person.icla
next if person.icla.name == info[:name]
next if person.icla.legal_name == info[:name]
_tr_ do
_td id
_td info[:name]
_td person.icla.name
if person.icla.name != person.icla.legal_name
_td person.icla.legal_name
else
_td
end
end
elsif ldap_members.include? person
_tr_ do
_td id
_td info[:name]
_td.bg_danger 'ICLA not on file', colspan: 2, data_sort_value: ''
end
end
end
end
_script %{
var table = $(".table").stupidtable();
table.on("aftertablesort", function (event, data) {
var th = $(this).find("th");
th.find(".arrow").remove();
var dir = $.fn.stupidtable.dir;
var arrow = data.direction === dir.ASC ? "↑" : "↓";
th.eq(data.column).append('<span class="arrow">' + arrow +'</span>');
});
}
end
end
end