Commit f6fea156da90ad25bf34808976b27de37ffe7190:
    services

Branch: refs/heads/master
Author: Sam Ruby <[email protected]>
Committer: Sam Ruby <[email protected]>
Pusher: rubys <[email protected]>

------------------------------------------------------------
lib/whimsy/asf/ldap.rb                                       | +++++ --
www/roster/models/committer.rb                               | + -
www/roster/models/group.rb                                   | ++++++++++ 
www/roster/views/group.js.rb                                 | ++++ -
------------------------------------------------------------
24 changes: 20 additions, 4 deletions.
------------------------------------------------------------


diff --git a/lib/whimsy/asf/ldap.rb b/lib/whimsy/asf/ldap.rb
index 7109d17..e565530 100644
--- a/lib/whimsy/asf/ldap.rb
+++ b/lib/whimsy/asf/ldap.rb
@@ -359,9 +359,12 @@ def groups
       Group.list("memberUid=#{name}")
     end
 
+    def services
+      Service.list("member=#{dn}")
+    end
+
     def dn
-      value = attrs['dn']
-      value.first if Array === value
+      "uid=#{name},#{ASF::Person.base}"
     end
 
     def method_missing(name, *args)
diff --git a/www/roster/models/committer.rb b/www/roster/models/committer.rb
index 4570486..a6aaecb 100644
--- a/www/roster/models/committer.rb
+++ b/www/roster/models/committer.rb
@@ -36,7 +36,7 @@ def self.serialize(id, env)
 
     response[:committees] = person.committees.map(&:name)
 
-    response[:groups] = []
+    response[:groups] = person.services
     response[:committer] = []
     committees = ASF::Committee.list.map(&:id)
     person.groups.map(&:name).each do |group|
diff --git a/www/roster/models/group.rb b/www/roster/models/group.rb
index be2139c..2be3980 100644
--- a/www/roster/models/group.rb
+++ b/www/roster/models/group.rb
@@ -2,11 +2,21 @@ class Group
   def self.serialize(id)
     response = {}
 
+    type = 'LDAP group'
     group = ASF::Group.find(id)
+
+    if group.members.empty?
+      type = 'LDAP service'
+      group = ASF::Service.find(id)
+    end
+
+    return if group.members.empty?
+
     people = ASF::Person.preload('cn', group.members)
 
     response = {
       id: id,
+      type: type,
       members: Hash[group.members.map {|person| [person.id, person.cn]}]
     }
 
diff --git a/www/roster/views/group.js.rb b/www/roster/views/group.js.rb
index 575f94f..60ead74 100644
--- a/www/roster/views/group.js.rb
+++ b/www/roster/views/group.js.rb
@@ -8,7 +8,10 @@ def render
     members = group.members.keys().sort_by {|id| group.members[id]}
 
     # header
-    _h1 group.id
+    _h1 do
+      _span group.id
+      _span.note " (#{group.type})"
+    end
 
     # list of members
     _table.table.table_hover do

Reply via email to