Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/Venue Configuration by Invitation #2118

Merged
merged 106 commits into from
Jul 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
106 commits
Select commit Hold shift + click to select a range
45db0e0
create invitations needed to post and deploy venue
celestemartinez Apr 10, 2024
5df5795
start creating invitations to edit /Submission invitation
celestemartinez Apr 30, 2024
2907814
start reading values from note
celestemartinez May 1, 2024
eac85fa
Merge branch 'master' into feature/venue-invitations
celestemartinez May 1, 2024
06a91d2
add more fields to request form and read values from helpers
celestemartinez May 3, 2024
2434583
remove Submission/Expiration invitation
celestemartinez May 3, 2024
aa0b1c8
edit post submission cdate when submission deadline is updated
celestemartinez May 3, 2024
0360d61
move edit invitations to another file
celestemartinez May 3, 2024
48aa073
small fixes
celestemartinez May 6, 2024
86a24d2
enable edit content inv
celestemartinez May 6, 2024
4282a8d
add fields to submission using /Content invitation
celestemartinez May 6, 2024
4c6b285
Merge branch 'master' into feature/venue-invitations
celestemartinez May 9, 2024
e892acc
Merge branch 'master' into feature/venue-invitations
melisabok May 10, 2024
e02cace
add cdate and submission license
celestemartinez May 9, 2024
ab32122
create one invitation for all dates
celestemartinez May 10, 2024
70d6a8c
fix Submission_Form invitation
celestemartinez May 10, 2024
7849bf8
create Notifications invitation
celestemartinez May 10, 2024
38f7d66
Merge branch 'master' into feature/venue-invitations
melisabok May 13, 2024
06fefb2
Merge branch 'master' into feature/venue-invitations
melisabok May 13, 2024
a493a22
Merge branch 'master' into feature/venue-invitations
melisabok May 13, 2024
be6b247
edit submission readers using the post submission invitation
melisabok May 14, 2024
6903b25
edit authors and pdf readers
melisabok May 14, 2024
15860d9
create review super invitations and edit invitations
celestemartinez May 14, 2024
19b650e
Merge branch 'master' into feature/venue-invitations
xkopenreview May 15, 2024
639324b
adding venue home page
melisabok May 15, 2024
a102271
Merge branch 'feature/venue-invitations' of github.com:openreview/ope…
melisabok May 15, 2024
6fcbc91
remove fields that are no needed from the beginning
melisabok May 15, 2024
21782b8
add input and use date for deadlines
melisabok May 16, 2024
bc889e4
create stage invitation to create other stages
melisabok May 16, 2024
bf670b7
use different invitations to edit deadlines
melisabok May 16, 2024
58577ac
set default values
melisabok May 17, 2024
31292a6
fix stage invitations
melisabok May 17, 2024
33f1d3d
Merge branch 'master' into feature/venue-invitations
melisabok May 17, 2024
e7fa7b5
fix comment invitation
celestemartinez May 22, 2024
2c3b2e3
fix comment invitation
celestemartinez May 22, 2024
bf385b7
use path in submission and field readers
celestemartinez May 30, 2024
bb36bed
Merge branch 'master' into feature/venue-invitations
melisabok May 30, 2024
1494472
remove duplicated code
celestemartinez May 31, 2024
7350579
Merge branch 'master' into feature/venue-invitations
melisabok May 31, 2024
b711139
test review stage changes
celestemartinez May 31, 2024
7d4fb34
update packages and manifest
celestemartinez May 31, 2024
7a613d3
only create review stage on deployment
celestemartinez May 31, 2024
7f63b80
Merge branch 'master' into feature/venue-invitations
celestemartinez Jun 3, 2024
a9aeff2
use utc instead
melisabok Jun 3, 2024
6a92771
Merge branch 'feature/venue-invitations' of github.com:openreview/ope…
melisabok Jun 3, 2024
eb20732
use API setup to configure ProfileManagement and VenueConfiguration
melisabok Jun 3, 2024
b39fa34
check none value
melisabok Jun 3, 2024
38ac487
check dt instance of
melisabok Jun 3, 2024
66a93b2
create metareview template
celestemartinez Jun 3, 2024
6469666
revert changes
melisabok Jun 3, 2024
0472eb5
Merge branch 'feature/venue-invitations' of github.com:openreview/ope…
melisabok Jun 3, 2024
eee1c75
export profile files
melisabok Jun 3, 2024
64f9769
add js process function
melisabok Jun 3, 2024
ded969f
add configuration webfield
melisabok Jun 3, 2024
09e850c
remove fixture references
melisabok Jun 3, 2024
e40922a
add recruitment invitation
melisabok Jun 4, 2024
ee93f87
use workflow template for comment field
celestemartinez Jun 5, 2024
280c5d7
fix duedates
melisabok Jun 5, 2024
da8e5ad
use objects in readers items
celestemartinez Jun 5, 2024
12ab813
add a field to post a group edit
melisabok Jun 6, 2024
e8610ec
read metareview comment from template invitation
celestemartinez Jun 6, 2024
addaa3b
update api2 branch
celestemartinez Jun 6, 2024
c305500
Merge branch 'master' into feature/venue-invitations
xkopenreview Jun 6, 2024
8b382f7
move the params to the invitation content
melisabok Jun 6, 2024
1de4a7f
Merge branch 'feature/venue-invitations' of github.com:openreview/ope…
melisabok Jun 6, 2024
78a25e9
create official comment template
celestemartinez Jun 7, 2024
a9f97fe
Merge branch 'master' into feature/venue-invitations
celestemartinez Jun 7, 2024
6f095d1
Merge branch 'master' into feature/venue-invitations
xkopenreview Jun 12, 2024
ad55d9b
invitation to edit comment invitees
celestemartinez Jun 7, 2024
93b9d1e
use objects for license field
celestemartinez Jun 12, 2024
7d576e1
add decision template
celestemartinez Jun 12, 2024
1ee0591
Merge branch 'master' into feature/venue-invitations
celestemartinez Jun 13, 2024
10a17a3
revert to using main branch of api2
celestemartinez Jun 13, 2024
41d8381
create venue invitations using template
celestemartinez Jun 14, 2024
ef00ab4
fix test, move params to invitation content
celestemartinez Jun 14, 2024
4783d9d
remove profile_management fixture
celestemartinez Jun 14, 2024
12b5d4b
Merge branch 'master' into feature/venue-invitations
celestemartinez Jun 14, 2024
35c556c
Merge branch 'master' into feature/venue-invitations
celestemartinez Jun 18, 2024
efdcbe6
revert back to main branch of api2
celestemartinez Jun 18, 2024
705236b
Merge branch 'master' into feature/venue-invitations
xkopenreview Jun 26, 2024
38a43b8
fix default decision options
celestemartinez Jun 20, 2024
41ef86b
small changes to template fields
celestemartinez Jun 24, 2024
fe92276
change stage field name, fix tests, edit group.content
celestemartinez Jun 24, 2024
1199831
fix domain and add invitation to edit group content
celestemartinez Jun 26, 2024
c724835
Merge branch 'master' into feature/venue-invitations
celestemartinez Jun 27, 2024
431b2b9
add descriptions to metareview template
celestemartinez Jun 27, 2024
8bcad9e
fix template descriptions and fields
celestemartinez Jun 27, 2024
73bd105
Merge branch 'master' into feature/venue-invitations
celestemartinez Jun 27, 2024
b1983de
Merge branch 'master' into feature/venue-invitations
melisabok Jul 9, 2024
447df53
use one invitation to edit comment invitees and readers
celestemartinez Jul 10, 2024
7c2af65
parametrize comment notifications
celestemartinez Jul 11, 2024
561a954
enable expertise selection for all roles
celestemartinez Jul 11, 2024
3a5d9a3
Merge branch 'master' into feature/venue-invitations
xkopenreview Jul 11, 2024
0326bfe
Merge branch 'master' into feature/venue-invitations
melisabok Jul 15, 2024
22f4987
add recommendation name to content invitation
celestemartinez Jul 12, 2024
aa4e754
invitation to set domain vars, move to invitations
celestemartinez Jul 15, 2024
d1fd3d2
fix comment process
celestemartinez Jul 15, 2024
fbb6e8b
get email settings from super invitations
celestemartinez Jul 15, 2024
773350a
initialize setup matching invitations
melisabok Jul 17, 2024
412037a
Merge branch 'feature/venue-invitations' of github.com:openreview/ope…
melisabok Jul 17, 2024
58234a7
Merge branch 'master' into feature/venue-invitations
melisabok Jul 17, 2024
91db8b5
change to edit deadlines invitation
celestemartinez Jul 17, 2024
18d9343
read values from invitation and fallback on domain
celestemartinez Jul 18, 2024
77236c6
Merge branch 'master' into feature/venue-invitations
celestemartinez Jul 18, 2024
81dd507
Merge branch 'master' into feature/venue-invitations
melisabok Jul 18, 2024
ddc18c2
fix get_content_value default value
celestemartinez Jul 18, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,13 @@ include openreview/agora/process/*.py
include openreview/duplicate_domains.json
include openreview/journal/process/*.py
include openreview/journal/webfield/*.js
include openreview/profile/process/*.py
include openreview/profile/process/*.js
include openreview/profile/webfield/*.js
include openreview/venue/process/*.py
include openreview/venue/process/*.js
include openreview/venue/configuration/process/*.py
include openreview/venue/configuration/webfield/*.js
include openreview/venue/webfield/*.js
include openreview/arr/process/*.js
include openreview/arr/process/*.py
Expand Down
23 changes: 13 additions & 10 deletions openreview/api/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -2019,7 +2019,7 @@ def post_institution(self, institution):
response = self.__handle_response(response)
return response.json()

def post_invitation_edit(self, invitations, readers=None, writers=None, signatures=None, invitation=None, content=None, replacement=None):
def post_invitation_edit(self, invitations, readers=None, writers=None, signatures=None, invitation=None, content=None, replacement=None, domain=None):
"""
"""
edit_json = {}
Expand All @@ -2045,6 +2045,9 @@ def post_invitation_edit(self, invitations, readers=None, writers=None, signatur
if invitation is not None:
edit_json['invitation'] = invitation.to_json()

if domain is not None:
edit_json['domain'] = domain

response = self.session.post(self.invitation_edits_url, json = edit_json, headers = self.headers)
response = self.__handle_response(response)

Expand Down Expand Up @@ -2323,6 +2326,7 @@ def __init__(self,
readers = None,
writers = None,
signatures = None,
content = None,
celestemartinez marked this conversation as resolved.
Show resolved Hide resolved
note = None,
group = None,
invitation = None,
Expand All @@ -2331,8 +2335,7 @@ def __init__(self,
tcdate = None,
tmdate = None,
ddate = None,
tauthor = None,
content = None):
tauthor = None):

self.id = id
self.domain = domain
Expand All @@ -2345,11 +2348,11 @@ def __init__(self,
self.nonreaders = nonreaders
self.writers = writers
self.signatures = signatures
self.content = content
self.note = note
self.group = group
self.invitation = invitation
self.tauthor = tauthor
self.content = content

def __repr__(self):
content = ','.join([("%s = %r" % (attr, value)) for attr, value in vars(self).items()])
Expand Down Expand Up @@ -2380,6 +2383,8 @@ def to_json(self):
body['writers'] = self.writers
if (self.signatures):
body['signatures'] = self.signatures
if (self.content):
body['content'] = self.content
if (self.note):
body['note'] = self.note.to_json()
if (self.group):
Expand All @@ -2390,8 +2395,6 @@ def to_json(self):
body['invitation'] = self.invitation
if (self.ddate):
body['ddate'] = self.ddate
if (self.content):
body['content'] = self.content

return body

Expand All @@ -2417,11 +2420,11 @@ def from_json(Edit,e):
nonreaders = e.get('nonreaders'),
writers = e.get('writers'),
signatures = e.get('signatures'),
content = e.get('content'),
celestemartinez marked this conversation as resolved.
Show resolved Hide resolved
note = Note.from_json(e['note']) if 'note' in e else None,
group = Group.from_json(e['group']) if 'group' in e else None,
invitation = e.get('invitation'),
tauthor = e.get('tauthor'),
content = e.get('content')
tauthor = e.get('tauthor')
)

if isinstance(edit.invitation, dict):
Expand Down Expand Up @@ -2643,7 +2646,7 @@ def is_active(self):

def get_content_value(self, field_name, default_value=None):
if self.content:
return self.content.get(field_name, {}).get('value')
return self.content.get(field_name, {}).get('value', default_value)
return default_value

def pretty_id(self):
Expand Down Expand Up @@ -2937,7 +2940,7 @@ def __init__(self, id=None, content=None, readers=None, writers=None, signatorie

def get_content_value(self, field_name, default_value=None):
if self.content:
return self.content.get(field_name, {}).get('value')
return self.content.get(field_name, {}).get('value', default_value)
return default_value

def __repr__(self):
Expand Down
104 changes: 104 additions & 0 deletions openreview/conference/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,110 @@
import datetime
import json

def get_venue(client, venue_note_id, support_user='OpenReview.net/Support', setup=False):

note = client.get_note(venue_note_id)
venue = openreview.venue.Venue(client, note.content['venue_id']['value'], support_user)
venue.name = note.content['official_venue_name']['value']
venue.short_name = note.content['abbreviated_venue_name']['value']
venue.website = note.content['venue_website_url']['value']
venue.contact = note.content['contact_email']['value']
venue.location = note.content['location']['value']
set_start_date(note, venue)
venue.request_form_id = venue_note_id
venue.use_area_chairs = 'Yes' in note.content.get('area_chairs_and_senior_area_chairs', {}).get('value','')
venue.use_senior_area_chairs = note.content.get('area_chairs_and_senior_area_chairs', {}).get('value','') == 'Yes, our venue has Area Chairs and Senior Area Chairs'
venue.use_secondary_area_chairs = note.content.get('secondary_area_chairs', {}).get('value','') == 'Yes, our venue has Secondary Area Chairs'
venue.use_ethics_chairs = venue.use_ethics_reviewers = note.content.get('ethics_chairs_and_reviewers', {}).get('value', '') == 'Yes, our venue has Ethics Chairs and Reviewers'
venue.use_publication_chairs = note.content.get('publication_chairs', {}).get('value', '') == 'Yes, our venue has Publication Chairs'

set_initial_stages_v2(note, venue)
venue.expertise_selection_stage = openreview.stages.ExpertiseSelectionStage(due_date = venue.submission_stage.due_date)
if setup:
venue.setup(note.content.get('program_chair_emails',{}).get('value'))
return venue

def set_start_date(request_forum, venue):

venue_start_date_str = 'TBD'
venue_start_date = None
start_date = request_forum.content.get('venue_start_date', {}).get('value', '').strip()
if start_date:
try:
venue_start_date = datetime.datetime.strptime(start_date, '%Y/%m/%d %H:%M')
except ValueError:
venue_start_date = datetime.datetime.strptime(start_date, '%Y/%m/%d')
venue_start_date_str = venue_start_date.strftime('%b %d %Y')

venue.start_date = venue_start_date_str

def set_initial_stages_v2(request_forum, venue):

readers_map = {
'All program committee (all reviewers, all area chairs, all senior area chairs if applicable)': [openreview.stages.SubmissionStage.Readers.SENIOR_AREA_CHAIRS, openreview.stages.SubmissionStage.Readers.AREA_CHAIRS, openreview.stages.SubmissionStage.Readers.REVIEWERS],
'All area chairs only': [openreview.stages.SubmissionStage.Readers.SENIOR_AREA_CHAIRS, openreview.stages.SubmissionStage.Readers.AREA_CHAIRS],
'Assigned program committee (assigned reviewers, assigned area chairs, assigned senior area chairs if applicable)': [openreview.stages.SubmissionStage.Readers.SENIOR_AREA_CHAIRS_ASSIGNED, openreview.stages.SubmissionStage.Readers.AREA_CHAIRS_ASSIGNED, openreview.stages.SubmissionStage.Readers.REVIEWERS_ASSIGNED],
'Program chairs and paper authors only': [],
'Everyone (submissions are public)': [openreview.stages.SubmissionStage.Readers.EVERYONE],
'Make accepted submissions public and hide rejected submissions': [openreview.stages.SubmissionStage.Readers.EVERYONE_BUT_REJECTED]
}
#readers = readers_map[request_forum.content.get('submission_readers', {}).get('value', [])]

submission_start_date = request_forum.content.get('submission_start_date', {}).get('value', '').strip()

submission_start_date_str = ''
if submission_start_date:
try:
submission_start_date = datetime.datetime.strptime(submission_start_date, '%Y/%m/%d %H:%M')
except ValueError:
submission_start_date = datetime.datetime.strptime(submission_start_date, '%Y/%m/%d')
submission_start_date_str = submission_start_date.strftime('%b %d %Y %I:%M%p') + ' UTC-0'
else:
submission_start_date = None

submission_deadline_str = 'TBD'
abstract_due_date_str = ''
submission_second_due_date = request_forum.content.get('submission_deadline', {}).get('value', '').strip()
if submission_second_due_date:
try:
submission_second_due_date = datetime.datetime.strptime(submission_second_due_date, '%Y/%m/%d %H:%M')
except ValueError:
submission_second_due_date = datetime.datetime.strptime(submission_second_due_date, '%Y/%m/%d')
submission_deadline_str = submission_second_due_date.strftime('%b %d %Y %I:%M%p') + ' UTC-0'
submission_due_date = request_forum.content.get('abstract_registration_deadline', {}).get('value', '').strip()
if submission_due_date:
try:
submission_due_date = datetime.datetime.strptime(submission_due_date, '%Y/%m/%d %H:%M')
except ValueError:
submission_due_date = datetime.datetime.strptime(submission_due_date, '%Y/%m/%d')
abstract_due_date_str = submission_due_date.strftime('%b %d %Y %I:%M%p') + ' UTC-0'
else:
submission_due_date = submission_second_due_date
submission_second_due_date = None
else:
submission_second_due_date = submission_due_date = None

date = 'Submission Start: ' + submission_start_date_str + ', ' if submission_start_date_str else ''
if abstract_due_date_str:
date += 'Abstract Registration: ' + abstract_due_date_str + ', '
date += 'Submission Deadline: ' + submission_deadline_str
venue.date = date

venue.submission_stage = openreview.stages.SubmissionStage(
start_date=submission_start_date,
due_date=submission_due_date,
second_due_date=submission_second_due_date,
#readers=readers,
double_blind=request_forum.content.get('author_and_reviewer_anonymity', {}).get('value', '') == 'Double-blind',
#email_pcs='Yes' in request_forum.content.get('email_pcs_for_new_submissions', {}).get('value', ''),
#force_profiles='Yes' in request_forum.content.get('force_profiles_only', {}).get('value', '')
)

venue.review_stage = openreview.stages.ReviewStage(
start_date = (submission_second_due_date if submission_second_due_date else submission_due_date) + datetime.timedelta(weeks=1),
allow_de_anonymization = (request_forum.content.get('author_and_reviewer_anonymity', {}).get('value', 'No anonymity') == 'No anonymity'),
)

def get_conference(client, request_form_id, support_user='OpenReview.net/Support', setup=False):

note = client.get_note(request_form_id)
Expand Down
Loading