-
Notifications
You must be signed in to change notification settings - Fork 7
Recruiting Reviewers
First, a recruitment Invitation is created, using the Invitation template API:
invitations.RecruitReviewers(
id = <id of the invitation, e.g. "ICLR.cc/2019/Conference/-/Recruit_Reviewers">,
conference_id = <id of the conference, e.g. "ICLR.cc/2019/Conference">,
process = <process function file path>,
web = <webfield file path>
)
This invitation is unusual in that its responding Notes can only be signed by the publicly accessible (anonymous)
group. This allows users to indicate their acceptance/declination even before they have created an OpenReview account. This Invitation has the following reply.content
field:
reply.content = {
'email': {
'description': 'email address',
'value-regex': '.*@.*'
},
'key': {
'description': 'Email key hash',
'value-regex': '.{0,100}'
},
'response': {
'description': 'Invitation response',
'value-radio': ['Yes', 'No']
}
}
Recruitment emails are deployed using the tools
API:
# deploy reviewer invitation
openreview.tools.recruit_reviewer(client, rev_email, rev_firstname,
hash_seed = <a random string of integers to randomize the hash>,
recruit_reviewers_id = <the invitation ID defined above>,
recruit_message = <a formatted message string to be sent as the email body>,
recruit_message_subj = <subject line of the email>,
reviewers_invited_id = <ID of the Group used to contain the list of emails already invited>
)
tools.recruit_reviewer
will add the user to the group with ID reviewers_invited_id
, and will send an email based on the recruit_message
and recruit_message_subj
variables.
recruit_message
should have the string variables {name}
, {accept_url}
and {decline_url}
. For example:
Dear {name},
You have been invited to serve as a reviewer for the ICLR 2019 Conference.
To ACCEPT the invitation, please click on the following link:
{accept_url}
To DECLINE the invitation, please click on the following link:
{decline_url}
We hope you will be able to accept our invitation and help us select a high quality program for ICLR 2019.
Best regards,
The ICLR 2019 Program Chairs
accept_url
and decline_url
has the following structure:
{baseurl}/invitation?id={recruitment_inv}&email={email}&key={hashkey}&response={response}
The value of hashkey
is generated by the tools.recruit_reviewer
function by applying HMAC hashing to the email address.
By passing in all of the Invitation's parameters in the URL, the Note is automatically created and posted without the user needing to fill out a form in the interface. Once the Note is posted, it triggers a process function that compares the hashkey
and email
fields using the HMAC hashing protocol, and if they match, the user's email is added to the appropriate group based on the response
field of Yes
or No
(usually either a Reviewers
group in the case of acceptance, or Reviewers/Declined
if the user declines. If the hash does not match the email, an error is thrown, and no groups are changed.