Skip to content

Commit

Permalink
Configuration for new note editor (#1757)
Browse files Browse the repository at this point in the history
* test different widgets

* use items for comment readers selection

* add description to item elements

* add json test

* remove description fix test

* add deletable:true to all the optional fields

* set rating as an integer

* add deletable: true to optional fields

* add json field

* expire invitations after test

* use items instead of regex for signatures setup

* remove regex and use items for all invitations

* change journal invitations

* add deletable: true to most of the optional fields

* fix more tests

* add input to all the enum fields

* fix test

* fix tests

* expire date processes

* remove extra f
  • Loading branch information
melisabok authored Oct 16, 2023
1 parent ce61d1a commit c3b33c8
Show file tree
Hide file tree
Showing 14 changed files with 888 additions and 252 deletions.
8 changes: 4 additions & 4 deletions openreview/conference/invitation.py
Original file line number Diff line number Diff line change
Expand Up @@ -870,7 +870,7 @@ def __init__(self, conference, note):
]
},
'signatures': {
'values-regex': comment_stage.get_signatures_regex(conference, note.number),
'values-regex': '|'.join(comment_stage.get_signatures(conference, note.number)),
'description': 'How your identity will be displayed.'
}
}
Expand Down Expand Up @@ -931,7 +931,7 @@ class PaperReviewInvitation(openreview.Invitation):
def __init__(self, conference, note):

review_stage = conference.review_stage
signature_regex = review_stage.get_signatures(conference, note.number)
signature_regex = '|'.join(review_stage.get_signatures(conference, note.number))
readers = review_stage.get_readers(conference, note.number)
nonreaders = review_stage.get_nonreaders(conference, note.number)

Expand Down Expand Up @@ -1013,7 +1013,7 @@ class PaperEthicsReviewInvitation(openreview.Invitation):
def __init__(self, conference, note):

ethics_review_stage = conference.ethics_review_stage
signature_regex = ethics_review_stage.get_signatures(conference, note.number)
signature_regex = '|'.join(ethics_review_stage.get_signatures(conference, note.number))
readers = ethics_review_stage.get_readers(conference, note.number)
nonreaders = ethics_review_stage.get_nonreaders(conference, note.number)

Expand Down Expand Up @@ -1370,7 +1370,7 @@ def __init__(self, conference, note):
'description': 'Who can edit this meta-review.'
},
'signatures': {
'values-regex': meta_review_stage.get_signatures_regex(conference, note.number),
'values-regex': '|'.join(meta_review_stage.get_signatures(conference, note.number)),
'description': 'How your identity will be displayed.'
}
}
Expand Down
196 changes: 158 additions & 38 deletions openreview/journal/invitation.py

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions openreview/journal/journal.py
Original file line number Diff line number Diff line change
Expand Up @@ -979,6 +979,7 @@ def update_solicit_review(self, note_number, invitation):
"maxLength": 200000,
"input": "textarea",
"optional": True,
'deletable': True,
"markdown": True
}

