Exemple #1
0
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
Exemple #3
0
                            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
Exemple #4
0
    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)
Exemple #5
0
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)