def get_review_stage(client, request_forum): review_start_date = request_forum.content.get('review_start_date', '').strip() if review_start_date: try: review_start_date = datetime.datetime.strptime( review_start_date, '%Y/%m/%d %H:%M') except ValueError: review_start_date = datetime.datetime.strptime( review_start_date, '%Y/%m/%d') else: review_start_date = None review_due_date = request_forum.content.get('review_deadline', '').strip() if review_due_date: try: review_due_date = datetime.datetime.strptime( review_due_date, '%Y/%m/%d %H:%M') except ValueError: review_due_date = datetime.datetime.strptime( review_due_date, '%Y/%m/%d') else: review_due_date = None review_form_additional_options = request_forum.content.get( 'additional_review_form_options', {}) review_form_remove_options = request_forum.content.get( 'remove_review_form_options', '') if ',' in review_form_remove_options: review_form_remove_options = [ field.strip() for field in review_form_remove_options.strip().split(',') if field.strip() ] if not isinstance(review_form_remove_options, list): review_form_remove_options = [] return openreview.ReviewStage( start_date=review_start_date, due_date=review_due_date, allow_de_anonymization=(request_forum.content.get( 'Author and Reviewer Anonymity', None) == 'No anonymity'), public=(request_forum.content.get( 'Open Reviewing Policy', None) == 'Submissions and reviews should both be public.'), release_to_authors=(request_forum.content.get( 'release_reviews_to_authors', '').startswith('Yes')), release_to_reviewers=(request_forum.content.get( 'release_reviews_to_reviewers' '').startswith('Yes')), email_pcs=(request_forum.content.get( 'email_program_Chairs_about_reviews', '').startswith('Yes')), additional_fields=review_form_additional_options, remove_fields=review_form_remove_options)
def test_set_authors(self, client, conference, test_client, selenium, request_page, helpers): now = datetime.datetime.utcnow() conference.set_review_stage(openreview.ReviewStage(due_date = now + datetime.timedelta(minutes = 10), release_to_authors= True, release_to_reviewers=openreview.ReviewStage.Readers.REVIEWERS_ASSIGNED)) group = client.get_group(id = conference.get_authors_id()) assert group assert len(group.members) == 3 groups = client.get_groups(id = conference.get_authors_id(number = '.*')) assert len(groups) == 3 for group in groups: assert group.members group = client.get_group(id = conference.get_authors_id()) assert group assert len(group.members) == 3 group = client.get_group(id = conference.get_authors_id()) assert group assert len(group.members) == 3
use_affinity_score=True)) ## Stage: paper matching conference.setup_matching( affinity_score_file='path-to-re-created-scores-reviewers.csv') conference.setup_matching( is_area_chair=True, affinity_score_file='path-to-re-created-scores-ac.csv') conference.set_assignments('reviewers-bids-elmo-final') conference.set_assignments('areachairs-bids-elmo', is_area_chair=True) ## Stage: reviews - Enable review invitations review_stage = openreview.ReviewStage( due_date=datetime.datetime(2019, 11, 2, 14, 59), additional_fields=additional_review_fields, remove_fields=remove_review_fields, public=True) conference.set_review_stage(review_stage) blind_notes = conference.get_submissions() official_reviews = openreview.tools.iterget_notes( client, invitation=conference.id + '/Paper[0-9]+/-/Official_Review$') map_paper_to_review = {} for review in official_reviews: paper_number = review.invitation.split('Paper')[1].split('/')[0] if paper_number not in map_paper_to_review: map_paper_to_review[paper_number] = [] map_paper_to_review[paper_number].append(review) ## Stage: reviews - Reveal reviews and update tags for the desk-reject question
def test_redeploy_assigments(self, conference, client, test_client, helpers): pc_client = openreview.Client(username='******', password='******') blinded_notes = list(conference.get_submissions()) #Reviewer assignments pc_client.post_edge( openreview.Edge(invitation=conference.get_paper_assignment_id( conference.get_reviewers_id()), readers=[conference.id, '*****@*****.**'], writers=[conference.id], signatures=[conference.id], head=blinded_notes[0].id, tail='*****@*****.**', label='rev-matching-new', weight=0.98)) pc_client.post_edge( openreview.Edge(invitation=conference.get_paper_assignment_id( conference.get_reviewers_id()), readers=[conference.id, '*****@*****.**'], writers=[conference.id], signatures=[conference.id], head=blinded_notes[1].id, tail='*****@*****.**', label='rev-matching-new', weight=0.98)) pc_client.post_edge( openreview.Edge(invitation=conference.get_paper_assignment_id( conference.get_reviewers_id()), readers=[conference.id, '*****@*****.**'], writers=[conference.id], signatures=[conference.id], head=blinded_notes[2].id, tail='*****@*****.**', label='rev-matching-new', weight=0.98)) edges = client.get_edges( invitation= 'auai.org/UAI/2019/Conference/Program_Committee/-/Paper_Assignment', label='rev-matching-new') assert 3 == len(edges) conference.set_assignments(assignment_title='rev-matching-new', overwrite=True) revs_paper0 = client.get_group(conference.get_id() + '/Paper{x}/Reviewers'.format( x=blinded_notes[0].number)) assert ['*****@*****.**'] == revs_paper0.members revs_paper1 = client.get_group(conference.get_id() + '/Paper{x}/Reviewers'.format( x=blinded_notes[1].number)) assert ['~Reviewer_One1'] == revs_paper1.members revs_paper2 = client.get_group(conference.get_id() + '/Paper{x}/Reviewers'.format( x=blinded_notes[2].number)) assert ['*****@*****.**'] == revs_paper2.members now = datetime.datetime.now() conference.set_review_stage(openreview.ReviewStage(start_date=now)) invitation = client.get_invitation( id='auai.org/UAI/2019/Conference/-/Official_Review') assert invitation with pytest.raises(openreview.OpenReviewException, match=r'Review stage has started.'): conference.set_assignments(assignment_title='rev-matching-new2', overwrite=True)
def get_review_stage(client, request_forum): review_start_date = request_forum.content.get('review_start_date', '').strip() if review_start_date: try: review_start_date = datetime.datetime.strptime( review_start_date, '%Y/%m/%d %H:%M') except ValueError: review_start_date = datetime.datetime.strptime( review_start_date, '%Y/%m/%d') else: review_start_date = None review_due_date = request_forum.content.get('review_deadline', '').strip() if review_due_date: try: review_due_date = datetime.datetime.strptime( review_due_date, '%Y/%m/%d %H:%M') except ValueError: review_due_date = datetime.datetime.strptime( review_due_date, '%Y/%m/%d') else: review_due_date = None review_form_additional_options = request_forum.content.get( 'additional_review_form_options', {}) review_form_remove_options = request_forum.content.get( 'remove_review_form_options', '').replace(',', ' ').split() readers_map = { 'Reviews should be immediately revealed to all reviewers': openreview.ReviewStage.Readers.REVIEWERS, 'Reviews should be immediately revealed to the paper\'s reviewers': openreview.ReviewStage.Readers.REVIEWERS_ASSIGNED, 'Reviews should be immediately revealed to the paper\'s reviewers who have already submitted their review': openreview.ReviewStage.Readers.REVIEWERS_SUBMITTED, 'Review should not be revealed to any reviewer, except to the author of the review': openreview.ReviewStage.Readers.REVIEWER_SIGNATURE } reviewer_readers = request_forum.content.get( 'release_reviews_to_reviewers', '') #Deprecated if reviewer_readers.startswith('Yes'): release_to_reviewers = openreview.ReviewStage.Readers.REVIEWERS_ASSIGNED else: release_to_reviewers = readers_map.get( reviewer_readers, openreview.ReviewStage.Readers.REVIEWER_SIGNATURE) return openreview.ReviewStage( start_date=review_start_date, due_date=review_due_date, allow_de_anonymization=(request_forum.content.get( 'Author and Reviewer Anonymity', None) == 'No anonymity'), public=(request_forum.content.get( 'make_reviews_public', None ) == 'Yes, reviews should be revealed publicly when they are posted'), release_to_authors=(request_forum.content.get( 'release_reviews_to_authors', '').startswith('Yes')), release_to_reviewers=release_to_reviewers, email_pcs=(request_forum.content.get( 'email_program_chairs_about_reviews', '').startswith('Yes')), additional_fields=review_form_additional_options, remove_fields=review_form_remove_options)