Expand Down
61 changes: 36 additions & 25 deletions openreview/stages/default_content.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@
'param': {
'type': 'string',
'maxLength': 500,
'optional': True
'optional': True,
'deletable': True
}
}
},
Expand Down Expand Up @@ -131,6 +132,7 @@
'maxLength': 200000,
'input': 'textarea',
'optional': True,
'deletable': True,
'markdown': True
}
}
Expand Down Expand Up @@ -221,34 +223,36 @@
'order': 3,
'value': {
'param': {
'type': 'string',
'type': 'integer',
'enum': [
'10: Top 5% of accepted papers, seminal paper',
'9: Top 15% of accepted papers, strong accept',
'8: Top 50% of accepted papers, clear accept',
'7: Good paper, accept',
'6: Marginally above acceptance threshold',
'5: Marginally below acceptance threshold',
'4: Ok but not good enough - rejection',
'3: Clear rejection',
'2: Strong rejection',
'1: Trivial or wrong'
]
{ 'value': 10, 'description': '10: Top 5% of accepted papers, seminal paper' },
{ 'value': 9, 'description': '9: Top 15% of accepted papers, strong accept' },
{ 'value': 8, 'description': '8: Top 50% of accepted papers, clear accept' },
{ 'value': 7, 'description': '7: Good paper, accept' },
{ 'value': 6, 'description': '6: Marginally above acceptance threshold' },
{ 'value': 5, 'description': '5: Marginally below acceptance threshold' },
{ 'value': 4, 'description': '4: Ok but not good enough - rejection' },
{ 'value': 3, 'description': '3: Clear rejection' },
{ 'value': 2, 'description': '2: Strong rejection' },
{ 'value': 1, 'description': '1: Trivial or wrong' }
],
'input': 'radio'
}
}
},
'confidence': {
'order': 4,
'value': {
'param': {
'type': 'string',
'type': 'integer',
'enum': [
'5: The reviewer is absolutely certain that the evaluation is correct and very familiar with the relevant literature',
'4: The reviewer is confident but not absolutely certain that the evaluation is correct',
'3: The reviewer is fairly confident that the evaluation is correct',
'2: The reviewer is willing to defend the evaluation, but it is quite likely that the reviewer did not understand central parts of the paper',
'1: The reviewer\'s evaluation is an educated guess'
]
{ 'value': 5, 'description': '5: The reviewer is absolutely certain that the evaluation is correct and very familiar with the relevant literature' },
{ 'value': 4, 'description': '4: The reviewer is confident but not absolutely certain that the evaluation is correct' },
{ 'value': 3, 'description': '3: The reviewer is fairly confident that the evaluation is correct' },
{ 'value': 2, 'description': '2: The reviewer is willing to defend the evaluation, but it is quite likely that the reviewer did not understand central parts of the paper' },
{ 'value': 1, 'description': '1: The reviewer\'s evaluation is an educated guess' }
],
'input': 'radio'
}
}
}
Expand Down Expand Up @@ -298,7 +302,8 @@
'maxLength': 200000,
'markdown': True,
'input': 'textarea',
'optional': True
'optional': True,
'deletable': True
}
}
}
Expand Down Expand Up @@ -356,7 +361,8 @@
'Accept (Oral)',
'Accept (Poster)',
'Reject'
]
],
'input': 'radio'
}
}
},
Expand Down Expand Up @@ -477,7 +483,8 @@
'fieldName': 'TL;DR',
'type': 'string',
'maxLength': 250,
'optional': True
'optional': True,
'deletable': True
}
}
},
Expand Down Expand Up @@ -590,6 +597,7 @@
'type': 'string',
'maxLength': 5000,
'optional': True,
'deletable': True,
'input': 'textarea'
}
}
Expand Down Expand Up @@ -692,6 +700,7 @@
'type': 'string',
'maxLength': 5000,
'optional': True,
'deletable': True,
'input': 'textarea'
}
}
Expand Down Expand Up @@ -733,7 +742,8 @@
'Accept (Oral)',
'Accept (Poster)',
'Reject'
]
],
'input': 'radio'
}
}
},
Expand All @@ -744,7 +754,8 @@
'type': 'string',
'markdown': True,
'input': 'textarea',
'optional': True
'optional': True,
'deletable': True
}
}
}
Expand Down
46 changes: 36 additions & 10 deletions openreview/stages/venue_stages.py
Original file line number Diff line number Diff line change
Expand Up @@ -607,9 +607,9 @@ def get_nonreaders(self, conference, number):

def get_signatures(self, conference, number):
if self.allow_de_anonymization:
return '~.*'
return ['~.*']

return conference.get_anon_reviewer_id(number=number, anon_id='.*')
return [conference.get_anon_reviewer_id(number=number, anon_id='.*')]

def get_content(self, api_version='2', conference=None):

Expand Down Expand Up @@ -743,7 +743,7 @@ def get_nonreaders(self, conference, number):
return [conference.get_authors_id(number = number)]

