You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@whimsical.apache.org by Sam Ruby <ru...@apache.org> on 2016/02/27 19:13:05 UTC
[whimsy.git] [2/2] Commit a3d3e92: rough in ldap groups
Commit a3d3e92a8eb6093d59805a04b5050d397a7b5ee9:
rough in ldap groups
Branch: refs/heads/master
Author: Sam Ruby <ru...@intertwingly.net>
Committer: Sam Ruby <ru...@intertwingly.net>
Pusher: rubys <ru...@apache.org>
------------------------------------------------------------
www/roster/main.rb | ++++++++++
www/roster/models.rb | +
www/roster/models/group.rb | +++++++++++++++
www/roster/views/app.js.rb | ++
www/roster/views/committer.js.rb | +++++++ ------
www/roster/views/group.html.rb | +++++++++++
www/roster/views/group.js.rb | ++++++++
------------------------------------------------------------
176 changes: 133 additions, 43 deletions.
------------------------------------------------------------
diff --git a/www/roster/main.rb b/www/roster/main.rb
index f3b4f4c..0ca4b0d 100755
--- a/www/roster/main.rb
+++ b/www/roster/main.rb
@@ -76,6 +76,16 @@
_html :committer
end
+get '/group/:name.json' do |name|
+ _json Group.serialize(name)
+end
+
+get '/group/:name' do |name|
+ @group = Group.serialize(name)
+ pass unless @group
+ _html :group
+end
+
# member list
get '/members' do
_html :members
diff --git a/www/roster/models.rb b/www/roster/models.rb
index 3cf0d4f..0cf8bb1 100644
--- a/www/roster/models.rb
+++ b/www/roster/models.rb
@@ -2,3 +2,4 @@
require_relative 'models/auth'
require_relative 'models/committer'
require_relative 'models/committee'
+require_relative 'models/group'
diff --git a/www/roster/models/group.rb b/www/roster/models/group.rb
new file mode 100644
index 0000000..be2139c
--- /dev/null
+++ b/www/roster/models/group.rb
@@ -0,0 +1,15 @@
+class Group
+ def self.serialize(id)
+ response = {}
+
+ group = ASF::Group.find(id)
+ people = ASF::Person.preload('cn', group.members)
+
+ response = {
+ id: id,
+ members: Hash[group.members.map {|person| [person.id, person.cn]}]
+ }
+
+ response
+ end
+end
diff --git a/www/roster/views/app.js.rb b/www/roster/views/app.js.rb
index 7cfc5f9..67d716e 100644
--- a/www/roster/views/app.js.rb
+++ b/www/roster/views/app.js.rb
@@ -7,3 +7,5 @@
require_relative 'committer'
require_relative 'committerSearch'
+
+require_relative 'group'
diff --git a/www/roster/views/committer.js.rb b/www/roster/views/committer.js.rb
index 84aac3b..bf509c0 100644
--- a/www/roster/views/committer.js.rb
+++ b/www/roster/views/committer.js.rb
@@ -1,96 +1,104 @@
class Committer < React
def render
- _h2 "#{@@committer.id}@apache.org"
+ committer = @@committer
+
+ _h2 "#{committer.id}@apache.org"
_table.wide do
_tr do
_td 'Name'
_td do
- name = @@committer.name
+ name = committer.name
if name.public_name==name.legal_name and name.public_name==name.ldap
- _span @@committer.name.public_name
+ _span committer.name.public_name
else
_ul do
- _li "#{@@committer.name.public_name} (public name)"
+ _li "#{committer.name.public_name} (public name)"
if name.legal_name and name.legal_name != name.public_name
- _li "#{@@committer.name.legal_name} (legal name)"
+ _li "#{committer.name.legal_name} (legal name)"
end
if name.ldap and name.ldap != name.public_name
- _li "#{@@committer.name.ldap} (ldap)"
+ _li "#{committer.name.ldap} (ldap)"
end
end
end
end
end
- if @@committer.urls
+ if committer.urls
_tr do
_td 'Personal URL'
_td do
- _ul @@committer.urls do |url|
+ _ul committer.urls do |url|
_a url, href: url
end
end
end
end
- unless @@committer.committees.empty?
- _tr do
- _td 'Committees'
- _td do
- _ul @@committer.committees do |pmc|
- _li {_a pmc, href: "committee/#{pmc}"}
- end
- end
- end
+ unless committer.committees.empty?
+ _tr do
+ _td 'Committees'
+ _td do
+ _ul committer.committees do |pmc|
+ _li {_a pmc, href: "committee/#{pmc}"}
+ end
+ end
+ end
end
- unless @@committer.committer.empty?
- _tr do
- _td 'Committer'
- _td do
- _ul @@committer.committer do |pmc|
- _li {_a pmc, href: "committee/#{pmc}"}
- end
- end
- end
+ unless committer.committer.all? {|pmc| committer.committees.include? pmc}
+ _tr do
+ _td 'Committer'
+ _td do
+ _ul committer.committer do |pmc|
+ next if committer.committees.include? pmc
+ _li {_a pmc, href: "committee/#{pmc}"}
+ end
+ end
+ end
end
- if false # not ready yet
- _tr do
- _td 'Groups'
- _td do
- _ul @@committer.groups do |pmc|
- next if @@committer.committees.include? pmc
- _li {_a pmc, href: "committee/#{pmc}"}
- end
- end
- end
+ unless committer.groups.empty?
+ _tr do
+ _td 'Groups'
+ _td do
+ _ul committer.groups do |group|
+ if group == 'committers'
+ _li {_a group, href: "committer/"}
+ elsif group == 'member'
+ _li {_a group, href: "members"}
+ else
+ _li {_a group, href: "group/#{group}"}
+ end
+ end
+ end
+ end
end
- if @@committer.member
- if @@committer.member.status
+ if committer.member
+ if committer.member.status
_tr do
_td 'Member status'
- _td @@committer.member.status
+ _td committer.member.status
end
end
- if @@committer.member.info
+ if committer.member.info
_tr do
_td 'Members.txt'
- _td {_pre @@committer.member.info}
+ _td {_pre committer.member.info}
end
end
- if @@committer.member.nomination
+ if committer.member.nomination
_tr do
_td 'nomination'
- _td {_pre @@committer.member.nomination}
+ _td {_pre committer.member.nomination}
end
end
end
diff --git a/www/roster/views/group.html.rb b/www/roster/views/group.html.rb
new file mode 100644
index 0000000..79146ff
--- /dev/null
+++ b/www/roster/views/group.html.rb
@@ -0,0 +1,22 @@
+#
+# A single group
+#
+
+_html do
+ _base href: '..'
+ _title @group[:id]
+ _link rel: 'stylesheet', href: 'stylesheets/app.css'
+
+ _banner breadcrumbs: {
+ roster: '.',
+ group: 'group/',
+ @group[:id] => "group/#{@group[:id]}"
+ }
+
+ _div_.main!
+
+ _script src: 'app.js'
+ _.render '#main' do
+ _Group group: @group
+ end
+end
diff --git a/www/roster/views/group.js.rb b/www/roster/views/group.js.rb
new file mode 100644
index 0000000..575f94f
--- /dev/null
+++ b/www/roster/views/group.js.rb
@@ -0,0 +1,32 @@
+#
+# Show a committee
+#
+
+class Group < React
+ def render
+ group = @@group
+ members = group.members.keys().sort_by {|id| group.members[id]}
+
+ # header
+ _h1 group.id
+
+ # list of members
+ _table.table.table_hover do
+ _thead do
+ _tr do
+ _th 'id'
+ _th 'public name'
+ end
+ end
+
+ _tbody do
+ members.each do |id|
+ _tr do
+ _td {_a id, href: "committer/#{id}"}
+ _td group.members[id]
+ end
+ end
+ end
+ end
+ end
+end