diff --git a/openreview/arr/arr.py b/openreview/arr/arr.py index aec01a931..81854da14 100644 --- a/openreview/arr/arr.py +++ b/openreview/arr/arr.py @@ -735,8 +735,30 @@ def get_submissions(self, venueid=None, accepted=False, sort=None, details=None) def expire_invitation(self, invitation_id): return self.venue.expire_invitation(invitation_id) + def prune_active_arr_venues(self, previous_count=1): + active_venues = self.client.get_group('active_venues') + arr_venues = [] + + for venue_id in active_venues.members or []: + if not venue_id.startswith('aclweb.org/ACL/ARR'): + continue + + venue_group = tools.get_group(self.client, venue_id) + if venue_group is None: + continue + arr_venues.append((venue_group.cdate, venue_id)) + + arr_venues.sort(reverse=True) + + stale_venue_ids = [ + venue_id for _, venue_id in arr_venues if venue_id != self.venue_id + ][previous_count:] + if stale_venue_ids: + self.client.remove_members_from_group(active_venues.id, stale_venue_ids) + def setup(self, program_chair_ids=[], publication_chairs_ids=[]): setup_value = self.venue.setup(program_chair_ids, publication_chairs_ids) + self.prune_active_arr_venues() setup_arr_invitations(self.invitation_builder) diff --git a/tests/test_arr_venue_v2.py b/tests/test_arr_venue_v2.py index 790d96d3a..967c5a3db 100644 --- a/tests/test_arr_venue_v2.py +++ b/tests/test_arr_venue_v2.py @@ -224,6 +224,21 @@ def test_august_cycle(self, client, openreview_client, helpers, test_client, req helpers.await_queue() + stale_arr_venues = [ + 'aclweb.org/ACL/ARR/2022/December', + 'aclweb.org/ACL/ARR/2023/April' + ] + for venue_id in stale_arr_venues: + client.post_group(openreview.Group( + id=venue_id, + readers=['everyone'], + writers=[venue_id], + signatures=['~Super_User1'], + signatories=[venue_id], + members=[] + )) + openreview_client.add_members_to_group('active_venues', venue_id) + # Post a deploy note august_deploy_edit = client.post_note(openreview.Note( content={'venue_id': 'aclweb.org/ACL/ARR/2023/August'}, @@ -238,6 +253,19 @@ def test_august_cycle(self, client, openreview_client, helpers, test_client, req helpers.await_queue_edit(client, invitation='openreview.net/Support/-/Request{}/Deploy'.format(request_form_note.number)) + active_venues = openreview_client.get_group('active_venues') + arr_active_venues = { + venue_id for venue_id in active_venues.members + if venue_id.startswith('aclweb.org/ACL/ARR') + } + assert arr_active_venues == { + 'aclweb.org/ACL/ARR/2023/August', + 'aclweb.org/ACL/ARR/2023/April' + } + assert 'aclweb.org/ACL/ARR/2023/August' in active_venues.members + assert 'aclweb.org/ACL/ARR/2023/April' in active_venues.members + assert 'aclweb.org/ACL/ARR/2022/December' not in active_venues.members + group = openreview_client.get_group('aclweb.org/ACL/ARR/2023/August') assert group assert 'submission_assignment_max_reviewers' not in group.content