def get_signatures(self, conference, number):
return conference.get_anon_reviewer_id(number=number, anon_id='.*', name=conference.ethics_reviewers_name) + '|' + conference.get_program_chairs_id()
return [conference.get_anon_reviewer_id(number=number, anon_id='.*', name=conference.ethics_reviewers_name), conference.get_program_chairs_id()]

def get_content(self, api_version='2', conference=None):

Expand Down Expand Up @@ -940,7 +940,33 @@ def __init__(self,
self.readers = readers
self.invitees = invitees

def get_readers(self, conference, number):
def get_readers(self, conference, number, api_version='1'):

readers = [{ 'value': conference.get_program_chairs_id(), 'optional': False }]
if api_version == '2' and self.reader_selection:
if conference.use_senior_area_chairs and self.Readers.SENIOR_AREA_CHAIRS_ASSIGNED in self.readers:
readers.append({ 'value': conference.get_senior_area_chairs_id(number), 'optional': False })

if self.allow_public_comments or self.Readers.EVERYONE in self.readers:
readers.append({ 'value': 'everyone', 'optional': True })

if self.reader_selection:
readers.append({ 'prefix': conference.get_anon_reviewer_id(number=number, anon_id='.*'), 'optional': True })

if conference.use_area_chairs and self.Readers.AREA_CHAIRS_ASSIGNED in self.readers:
readers.append({ 'value': conference.get_area_chairs_id(number), 'optional': True })

if self.Readers.REVIEWERS_ASSIGNED in self.readers:
readers.append({ 'value': conference.get_reviewers_id(number), 'optional': True })

if self.Readers.REVIEWERS_SUBMITTED in self.readers:
readers.append({ 'value': conference.get_reviewers_id(number) + '/Submitted', 'optional': True })

if self.Readers.AUTHORS in self.readers:
readers.append({ 'value': conference.get_authors_id(number), 'optional': True })

return readers

readers = [conference.get_program_chairs_id()]

if self.allow_public_comments or self.Readers.EVERYONE in self.readers:
Expand All @@ -966,7 +992,7 @@ def get_readers(self, conference, number):

return readers

def get_signatures_regex(self, conference, number):
def get_signatures(self, conference, number):

committee = [conference.get_program_chairs_id()]

Expand All @@ -985,7 +1011,7 @@ def get_signatures_regex(self, conference, number):
if self.Readers.AUTHORS in self.invitees:
committee.append(conference.get_authors_id(number))

return '|'.join(committee)
return committee

def get_invitees(self, conference, number):
invitees = [conference.get_id(), conference.support_user]
Expand Down Expand Up @@ -1088,14 +1114,14 @@ def get_nonreaders(self, conference, number):

return [conference.get_authors_id(number = number)]

def get_signatures_regex(self, conference, number):
def get_signatures(self, conference, number):

committee = [conference.get_program_chairs_id()]

if conference.use_area_chairs:
committee.append(conference.get_anon_area_chair_id(number=number, anon_id='.*'))

return '|'.join(committee)
return committee

def get_content(self, api_version='2', conference=None):

Expand Down Expand Up @@ -1364,7 +1390,7 @@ def get_readers(self, conference, number):

return readers

def get_signatures_regex(self, conference, number):
def get_signatures(self, conference, number):
committee = [conference.get_program_chairs_id()]

if conference.use_senior_area_chairs and self.Participants.SENIOR_AREA_CHAIRS_ASSIGNED in self.invitees:
Expand All @@ -1385,7 +1411,7 @@ def get_signatures_regex(self, conference, number):
if conference.use_ethics_reviewers and self.Participants.ETHICS_REVIEWERS_ASSIGNED in self.invitees:
committee.append(conference.get_anon_reviewer_id(number=number, anon_id='.*', name=conference.ethics_reviewers_name))

return '|'.join(committee)
return committee

def get_source_submissions(self):

Expand Down
Loading

0 comments on commit c3b33c8

Please sign in to comment.