Skip to content

Commit 2f4ac40

Browse files
committed
action: Filter out reviewers and teams that have already reviewed
To prevent excessive notifications, filter out individual reviewers or teams that have already provided a review, since those have already been notified. Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
1 parent e00a792 commit 2f4ac40

1 file changed

Lines changed: 24 additions & 2 deletions

File tree

action.py

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,24 @@ def split_users_and_teams(owners):
4545
reviewers.append(owner)
4646
return reviewers, team_reviewers
4747

48+
def filter_reviewers(pr, reviewers, team_reviewers):
49+
# Get a list of all reviews and accumulate to get the last review state
50+
reviews = dict()
51+
for review in pr.get_reviews():
52+
reviews[review.user.login] = review.state
53+
54+
r = [r for r in reviewers if r not in reviews]
55+
t = []
56+
for team in team_reviewers:
57+
team = org.get_team_by_slug(team)
58+
for m in team.get_members():
59+
if m.login in reviews:
60+
break
61+
else:
62+
t.append(team)
63+
64+
return r, t
65+
4866
def main():
4967
github_token = os.getenv("GITHUB_TOKEN")
5068

@@ -88,10 +106,14 @@ def main():
88106
return
89107

90108
reviewers, team_reviewers = split_users_and_teams(all_owners)
91-
print(f"Requesting individual reviewers: {', '.join(reviewers) or 'None'}")
92-
print(f"Requesting team reviewers: {', '.join(team_reviewers) or 'None'}")
109+
print(f"Matched individual reviewers: {', '.join(reviewers) or 'None'}")
110+
print(f"Matched team reviewers: {', '.join(team_reviewers) or 'None'}")
111+
reviewers, team_reviewers = filter_reviewers(pr, reviewers, team_reviewers)
112+
print(f"Filtered individual reviewers: {', '.join(reviewers) or 'None'}")
113+
print(f"Filtered team reviewers: {', '.join(team_reviewers) or 'None'}")
93114

94115
try:
116+
# Check for review status
95117
pr.create_review_request(reviewers=reviewers, team_reviewers=team_reviewers)
96118
print("Review request created successfully.")
97119
except Exception as e:

0 commit comments

Comments
 (0)