Skip to content

Commit c66ec18

Browse files
Martin-Louis Brightlarsxschneider
Martin-Louis Bright
authored andcommitted
Add page to list organization owners
1 parent 061e6f1 commit c66ec18

File tree

6 files changed

+85
-13
lines changed

6 files changed

+85
-13
lines changed

docs/_data/navigation.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
url: "/repos-activity"
2424
- title: "Total"
2525
url: "/repos-total"
26+
- title: "Organizations"
27+
url: "/org-owners"
2628
- title: "Housekeeping"
2729
url: "/housekeeping-git-traffic"
2830
subnavigation:

docs/assets/js/charts.js

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -362,20 +362,30 @@ function createTable(table)
362362
.enter()
363363
.append("td")
364364
.each(function(d, i) {
365-
var cell = d3.select(this);
366-
switch (data.columns[i].toLowerCase()) {
367-
case "user":
368-
case "organization":
369-
case "repository":
370-
case "resource":
371-
case "fork":
372-
cell = cell
373-
.append("a")
374-
.attr("target", "_blank")
375-
.attr("href", gheUrl() + "/" + d);
376-
break;
365+
const cell = d3.select(this);
366+
const entries = d.split(/[\s,]+/);
367+
const column = data.columns[i].toLowerCase();
368+
369+
for (let j = 0; j < entries.length; j++) {
370+
if (j > 0)
371+
cell.append().text(", ")
372+
const entry = entries[j];
373+
switch (column) {
374+
case "fork":
375+
case "organization":
376+
case "owner(s)":
377+
case "repository":
378+
case "resource":
379+
case "user":
380+
cell.append("a")
381+
.attr("target", "_blank")
382+
.attr("href", gheUrl() + "/" + entry)
383+
.text(entry);
384+
break;
385+
default:
386+
cell.append().text(entry);
387+
}
377388
}
378-
cell.text(function(d) { return d; })
379389
});
380390
});
381391
}

docs/demo-data/org-owners.tsv

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
organization owner(s)
2+
Alpha user39, user72, user81, user20
3+
Bravo user50, user39
4+
Charlie user80
5+
Delta user78, user59, user86
6+
Echo user70
7+
Foxtrot user24, user87
8+
Golf user36, user90, user27, user40, user67
9+
Hotel user67, user90
10+
India user65

docs/org-owners.html

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
---
2+
layout: default
3+
title: Organization Owners
4+
permalink: /org-owners
5+
---
6+
<h3>
7+
Organization Owners
8+
</h3>
9+
10+
<div class="row">
11+
<div class="col-main">
12+
<div class="chart-container">
13+
<table class="table" data-url="{{ site.dataURL }}/org-owners.tsv"></table>
14+
</div>
15+
</div>
16+
<div class="col-aside">
17+
<div class="info-box">
18+
<p>Owners for each GitHub organization.</p>
19+
</div>
20+
</div>
21+
</div>

updater/reports/ReportOrgOwners.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from .Report import *
2+
3+
# Lists all orgs and their owners without site admins or suspended users
4+
class ReportOrgOwners(Report):
5+
def name(self):
6+
return "org-owners"
7+
8+
# The data is overwritten every day, so skip reading the old data
9+
def readData(self):
10+
pass
11+
12+
def updateData(self):
13+
self.header, self.data = self.parseData(
14+
self.executeGHEConsole('''
15+
puts "organization\towner(s)\n"
16+
User.where(:type => "Organization")
17+
.where("''' + self.andExcludedEntities("login", "").replace('"', '\\\\"') + '''")
18+
.order("login")
19+
.each do |org|
20+
owners = org.admins.where(:disabled => false, :gh_role => nil)
21+
.where("''' + self.andExcludedUsers("login", "").replace('"', '\\\\"') + '''")
22+
.order("login")
23+
.join(",")
24+
puts "#{org.login}\t#{owners}\n"
25+
end
26+
''')
27+
)

updater/update-stats.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from reports.ReportGitRequests import *
1515
from reports.ReportGitVersions import *
1616
from reports.ReportOrgCollaboration import *
17+
from reports.ReportOrgOwners import *
1718
from reports.ReportPRByOrg import *
1819
from reports.ReportPRByRepo import *
1920
from reports.ReportPRHistory import *
@@ -76,6 +77,7 @@ def main():
7677
ReportGitRequests(configuration, dataDirectory, metaStats).update()
7778
ReportGitVersions(configuration, dataDirectory, metaStats).update()
7879
ReportOrgCollaboration(configuration, dataDirectory, metaStats).update()
80+
ReportOrgOwners(configuration, dataDirectory, metaStats).update()
7981
ReportPRByOrg(configuration, dataDirectory, metaStats).update()
8082
ReportPRByRepo(configuration, dataDirectory, metaStats).update()
8183
ReportPRHistory(configuration, dataDirectory, metaStats).update()

0 commit comments

Comments
 (0)