├── .gitignore
├── .vscode
└── settings.json
├── README.md
├── admin
├── README.md
├── conference-template
│ ├── config.properties
│ ├── process
│ │ ├── commentProcess.template
│ │ ├── officialReviewProcess.template
│ │ └── submissionProcess.template
│ ├── python
│ │ ├── admin-init.template
│ │ └── config.template
│ └── webfield
│ │ └── conferenceWebfield.template
├── precreate_profiles.py
├── processToFile.js
├── superuser-init.py
├── update-webfield.py
└── utils.py
├── demo_scripts
└── test_conference_script.ipynb
├── samples
├── notebooks
│ ├── Create old openreview.net groups.ipynb
│ ├── Get Reviewers.ipynb
│ ├── Migrate process functions.ipynb
│ ├── OpenReview new Users.ipynb
│ ├── Update user expertise.ipynb
│ └── superuser-tpms-dump.ipynb
├── python
│ ├── assign-reviewers.py
│ ├── create-invitations.py
│ ├── email-group[template].py
│ ├── freeze-submissions.py
│ ├── get-areachairs.py
│ ├── get-groups.py
│ ├── get-invitations.py
│ ├── get-notes.py
│ ├── get-reviewers.py
│ ├── get-submissions.py
│ └── refresh-authors.py
└── webfield
│ ├── reviewer_bid_tabs.js
│ ├── venue_home_basic.js
│ └── venue_home_tabs.js
├── utils
├── author-precreate-profile.py
├── file-emails-to-lowercase.py
├── group-emails-to-lowercase.py
├── load-NSF-profiles.py
├── load-Researcher-profiles.py
└── processToFile.js
└── venues
├── ACM.org
├── ACM-landing-webfield.html
└── SIGIR
│ └── Badging
│ ├── process
│ ├── decisionNotification.js
│ └── submissionProcess.js
│ ├── python
│ ├── chairs
│ │ └── assign-reviewer.py
│ ├── config.py
│ └── init_conference.py
│ └── webfield
│ ├── decisionWebfield.js
│ └── recruitResponseWebfield.js
├── AKBC.ws
├── 2013
│ ├── js
│ │ └── superuser-reset.js
│ ├── python
│ │ └── superuser-init.py
│ └── webfield
│ │ └── akbc2013_webfield.js
├── 2019
│ └── Conference
│ │ ├── README.md
│ │ ├── process
│ │ ├── commentProcess.js
│ │ ├── metaReviewProcess.js
│ │ ├── officialReviewProcess.js
│ │ ├── recruitReviewersProcess.js
│ │ ├── registrationProcess.js
│ │ ├── submissionProcess.js
│ │ └── withdrawProcess.js
│ │ ├── python
│ │ ├── akbc19.py
│ │ ├── assign.py
│ │ ├── bidding_stage.py
│ │ ├── create_revise_review_invitations.py
│ │ ├── generate-ac-scores.py
│ │ ├── groups.py
│ │ ├── invitations.py
│ │ ├── notes.py
│ │ ├── post-decisions.py
│ │ ├── post-submissions-stage-1.py
│ │ ├── post-submissions-stage-2.py
│ │ ├── programchairs
│ │ │ └── assign-reviewer.py
│ │ ├── rebuttal-stage.py
│ │ ├── review-assignment-stage.py
│ │ └── reviewing-stage.py
│ │ └── webfield
│ │ ├── areachairWebfield.js
│ │ ├── areachairWebfieldBiddingEnabled.js
│ │ ├── areachairWebfieldReviewerAssignmentStage.js
│ │ ├── authorWebfield.js
│ │ ├── bidWebfield.js
│ │ ├── homepage.js
│ │ ├── homepagePostSubmission.js
│ │ ├── programchairWebfield.js
│ │ ├── recruitResponseWebfield.js
│ │ ├── reviewerWebfield.js
│ │ ├── reviewerWebfieldBiddingEnabled.js
│ │ └── reviewerWebfieldReviewerAssignmentStage.js
└── AKBC-landing-webfield.js
├── DBLP.org
└── python
│ ├── config.py
│ ├── dblp_upload_demo.ipynb
│ ├── dblp_upload_wrapper.py
│ └── superuser-init.py
├── Demo
└── 2019
│ └── Workshop
│ └── DoubleBlind
│ └── python
│ ├── config.py
│ └── init.py
├── ECCV2016.org
└── BNMW
│ ├── bnmw-1.js
│ ├── bnmw_params.js
│ ├── bnmw_setup.js
│ ├── bnmw_webfield.js
│ ├── eccv_add_verdictInvitations.js
│ ├── process
│ ├── bnmwProcess.template
│ ├── commentProcess.js
│ └── reviewProcess.js
│ └── python
│ ├── setup-groups.py
│ └── setup-invitations.py
├── ICLR.cc
├── 2013
│ ├── js
│ │ └── superuser-reset.js
│ ├── python
│ │ └── superuser-init.py
│ └── webfield
│ │ ├── conferenceWebfield.js
│ │ ├── conferenceWebfieldOld.html
│ │ └── iclr2013_webfield.js
├── 2014
│ ├── js
│ │ └── superuser-reset.js
│ ├── python
│ │ └── superuser-init.py
│ └── webfield
│ │ ├── conferenceWebfield.js
│ │ ├── conferenceWebfieldOld.html
│ │ ├── iclr2014_webfield.js
│ │ ├── workshopWebfield.js
│ │ └── workshopWebfieldOld.html
├── 2016
│ ├── iclr2016(old scripts)
│ │ ├── 20160114-demo
│ │ │ ├── 0-create_iclr_pcs.js
│ │ │ ├── 1-create_iclr_grp.js
│ │ │ ├── 10-send_revs_email.js
│ │ │ ├── 11-create_rev_grp.js
│ │ │ ├── 12-assign_reviewers_from_csv.js
│ │ │ ├── 13-check_reviews.js
│ │ │ ├── 14-remind_reviewers.js
│ │ │ ├── 15-create_comment_invitation.js
│ │ │ ├── 16-review-stats.js
│ │ │ ├── 17-create_comment_invitations.js
│ │ │ ├── 18-accepted_papers.js
│ │ │ ├── 19-email_results.js
│ │ │ ├── 2-create_iclr16_grp.js
│ │ │ ├── 20-check_author_emails.js
│ │ │ ├── 21-email_missing_results.js
│ │ │ ├── 22-email_poster_instructions.js
│ │ │ ├── 23-google_authors.js
│ │ │ ├── 3-create_paper_grp.js
│ │ │ ├── 4-create_iclr_sub_inv.js
│ │ │ ├── 5-create_iclr_sub.js
│ │ │ ├── 6-assign_reviewer.js
│ │ │ ├── 7-create_iclr_subs_from_csv.js
│ │ │ ├── 8-comment.js
│ │ │ ├── 9-create_rev_accts_and_email.js
│ │ │ └── web-field-workshop.html
│ │ ├── iclr2016_conference
│ │ │ ├── 3-create_paper_grp.js
│ │ │ ├── 4-create_iclr_sub_inv.js
│ │ │ ├── 8-create_iclr_subs_from_csv.js
│ │ │ └── 9-create_iclr_subs_from_csv.js
│ │ ├── sample_scripts
│ │ │ ├── assign_reviewer.js
│ │ │ ├── create_comment
│ │ │ ├── create_group
│ │ │ ├── create_group.js
│ │ │ ├── create_iclr_comment.js
│ │ │ ├── create_iclr_sub.js
│ │ │ ├── create_iclr_sub_invite.js
│ │ │ ├── create_invite
│ │ │ ├── create_invite.js
│ │ │ ├── create_note
│ │ │ ├── create_note.js
│ │ │ ├── create_review
│ │ │ ├── create_simple_inv.js
│ │ │ ├── create_simple_note.js
│ │ │ ├── create_submission.js
│ │ │ ├── create_submission_invite
│ │ │ ├── create_submission_invite.js
│ │ │ ├── create_user
│ │ │ ├── create_user.json
│ │ │ ├── create_usr_no_pass_test.js
│ │ │ └── init_iclr.js
│ │ └── test
│ │ │ ├── login.js
│ │ │ └── test.js
│ └── workshop
│ │ ├── iclr2016_landingpage.js
│ │ ├── iclr2016_params.js
│ │ ├── iclr2016_setup.js
│ │ └── iclr2016_webfield.js
├── 2017
│ ├── README.md
│ ├── conference
│ │ ├── process
│ │ │ ├── acceptanceProcess.js
│ │ │ ├── commentProcess.js
│ │ │ ├── metaReviewProcess.js
│ │ │ ├── officialReviewProcess.js
│ │ │ ├── openReviewProcess.js
│ │ │ ├── questionProcess.js
│ │ │ ├── ratingProcess.js
│ │ │ ├── responseInvitationProcess_conference.js
│ │ │ ├── submissionProcess_conference.template
│ │ │ └── verdictProcess.js
│ │ ├── python
│ │ │ ├── accept-submissions.py
│ │ │ ├── assign-areachairs.py
│ │ │ ├── assign-reviewers.py
│ │ │ ├── email-everyone.py
│ │ │ ├── email-group[template].py
│ │ │ ├── email-lazy-reviewers.py
│ │ │ ├── export-members.py
│ │ │ ├── get-acceptance-status.py
│ │ │ ├── get-all-paper-status.py
│ │ │ ├── get-areachairs.py
│ │ │ ├── get-groups.py
│ │ │ ├── get-invitations.py
│ │ │ ├── get-lazy-reviewers.py
│ │ │ ├── get-notes.py
│ │ │ ├── get-review-status.py
│ │ │ ├── get-reviewer-rating.py
│ │ │ ├── get-reviewers.py
│ │ │ ├── get-stats.py
│ │ │ ├── get-submission-notes.py
│ │ │ ├── get-submissions.py
│ │ │ ├── get_reviews.py
│ │ │ ├── invite-reviewers-reminder.py
│ │ │ ├── invite-reviewers.py
│ │ │ ├── populate_reviewerInfo.py
│ │ │ ├── superuser-assign-areachairs.py
│ │ │ ├── superuser-assign-reviewers.py
│ │ │ ├── superuser-create-ratings.py
│ │ │ ├── superuser-init.py
│ │ │ ├── superuser-tpms-dump.py
│ │ │ ├── unassign-areachairs.py
│ │ │ ├── unassign-reviewers.py
│ │ │ ├── update-groups.py
│ │ │ ├── update-homepage.py
│ │ │ └── update-invitations.py
│ │ └── webfield
│ │ │ ├── areachair_webfield.html
│ │ │ ├── iclr2017_conference_decisions_webfield.js
│ │ │ ├── iclr2017_webfield.js
│ │ │ ├── iclr2017conference_webfield.html
│ │ │ └── web-field-invitation.html
│ ├── js
│ │ └── superuser-reset.js
│ └── workshop
│ │ ├── process
│ │ ├── acceptanceProcess_workshop.js
│ │ ├── commentProcess_workshop.js
│ │ ├── officialReviewProcess_workshop.js
│ │ ├── openReviewProcess_workshop.js
│ │ ├── responseInvitationProcess_workshop.js
│ │ └── submissionProcess_workshop.template
│ │ ├── python
│ │ ├── accept-workshop-submissions.py
│ │ ├── assign-workshop-reviewers.py
│ │ ├── get-workshop-lazy-reviewers.py
│ │ ├── get-workshop-review-status.py
│ │ ├── get-workshop-submissions.py
│ │ ├── invite-workshop-reviewers.py
│ │ ├── superuser-tpms-dump-workshop.py
│ │ ├── superuser-workshop-init.py
│ │ └── unassign-workshop-reviewers.py
│ │ └── webfield
│ │ ├── iclr2017_workshop_decisions_webfield.js
│ │ ├── iclr2017workshop_webfield.html
│ │ └── web-field-invitation_workshop.html
├── 2018
│ ├── Conference
│ │ ├── README.md
│ │ ├── params.json
│ │ ├── process
│ │ │ ├── addRevisionProcess.js
│ │ │ ├── commentProcess.js
│ │ │ ├── metaReviewProcess.js
│ │ │ ├── officialReviewProcess.js
│ │ │ ├── officialReviewProcess_withRevision.js
│ │ │ ├── recruitAreachairsProcess.js
│ │ │ ├── recruitReviewersProcess.js
│ │ │ ├── reviewRevisionProcess.js
│ │ │ ├── submissionProcess.js
│ │ │ ├── submissionProcess_fast.js
│ │ │ ├── withdrawProcess_delete.js
│ │ │ └── withdrawProcess_reveal.js
│ │ ├── python
│ │ │ ├── admin-init.py
│ │ │ ├── config.py
│ │ │ ├── convert-withdrawal-procedure.py
│ │ │ ├── correct-authorgroups.py
│ │ │ ├── correct-official-comment-nonreaders.py
│ │ │ ├── correct-official-comment-readers.py
│ │ │ ├── create-comment-reader-groups.py
│ │ │ ├── deduplicate-submissions.py
│ │ │ ├── demo.py
│ │ │ ├── email-decisions.py
│ │ │ ├── fix-blinded-submissions.py
│ │ │ ├── invitations.py
│ │ │ ├── migrate-withdrawn-comments.py
│ │ │ ├── post-acceptance-decisions.py
│ │ │ ├── programchairs
│ │ │ │ ├── assign-areachair.py
│ │ │ │ ├── assign-reviewer.py
│ │ │ │ ├── get-acceptance-status.py
│ │ │ │ ├── get-accepted.py
│ │ │ │ ├── get-activity.py
│ │ │ │ ├── get-lazy-reviewers.py
│ │ │ │ ├── get-review-info.py
│ │ │ │ └── get-reviewers.py
│ │ │ ├── recruit-areachairs.py
│ │ │ ├── recruit-reviewers.py
│ │ │ ├── refresh-bibtex.py
│ │ │ ├── regen-paperauthor-groups.py
│ │ │ ├── replace-emails-with-tilde.py
│ │ │ ├── review-revisions.py
│ │ │ ├── reviewer-assignment-from-server.py
│ │ │ ├── reviewer-assignment.py
│ │ │ ├── reviewer-matching.py
│ │ │ ├── tpms-dump.py
│ │ │ └── visibility.py
│ │ └── webfield
│ │ │ ├── areachairWebfield.js
│ │ │ ├── bidWebfield.js
│ │ │ ├── conferenceWebfield.html
│ │ │ ├── conferenceWebfield_decision_tabs.js
│ │ │ ├── conferenceWebfield_tabs.js
│ │ │ ├── groupWebField.js
│ │ │ ├── programchairWebfield.js
│ │ │ ├── recruitAreachairsWebfield.html
│ │ │ └── recruitReviewersWebfield.html
│ ├── Workshop
│ │ ├── process
│ │ │ ├── commentProcess.js
│ │ │ ├── conferenceTransferProcess.js
│ │ │ ├── officialReviewProcess.js
│ │ │ ├── recruitReviewersProcess.js
│ │ │ └── submissionProcess.js
│ │ ├── python
│ │ │ ├── config.py
│ │ │ ├── email-decisions.py
│ │ │ ├── email-lazy-reviewers.py
│ │ │ ├── invitations.py
│ │ │ ├── post-acceptance-decisions.py
│ │ │ ├── programchairs
│ │ │ │ ├── assign-all-reviewers.py
│ │ │ │ ├── assign-reviewer.py
│ │ │ │ ├── get-pdfs.py
│ │ │ │ ├── get-reviewers.py
│ │ │ │ └── post-acceptance-decisions.py
│ │ │ ├── recruit-reviewers.py
│ │ │ ├── reviewers_intersect.py
│ │ │ ├── superuser-init.py
│ │ │ └── tpms-dump.py
│ │ └── webfield
│ │ │ ├── bidWebfield.js
│ │ │ ├── recruitReviewersWebfield.html
│ │ │ ├── workshopWebfield_decision_tabs.js
│ │ │ └── workshopWebfield_tabs.js
│ └── iclr18-landing-webfield.js
├── 2019
│ ├── Conference
│ │ ├── README.md
│ │ ├── data
│ │ │ ├── ac-match-config.json
│ │ │ ├── iclr19-match-config-example.json
│ │ │ ├── jr-reviewers-match-config.json
│ │ │ └── sr-reviewers-match-config.json
│ │ ├── process
│ │ │ ├── commentProcess.js
│ │ │ ├── metaReviewProcess.js
│ │ │ ├── officialReviewProcess.js
│ │ │ ├── recruitReviewersProcess.js
│ │ │ ├── registrationProcess.js
│ │ │ ├── submissionProcess.js
│ │ │ └── withdrawProcess.js
│ │ ├── python
│ │ │ ├── assign.py
│ │ │ ├── bidding_stage.py
│ │ │ ├── decisions-stage.py
│ │ │ ├── groups.py
│ │ │ ├── iclr19.py
│ │ │ ├── invitations.py
│ │ │ ├── notes.py
│ │ │ ├── post-submissions-stage-1.py
│ │ │ ├── post-submissions-stage-2.py
│ │ │ ├── programchairs
│ │ │ │ ├── assign-reviewer.py
│ │ │ │ ├── get-accepted.py
│ │ │ │ ├── get-lazy-reviewers.py
│ │ │ │ └── write-acceptance-status.py
│ │ │ ├── rebuttal-stage.py
│ │ │ ├── resubmit_papers.py
│ │ │ ├── review-assignment-stage.py
│ │ │ ├── review-rating.py
│ │ │ ├── reviewing-stage.py
│ │ │ ├── tpms-dump.py
│ │ │ └── tpms-get-pdfs.py
│ │ └── webfield
│ │ │ ├── areachairWebfield.js
│ │ │ ├── areachairWebfieldBiddingEnabled.js
│ │ │ ├── areachairWebfieldReviewerAssignmentStage.js
│ │ │ ├── authorWebfield.js
│ │ │ ├── bidWebfield.js
│ │ │ ├── conferenceWebfield_decision_tabs.js
│ │ │ ├── homepage.js
│ │ │ ├── homepagePostSubmission.js
│ │ │ ├── programchairWebfield.js
│ │ │ ├── recruitResponseWebfield.js
│ │ │ ├── reviewerWebfield.js
│ │ │ ├── reviewerWebfieldBiddingEnabled.js
│ │ │ └── reviewerWebfieldReviewerAssignmentStage.js
│ └── Workshop
│ │ ├── DeepGenStruct
│ │ ├── process
│ │ │ └── submissionProcess.js
│ │ └── python
│ │ │ ├── config.py
│ │ │ ├── init.py
│ │ │ ├── post-submission-stage.py
│ │ │ ├── review-assignment-stage.py
│ │ │ └── reviewing-stage.py
│ │ ├── LLD
│ │ ├── process
│ │ │ └── submissionProcess.js
│ │ ├── python
│ │ │ ├── assign-reviewers.py
│ │ │ ├── config.py
│ │ │ ├── create-review-invitations.py
│ │ │ ├── get-submissions.py
│ │ │ ├── init.py
│ │ │ ├── post-submission-stage.py
│ │ │ └── recruit_reviewers.py
│ │ └── webfield
│ │ │ └── conferenceWebfield.js
│ │ ├── RML
│ │ └── python
│ │ │ ├── config.py
│ │ │ ├── init.py
│ │ │ └── post-submission-stage.py
│ │ └── drlStructPred
│ │ └── python
│ │ ├── config.py
│ │ ├── deploy_reviewer_matching.py
│ │ ├── get-submissions.py
│ │ ├── init.py
│ │ ├── invite-reviewers.py
│ │ └── post-submission-stage-1.py
├── 2020
│ └── Conference
│ │ └── python
│ │ ├── assign-area-chair.py
│ │ ├── assign-reviewer.py
│ │ ├── buddyAcCommentProcess.js
│ │ ├── buddyAreachairWebfield.js
│ │ ├── buddy_ac.py
│ │ ├── get-areachairs.py
│ │ ├── get-reviewers.py
│ │ ├── meta_review_process.js
│ │ ├── reassign-reviewer.py
│ │ ├── recruit-area-chairs.py
│ │ ├── recruit-reviewers.py
│ │ ├── setup-pc-assignment.py
│ │ └── setup-stages.py
├── 2021
│ └── Conference
│ │ └── python
│ │ ├── post-custom-load-edges.py
│ │ ├── recruit-reviewers.py
│ │ ├── tpms-dump.py
│ │ ├── tpms-get-pdfs.py
│ │ └── tpms-revs-acs-dump.py
└── ICLR-landing-webfield.js
├── ICML.cc
├── 2013
│ ├── Inferning
│ │ ├── python
│ │ │ └── superuser-init-inferning.py
│ │ └── webfield
│ │ │ └── icml2013_inferning_webfield.js
│ └── PeerReview
│ │ ├── python
│ │ └── superuser-init-peer-review.py
│ │ └── webfield
│ │ └── icml2013_peer_review_webfield.js
├── 2017
│ ├── MLAV
│ │ ├── process
│ │ │ ├── commentProcess.js
│ │ │ ├── officialReviewProcess.js
│ │ │ └── submissionProcess.js
│ │ ├── python
│ │ │ ├── admin-init.py
│ │ │ ├── config.py
│ │ │ ├── create_invitations.py
│ │ │ └── superuser-init.py
│ │ └── webfield
│ │ │ └── conf.html
│ ├── RML
│ │ ├── process
│ │ │ ├── commentProcess.js
│ │ │ └── submissionProcess.template
│ │ ├── python
│ │ │ ├── admin-init.py
│ │ │ ├── config.py
│ │ │ ├── create_revisions.py
│ │ │ └── superuser-init.py
│ │ └── webfield
│ │ │ └── conf.html
│ └── WHI
│ │ ├── process
│ │ ├── commentProcess.js
│ │ ├── officialReviewProcess.js
│ │ └── submissionProcess.template
│ │ ├── python
│ │ ├── admin-init.py
│ │ ├── config.py
│ │ ├── create-revisions.py
│ │ ├── requests.ipynb
│ │ └── superuser-init.py
│ │ └── webfield
│ │ └── conf.html
├── 2018
│ ├── ECA
│ │ ├── process
│ │ │ ├── commentProcess.js
│ │ │ ├── officialReviewProcess.js
│ │ │ └── submissionProcess.js
│ │ ├── python
│ │ │ ├── config.py
│ │ │ ├── init_conference.py
│ │ │ └── update_homepage.py
│ │ └── webfield
│ │ │ └── conferenceWebfield.template
│ ├── RML
│ │ ├── process
│ │ │ ├── commentProcess.js
│ │ │ └── submissionProcess.js
│ │ ├── python
│ │ │ └── init-submissions.py
│ │ └── webfield
│ │ │ ├── conferenceWebfield.js
│ │ │ └── programchairWebfield.js
│ └── Workshop
│ │ └── NAMPI
│ │ ├── process
│ │ ├── commentProcess.js
│ │ ├── officialReviewProcess.js
│ │ ├── recruitReviewerProcess.js
│ │ └── submissionProcess.js
│ │ ├── python
│ │ ├── functions.py
│ │ ├── nampi.py
│ │ └── setup.py
│ │ └── webfield
│ │ ├── homepage.js
│ │ ├── programchairWebfield.js
│ │ └── recruitReviewerWebfield.js
├── 2019
│ ├── Conference
│ │ ├── README.md
│ │ ├── data
│ │ │ └── parse_sheets.py
│ │ ├── process
│ │ │ ├── commentProcess.js
│ │ │ ├── metaReviewProcess.js
│ │ │ ├── officialReviewProcess.js
│ │ │ ├── recruitAreaChairsProcess.js
│ │ │ ├── recruitReviewersProcess.js
│ │ │ └── submissionProcess.js
│ │ ├── python
│ │ │ ├── export_match_stats.py
│ │ │ ├── export_sac_match.py
│ │ │ ├── icml-multiuser-matching-demo.py
│ │ │ ├── icml.py
│ │ │ ├── init.py
│ │ │ ├── setup_main_match.py
│ │ │ ├── setup_sac_match.py
│ │ │ └── upload_papers.py
│ │ └── webfield
│ │ │ ├── areachairWebfield.js
│ │ │ ├── bidWebfield.js
│ │ │ ├── homepage.js
│ │ │ ├── programchairWebfield.js
│ │ │ └── recruitResponseWebfield.js
│ └── Workshop
│ │ └── RL4RealLife
│ │ └── python
│ │ ├── config.py
│ │ └── init.py
└── ICML-landing-webfield.js
├── IEEE.org
└── 2018
│ └── ITSC
│ ├── process
│ ├── commentProcess.js
│ ├── officialReviewProcess.js
│ └── submissionProcess.js
│ ├── python
│ ├── assign-reviewers.py
│ ├── create-review-invitations.py
│ ├── get-submissions.py
│ └── init-submissions.py
│ └── webfield
│ ├── homepage.js
│ └── programchairWebfield.js
├── ISMIR.net
└── 2018
│ └── WoRMS
│ ├── process
│ ├── commentProcess.js
│ └── submissionProcess.js
│ ├── python
│ └── init-submissions.py
│ └── webfield
│ └── conferenceWebfield.js
├── L4DC
└── 2020
│ └── Conference
│ └── python
│ └── upload-submissions.py
├── MICCAI
└── 2021
│ └── Challenges
│ └── python
│ └── upload-submissions.py
├── MIDL.amsterdam
└── 2018
│ ├── Abstract
│ ├── process
│ │ ├── commentProcess.js
│ │ ├── officialReviewProcess.js
│ │ └── submissionProcess.js
│ ├── python
│ │ ├── admin-init.py
│ │ ├── assign-reviewers.py
│ │ ├── config.py
│ │ ├── create-review-invitations.py
│ │ ├── get-submissions.py
│ │ └── process-reviewer-assignments.py
│ └── webfield
│ │ └── conferenceWebfield.js
│ ├── Conference
│ ├── process
│ │ ├── commentProcess.js
│ │ ├── officialReviewProcess.js
│ │ ├── recommendReviewerProcess.js
│ │ ├── recruitReviewerProcess.js
│ │ └── submissionProcess.js
│ ├── python
│ │ ├── admin-init.py
│ │ ├── approve-recommendation.py
│ │ ├── assign-reviewers.py
│ │ ├── chron_jobs
│ │ │ └── process-complete-reviews.py
│ │ ├── config.py
│ │ ├── create-review-invitations.py
│ │ ├── email-lazy-reviewers.py
│ │ ├── get-submissions.py
│ │ ├── process-reviewer-assignments.py
│ │ ├── send-reviewer-message.py
│ │ ├── setup-invitations.py
│ │ └── setup-recruitment-groups.py
│ └── webfield
│ │ ├── conferenceWebfield.js
│ │ └── recruitReviewerWebfield.js
│ ├── get-reviews.py
│ ├── midl18-landing-webfield.js
│ ├── open-revisions.py
│ └── recommendations-page-setup.py
├── MIDL.io
├── 2019
│ └── Conference
│ │ ├── Abstract
│ │ ├── python
│ │ │ ├── config.py
│ │ │ ├── get-reviews.py
│ │ │ └── init.py
│ │ └── webfield
│ │ │ └── conferenceWebfield_abstract.js
│ │ ├── python
│ │ ├── assign.py
│ │ ├── bidding_stage.py
│ │ ├── config.py
│ │ ├── create-metareview-invitations.py
│ │ ├── create-review-invitations.py
│ │ ├── get-submissions.py
│ │ ├── init_conference.py
│ │ ├── post-decisions-2.py
│ │ ├── post-decisions-3.py
│ │ ├── post-decisions.py
│ │ ├── post-submission-stage-1.py
│ │ ├── post-submission-stage-2.py
│ │ ├── rebuttal-stage.py
│ │ ├── recruit_area_chairs.py
│ │ ├── recruit_reviewers.py
│ │ └── review-assignment-stage.py
│ │ └── webfield
│ │ ├── areachairWebfield.js
│ │ ├── areachairWebfieldBiddingClosed.js
│ │ ├── areachairWebfieldBiddingEnabled.js
│ │ ├── authorWebfield.js
│ │ ├── bidWebfield.js
│ │ ├── conferenceWebfield.js
│ │ ├── conferenceWebfield_decision_tabs.js
│ │ ├── programchairWebfield.js
│ │ ├── reviewerWebfield.js
│ │ ├── reviewerWebfieldBiddingClosed.js
│ │ └── reviewerWebfieldBiddingEnabled.js
├── 2020
│ └── Conference
│ │ └── python
│ │ ├── get-paper-details.py
│ │ ├── get-pdfs.py
│ │ ├── post_decisions.py
│ │ ├── revision-invitation.py
│ │ └── tpms-dump.py
├── 2021
│ └── Conference
│ │ └── python
│ │ ├── tpms-dump.py
│ │ └── tpms-get-pdfs.py
└── midl-landing-webfield.js
├── ML_Reproducibility_Challenge
└── 2020
│ ├── process
│ ├── claimProcess.py
│ ├── commentProcess.py
│ └── reportProcess.py
│ ├── python
│ ├── comment_notification.py
│ ├── load_papers.py
│ ├── notify.py
│ └── setup.py
│ └── webfield
│ ├── authorWebfield.js
│ ├── conferenceWebfield.js
│ └── pcWebfield.js
├── NIPS.cc
├── 2016
│ ├── Deep_Learning_Symposium
│ │ ├── process
│ │ │ ├── commentProcess.js
│ │ │ └── recommendationProcess_nips_symposium2016.template
│ │ ├── python
│ │ │ ├── setup-groups.py
│ │ │ ├── setup-invitations.py
│ │ │ └── update-pcs.py
│ │ └── webfield
│ │ │ ├── nips_symposium2016-webfield.js
│ │ │ └── web-field-invitation.html
│ ├── NIPS-2016-landing-webfield.js
│ └── workshop
│ │ ├── MLITS
│ │ ├── process
│ │ │ ├── MLITSProcess.template
│ │ │ ├── commentProcess.js
│ │ │ └── reviewProcess.js
│ │ ├── python
│ │ │ ├── setup-groups.py
│ │ │ └── setup-invitations.py
│ │ └── webfield
│ │ │ └── MLITS-webfield.js
│ │ └── NAMPI
│ │ ├── README.md
│ │ ├── process
│ │ ├── acceptanceProcess.js
│ │ ├── commentProcess.js
│ │ ├── officialReviewProcess.js
│ │ ├── openReviewProcess.js
│ │ ├── responseInvitationProcess.js
│ │ └── submissionProcess_NAMPI.template
│ │ ├── python
│ │ ├── assign-reviewers.py
│ │ ├── get-reviewers.py
│ │ ├── invite-reviewers.py
│ │ └── superuser-init.py
│ │ └── webfield
│ │ ├── NAMPI-invitation-webfield.html
│ │ └── NAMPI-webfield.js
├── 2017
│ ├── NIPS-2017-landing-webfield.js
│ └── Workshop
│ │ ├── Autodiff
│ │ ├── data
│ │ │ └── NIPS2017_autodiff.json
│ │ ├── params.json
│ │ ├── process
│ │ │ ├── commentProcess.js
│ │ │ ├── officialReviewProcess.js
│ │ │ └── submissionProcess.js
│ │ ├── python
│ │ │ ├── admin-init.py
│ │ │ ├── config.py
│ │ │ └── create-decision-tags.py
│ │ └── webfield
│ │ │ └── conf.js
│ │ └── MLITS
│ │ ├── data
│ │ └── NIPS2017_MLITS.json
│ │ ├── params.json
│ │ ├── process
│ │ ├── commentProcess.js
│ │ ├── officialReviewProcess.js
│ │ └── submissionProcess.js
│ │ ├── python
│ │ ├── admin-init.py
│ │ ├── config.py
│ │ ├── create-decision-tags.py
│ │ └── email-reviewers.py
│ │ └── webfield
│ │ └── conf.js
├── 2018
│ └── Workshop
│ │ ├── CDNNRIA
│ │ ├── process
│ │ │ ├── commentProcess.js
│ │ │ ├── officialCommentProcess.js
│ │ │ ├── officialReviewProcess.js
│ │ │ └── submissionProcess.js
│ │ ├── python
│ │ │ ├── assign-reviewers.py
│ │ │ ├── config.py
│ │ │ ├── create-review-invitations.py
│ │ │ ├── init_conference.py
│ │ │ ├── post_decisions.py
│ │ │ └── update-comment-invites.py
│ │ └── webfield
│ │ │ └── conferenceWebfield.js
│ │ ├── IRASL
│ │ ├── process
│ │ │ ├── commentProcess.js
│ │ │ ├── officialReviewProcess.js
│ │ │ └── submissionProcess.js
│ │ ├── python
│ │ │ ├── config.py
│ │ │ ├── create-anon-comments.py
│ │ │ ├── create-review-invitations.py
│ │ │ ├── email-lazy-reviewers.py
│ │ │ ├── email-reviewers.py
│ │ │ └── init_conference.py
│ │ └── webfield
│ │ │ └── conferenceWebfield.js
│ │ ├── MLITS
│ │ ├── process
│ │ │ ├── addRevisionProcess.js
│ │ │ ├── commentProcess.js
│ │ │ └── submissionProcess.js
│ │ ├── python
│ │ │ ├── assign-reviewers.py
│ │ │ ├── config.py
│ │ │ ├── create-review-invitations.py
│ │ │ └── init_conference.py
│ │ └── webfield
│ │ │ └── conferenceWebfield.js
│ │ ├── MLOSS
│ │ ├── process
│ │ │ ├── commentProcess.js
│ │ │ └── submissionProcess.js
│ │ ├── python
│ │ │ ├── assign-reviewers.py
│ │ │ ├── config.py
│ │ │ ├── create-review-invitations.py
│ │ │ ├── init_conference.py
│ │ │ └── post_decisions.py
│ │ └── webfield
│ │ │ └── conferenceWebfield.js
│ │ └── Spatiotemporal
│ │ ├── process
│ │ ├── addRevisionProcess.js
│ │ ├── commentProcess.js
│ │ ├── confidentialReviewProcess.js
│ │ ├── officialCommentProcess.js
│ │ ├── overallEvaluationProcess.js
│ │ ├── pcCommentProcess.js
│ │ └── submissionProcess.js
│ │ ├── python
│ │ ├── assign-reviewers.py
│ │ ├── config.py
│ │ ├── create-PC-comment-invitations.py
│ │ ├── create-anon-comment-invitations.py
│ │ ├── create-review-invitations.py
│ │ ├── email-authors.py
│ │ ├── email-reviewers.py
│ │ └── init_conference.py
│ │ └── webfield
│ │ ├── conferenceWebfield.js
│ │ └── conferenceWebfield.template
└── NIPS-landing-webfield.js
├── NeurIPS.cc
├── 2020
│ └── Conference
│ │ └── python
│ │ └── get-reviewer-expertise.py
├── 2021
│ └── Conference
│ │ └── python
│ │ ├── README.md
│ │ └── build-conflicts.py
├── 2022
│ └── Conference
│ │ └── python
│ │ ├── update_desk_reject.py
│ │ └── updated_desk_reject_process.py
└── 2023
│ └── submission_preprocess.js
├── OpenReview.net
├── Anonymous_Preprint
│ ├── process
│ │ ├── addRevisionProcess.js
│ │ ├── commentProcess.js
│ │ ├── revealProcess.py
│ │ ├── revisionProcess.py
│ │ └── submissionProcess.js
│ ├── python
│ │ ├── admin-init.py
│ │ ├── config.py
│ │ ├── deanonymize.py
│ │ └── reconfigure-invites.py
│ └── webfield
│ │ └── conferenceWebfield.js
├── Archive
│ ├── archive.py
│ ├── archiveWebfield.js
│ └── correct-imported-records.py
└── Support
│ ├── build-venue.py
│ ├── commentProcess.js
│ ├── deployProcess.py
│ ├── init.py
│ ├── recruitmentProcess.py
│ ├── revisionProcess.py
│ ├── supportProcess.js
│ └── supportRequestsWeb.js
├── UAI
└── update-custom-edges.py
├── aclweb.org
├── ACL
│ ├── add_SACs_as_readers.py
│ ├── add_best_paper_committee.py
│ ├── commentProcess.js
│ ├── create_invitations_ARR.py
│ ├── create_main_ethics_ac_reviewers.py
│ ├── create_rating_inv.py
│ ├── decision_process.py
│ ├── desk-reject-ACL-process.py
│ ├── ethicsChairsWebfield.js
│ ├── ethicsReviewersWebfield.js
│ ├── ethics_review_process.py
│ ├── ethics_reviewer_assignment_preprocess.py
│ ├── ethics_reviewer_assignment_process.py
│ ├── flagged_papers.py
│ ├── hide_copyright_signature.py
│ ├── migrate_submissions_ARR_ACL.py
│ ├── post_assignment_edges.py
│ ├── post_camera_ready_invitation.py
│ ├── post_comment_invitations.py
│ ├── post_decision_invitations.py
│ ├── post_desk_reject_invitations.py
│ ├── post_ethics_review_invitation.py
│ ├── post_ethics_reviewers_assignment_invitation.py
│ ├── post_suggested_decision_invitations.py
│ ├── post_withdraw_invitations.py
│ ├── programchairWebfield.js
│ ├── release_submissions_to_authors.py
│ ├── reviewer_ac_groups.py
│ ├── seniorAreaChairWebfield.js
│ ├── suggested_decision_pre_process.py
│ ├── suggested_decision_process.py
│ ├── tracks.py
│ └── withdraw-ACL-process.py
├── ARR
│ ├── Commitment
│ │ └── webfield
│ │ │ ├── authorWebfield.js
│ │ │ └── programChairWebfield.js
│ └── python
│ │ ├── pre_check_invitation.py
│ │ ├── release-reviews.py
│ │ ├── remind_assigned_action_editors.py
│ │ ├── remind_assigned_reviewers.py
│ │ ├── remind_invited_action_editors.py
│ │ └── remind_invited_reviewers.py
├── NAACL
│ ├── 2018
│ │ └── Preprint
│ │ │ ├── construct-preprint-server.py
│ │ │ ├── process
│ │ │ ├── addRevisionProcess.js
│ │ │ ├── commentProcess.js
│ │ │ └── submissionProcess.js
│ │ │ ├── python
│ │ │ ├── admin-init.py
│ │ │ └── config.py
│ │ │ └── webfield
│ │ │ └── conferenceWebfield.js
│ └── 2022
│ │ ├── migrated-submissions
│ │ ├── add_SACs_as_readers.py
│ │ ├── author_comments.py
│ │ ├── change_tracks.py
│ │ ├── change_tracks_in_sub.py
│ │ ├── commentProcess.js
│ │ ├── commitmentPreProcess.py
│ │ ├── commitmentProcess.js
│ │ ├── countries.py
│ │ ├── create_main_ethics_ac_reviewers.py
│ │ ├── create_rating_inv.py
│ │ ├── decision_process.py
│ │ ├── desk-reject-ACL-process.py
│ │ ├── ethicsChairsWebfield.js
│ │ ├── ethicsReviewersWebfield.js
│ │ ├── ethics_review_process.py
│ │ ├── ethics_reviewer_assignment_preprocess.py
│ │ ├── ethics_reviewer_assignment_process.py
│ │ ├── flagged_papers.py
│ │ ├── migrate_submissions_ARR_ACL.py
│ │ ├── missed_metareviews.py
│ │ ├── post_assignment_edges.py
│ │ ├── post_camera_ready_invitation.py
│ │ ├── post_comment_invitations.py
│ │ ├── post_decision_invitations.py
│ │ ├── post_desk_reject_invitations.py
│ │ ├── post_ethics_review_invitation.py
│ │ ├── post_ethics_reviewers_assignment_invitation.py
│ │ ├── post_invitations.py
│ │ ├── post_preprints.py
│ │ ├── post_suggested_decision_invitations.py
│ │ ├── post_withdraw_invitations.py
│ │ ├── release_submissions_and_decisions_to_authors.py
│ │ ├── release_submissions_to_authors.py
│ │ ├── reviewer_ac_groups.py
│ │ ├── suggested_decision_pre_process.py
│ │ ├── suggested_decision_process.py
│ │ ├── tracks.py
│ │ └── withdraw-ACL-process.py
│ │ ├── programchairWebfield.js
│ │ ├── seniorAreaChairWebfield.js
│ │ └── special-theme
│ │ ├── ethicsChairsWebfield.js
│ │ ├── ethicsReviewersWebfield.js
│ │ ├── ethics_review_process.py
│ │ ├── ethics_reviewer_assignment_preprocess.py
│ │ ├── ethics_reviewer_assignment_process.py
│ │ ├── flagged_papers.py
│ │ ├── post_assignment_edges_special.py
│ │ ├── post_ethics_review_invitation.py
│ │ ├── post_ethics_reviewers_assignment_invitation.py
│ │ └── reviewer_ac_groups.py
└── Workshops
│ ├── add-readers-to-original.py
│ ├── camera_ready_process.py
│ ├── create_invitations_workshops_both.py
│ ├── create_invitations_workshops_one.py
│ ├── decision_process.py
│ ├── migrate_from_venue.py
│ ├── migrate_submissions_workshops_both.py
│ ├── migrate_submissions_workshops_one.py
│ ├── post_blind_commitment_invitation.py
│ ├── post_camera_ready.py
│ ├── post_decision_invitations.py
│ ├── post_withdraw_invitations.py
│ └── withdraw-ACL-process.py
├── adai.ai
└── DAI
│ └── 2019
│ └── Conference
│ └── python
│ ├── config.py
│ └── init.py
├── auai.org
└── UAI
│ ├── 2017
│ ├── js
│ │ └── superuser-reset.js
│ ├── process
│ │ ├── acceptanceProcess.js
│ │ ├── bidProcess.js
│ │ ├── commentProcess.js
│ │ ├── emptyProcess.js
│ │ ├── metaReviewProcess.js
│ │ ├── pc_registrationProcess.template
│ │ ├── pc_responseInvitationProcess_uai2017.js
│ │ ├── reviewProcess.js
│ │ ├── spc_registrationProcess.template
│ │ ├── spc_responseInvitationProcess_uai2017.js
│ │ ├── submissionProcess.js
│ │ ├── uaidata.js
│ │ └── verdictProcess.js
│ ├── python
│ │ ├── acceptance-decisions.py
│ │ ├── acceptance-notifications.py
│ │ ├── assign-program-committee.py
│ │ ├── assign-senior-program-committee.py
│ │ ├── assignment_utils.py
│ │ ├── basic-assignment-note.py
│ │ ├── basic-metadata.py
│ │ ├── config.py
│ │ ├── create-invitations.py
│ │ ├── create_copyright_invitations.py
│ │ ├── email-lazy-reviewers.py
│ │ ├── invite-spc.py
│ │ ├── superuser-init.py
│ │ ├── uai-metadata.py
│ │ ├── uai-model-training.py
│ │ ├── uai_features.py
│ │ └── update-invitations.py
│ └── webfield
│ │ ├── add_bid_invitation_webfield.html
│ │ ├── pc_invitation_webfield.html
│ │ ├── program_co-chairs_group_webfield.js
│ │ ├── spc_group_webfield.js
│ │ ├── spc_invitation_webfield.html
│ │ └── uai2017_webfield.js
│ ├── 2018
│ ├── README.md
│ ├── data
│ │ └── subject_areas.csv
│ ├── js
│ │ └── fix-reviews.js
│ ├── process
│ │ ├── commentProcess.js
│ │ ├── metaReviewProcess.js
│ │ ├── officialReviewProcess.js
│ │ ├── recruitPCProcess.js
│ │ ├── recruitSPCProcess.js
│ │ ├── registrationProcess.js
│ │ └── submissionProcess.js
│ ├── python
│ │ ├── assign-all-areachairs.py
│ │ ├── assign-all-reviewers.py
│ │ ├── assign-areachairs.py
│ │ ├── assign-reviewers.py
│ │ ├── config.py
│ │ ├── fix-ofer-metadata.py
│ │ ├── get-pdfs.py
│ │ ├── invite-pc-batch.py
│ │ ├── invite-spc-batch.py
│ │ ├── invite-spc.py
│ │ ├── match-areachairs.py
│ │ ├── match-reviewers-constrained.py
│ │ ├── match-reviewers.py
│ │ ├── reveal_decisions.py
│ │ ├── sample-post-decision.py
│ │ ├── samples
│ │ │ ├── add-spc.py
│ │ │ ├── generate-spc-info-sample.py
│ │ │ └── spc-recommendation-sample.py
│ │ ├── send-spc-reminder.py
│ │ ├── send-spc_pc_rec.py
│ │ ├── send-spc_pc_rec_reminder.py
│ │ ├── setup-commenting-groups.py
│ │ ├── setup-invitations.py
│ │ ├── setup-matching.py
│ │ ├── setup-metadata.py
│ │ ├── setup-pc-recruitment.py
│ │ ├── setup-registration.py
│ │ ├── setup-spc-recommendation.py
│ │ ├── setup-spc-recruitment.py
│ │ ├── setup-submission.py
│ │ ├── update-bids-metadata.py
│ │ └── update-recommendations-metadata.py
│ └── webfield
│ │ ├── areachairWebfield.js
│ │ ├── bidWebfield.js
│ │ ├── bidWebfield_updated.js
│ │ ├── homepage.js
│ │ ├── programchairWebfield.js
│ │ ├── recruitPCWebfield.js
│ │ └── recruitSPCWebfield.js
│ └── 2019
│ └── Conference
│ ├── README.md
│ ├── process
│ └── withdrawProcess.js
│ └── python
│ ├── bidding-stage.py
│ ├── config.py
│ ├── create-review-quality-invitations.py
│ ├── create-withdraw-invitations.py
│ ├── discussion-stage.py
│ ├── download-review-details.py
│ ├── email-pc-members.py
│ ├── email-spc-members.py
│ ├── enable-comments.py
│ ├── enable-decisions.py
│ ├── get-pdfs.py
│ ├── init.py
│ ├── invite-pc.py
│ ├── invite-spc.py
│ ├── post-submissions-stage.py
│ ├── reassign.py
│ ├── recommendation-stage.py
│ ├── register-pc-spc.py
│ ├── review-assignment-stage.py
│ └── update-comments.py
├── cv-foundation.org
├── BNWM-landing-webfield.js
├── CVPR
│ ├── 2017
│ │ └── BNMW
│ │ │ ├── process
│ │ │ ├── commentProcess.js
│ │ │ ├── cvprdata.js
│ │ │ ├── reviewProcess.js
│ │ │ └── submissionProcess.template
│ │ │ ├── python
│ │ │ ├── cvprdata.py
│ │ │ └── superuser-init.py
│ │ │ └── webfield
│ │ │ └── cvpr2017_webfield.js
│ └── 2019
│ │ └── Conference
│ │ └── python
│ │ ├── __init__.py
│ │ ├── create_conference_data.py
│ │ ├── cvpr2019.py
│ │ ├── generate_match_export.py
│ │ └── setup_match_inputs.py
└── ECCV
│ └── 2018
│ ├── Conference
│ └── python
│ │ ├── cmt-dump.py
│ │ ├── download-author-profiles.py
│ │ ├── download-profiles.py
│ │ ├── download-score-maps-2nd-areachair.py
│ │ ├── download-score-maps.py
│ │ ├── import-researcher.py
│ │ ├── import-reviewers.py
│ │ ├── import_user.py
│ │ ├── match-areachairs.py
│ │ ├── match-reviewers.py
│ │ ├── setup-conference.py
│ │ ├── setup-matching.py
│ │ ├── setup-metadata-acs2.py
│ │ ├── setup-metadata-reviewers.py
│ │ ├── setup-metadata.py
│ │ ├── submit-papers.py
│ │ ├── upload-areachairs.py
│ │ └── upload-reviewers.py
│ └── Demo
│ ├── python
│ ├── generate-metadata.py
│ ├── import-researcher.py
│ ├── import_user.py
│ ├── precreate-profiles.py
│ ├── setup-demo.py
│ └── submit-papers.py
│ ├── run-demo.sh
│ └── webfield
│ └── webfield.js
├── eswc-conferences.org
└── ESWC
│ └── 2019
│ └── Workshop
│ └── KGB
│ └── python
│ ├── assign-reviewers.py
│ ├── config.py
│ ├── create-review-invitations.py
│ ├── get-submissions.py
│ └── init.py
├── futuredata.stanford.edu
├── python
│ └── superuser-init.py
└── webfield
│ └── futuredata_webfield.html
├── gamesec-conf.org
└── GameSec
│ └── 2019
│ └── Conference
│ └── python
│ ├── config.py
│ └── init.py
├── icaps-conference.org
└── ICAPS
│ └── 2019
│ └── Workshop
│ ├── HSDIP
│ └── python
│ │ ├── config.py
│ │ ├── get-submissions.py
│ │ ├── init_conference.py
│ │ └── post-submission-stage-1.py
│ ├── Hierarchical_Planning
│ └── python
│ │ ├── config.py
│ │ └── init.py
│ ├── KEPS
│ └── python
│ │ ├── config.py
│ │ ├── get-submissions.py
│ │ ├── init.py
│ │ ├── invite_reviewers.py
│ │ └── post-submission-stage-1.py
│ ├── SPARK
│ └── python
│ │ ├── config.py
│ │ └── init.py
│ ├── VRDIP
│ └── python
│ │ ├── config.py
│ │ └── init.py
│ ├── WIPC
│ └── python
│ │ ├── config.py
│ │ └── init.py
│ └── XAIP
│ └── python
│ ├── config.py
│ └── init.py
├── informatik.uni-rostock.de
└── Informatik_Rostock
│ └── Ubiquitous_Computing
│ └── 2017
│ ├── process
│ ├── commentProcess.js
│ ├── officialReviewProcess.js
│ └── submissionProcess.template
│ ├── python
│ ├── admin-init.py
│ ├── config.py
│ ├── create-comment-invite.py
│ ├── create-revision-invite.py
│ └── superuser-init.py
│ └── webfield
│ └── conf.js
├── iscb.org
└── ISMB
│ └── 2019
│ ├── log.ipynb
│ ├── python
│ ├── config.py
│ └── functions.py
│ └── webfield
│ └── homepage.js
├── learningtheory.org
└── COLT
│ └── 2019
│ ├── README.md
│ ├── process
│ ├── commentProcess.js
│ ├── officialReviewProcess.js
│ ├── recruitReviewersProcess.js
│ └── submissionProcess.js
│ ├── python
│ ├── allocate-reviewers-job.py
│ ├── assign-program-committee.py
│ ├── assign.py
│ ├── bidding-stage.py
│ ├── config.py
│ ├── create-comment-invitations.py
│ ├── create-rebuttal-invitation-job.py
│ ├── create-stoc-review-invitations.py
│ ├── email-program-committee-sample.py
│ ├── init.py
│ ├── move-pc-members-to-submitted-job.py
│ ├── notify-decisions.py
│ ├── post-submission-stage.py
│ ├── rebuttal-phase.py
│ ├── setup-assignment.py
│ ├── subreviewer-discussion.py
│ └── update-official-review-invi.py
│ └── webfield
│ ├── authorWebfield.js
│ ├── bidWebfield.js
│ ├── homepage.js
│ ├── programChairWebfield.js
│ ├── programCommitteeWebfield_bidding-stage.js
│ ├── programCommitteeWebfield_init.js
│ └── recruitResponseWebfield.js
├── machineintelligence.cc
└── MIC
│ └── 2018
│ ├── Abstract
│ ├── process
│ │ ├── commentProcess.js
│ │ ├── officialReviewProcess.js
│ │ └── submissionProcess.js
│ └── python
│ │ └── config.py
│ ├── Conference
│ ├── process
│ │ ├── commentProcess.js
│ │ ├── officialReviewProcess.js
│ │ └── submissionProcess.js
│ └── python
│ │ └── config.py
│ ├── python
│ └── init_conference.py
│ └── webfield
│ ├── conferenceWebfield.template
│ └── mic2018_webfield.js
├── reproducibility-challenge.github.io
└── Reproducibility_Challenge
│ └── NeurIPS
│ └── 2019
│ ├── process
│ ├── claimProcess.py
│ ├── commentProcess.py
│ └── reportProcess.py
│ ├── python
│ ├── comment_notification.py
│ ├── create_neurips_papers.py
│ ├── notify.py
│ ├── post_claims.py
│ └── setup.py
│ └── webfield
│ ├── authorWebfield.js
│ ├── conferenceWebfield.js
│ ├── landingWebfield.js
│ └── pcWebfield.js
├── roboticsfoundation.org
└── RSS
│ ├── 2017
│ └── RCW_Workshop
│ │ ├── process
│ │ ├── commentProcess.js
│ │ ├── officialReviewPosterProcess.js
│ │ ├── officialReviewProceedingsProcess.js
│ │ ├── officialReviewProcess.js
│ │ └── submissionProcess.template
│ │ ├── python
│ │ ├── assign-reviewers.py
│ │ ├── create-invitations.py
│ │ ├── email-reviewers.py
│ │ ├── freeze-submissions.py
│ │ ├── rssdata.py
│ │ └── superuser-init.py
│ │ └── webfield
│ │ ├── rss2017_webfield.js
│ │ ├── rss2017poster_webfield.js
│ │ └── rss2017proceedings_webfield.js
│ └── 2019
│ └── python
│ ├── invite-area-chairs.py
│ └── invite-reviewers.py
├── swsa.semanticweb.org
└── ISWC
│ ├── 2017
│ └── DeSemWeb
│ │ ├── admin_notes.txt
│ │ ├── process
│ │ ├── commentProcess.js
│ │ ├── reviewProcess.js
│ │ └── submissionProcess.template
│ │ ├── python
│ │ ├── admin-init.py
│ │ ├── assign-reviewer.py
│ │ ├── config.py
│ │ ├── create-groups.py
│ │ └── create-invitations.py
│ │ └── webfield
│ │ └── conf.html
│ ├── 2018
│ └── DeSemWeb
│ │ ├── process
│ │ ├── commentProcess.js
│ │ ├── officialReviewProcess.js
│ │ └── submissionProcess.js
│ │ ├── python
│ │ ├── assign-reviewers.py
│ │ ├── create-review-invitations.py
│ │ └── init-submissions.py
│ │ └── webfield
│ │ └── conferenceWebfield.js
│ ├── 2019
│ └── Workshop
│ │ └── DeSemWeb
│ │ └── python
│ │ ├── config.py
│ │ └── init.py
│ └── ISWC-landing-webfield.js
├── thecvf.com
└── ECCV
│ └── 2020
│ └── Conference
│ └── python
│ ├── calc_missing_reviews.py
│ ├── camera-ready-instructions.py
│ ├── combine-scores.py
│ ├── emergency_reviews.py
│ ├── get-iclr-reviewers.py
│ ├── get_assignment_details.py
│ ├── post-custom-load-edges.py
│ ├── recruit-area-chairs.py
│ ├── recruit-reviewers.py
│ ├── recruit-suggested-reviewers.py
│ ├── reviewer-rankings.py
│ ├── secondary_ACs.py
│ ├── stages.py
│ ├── tpms-dump.py
│ └── tpms-get-pdfs.py
├── virtual
└── python
│ └── setup.py
└── vivoconference.org
└── VIVO
└── 2019
└── Conference
└── python
├── config.py
└── init_conference.py
/.gitignore:
--------------------------------------------------------------------------------
1 | *.sw?
2 | node_modules/*
3 | .DS_Store
4 | npm-debug.log
5 | *.pyc
6 | *.ipynb
7 | !./tutorial/*.ipynb
8 | */.ipynb_checkpoints
9 | *.csv
10 | *.log
11 | *.xlsx
12 | *.txt
13 | *.docx
14 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "python.pythonPath": "/usr/local/bin/python3"
3 | }
--------------------------------------------------------------------------------
/admin/README.md:
--------------------------------------------------------------------------------
1 | # Admin workflow
2 | To kick off a conference, the OpenReview superuser should:
3 | - Create a conference directory under /venues (e.g. venues/MyConference.org/2018)
4 | - Copy the file /admin/conference-template/config.properties and fill it in with conference-specific variables. Then save it in the conference directory.
5 | - Run openreview-scripts/admin/superuser-init.py (see comments in that file for details)
6 |
7 | Example:
8 |
9 | ```
10 | >> superuser-init.py --venue myconf.org/MYCONF/2017
11 | ```
12 |
13 | `superuser-init.py` will automatically look for a file called config.properties in the directory specified by the `--venue` argument. You can specify a .properties file by passing it into the `--config` argument.
14 |
15 | The script will generate a python script called `python/admin-init.py` in the conference's directory. This is used to initiate the conference.
16 |
--------------------------------------------------------------------------------
/venues/ACM.org/ACM-landing-webfield.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
Association for Computing Machinery
10 |
12 |
13 |
14 |
15 |
16 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/venues/ACM.org/SIGIR/Badging/process/decisionNotification.js:
--------------------------------------------------------------------------------
1 | function() {
2 | var or3client = lib.or3client;
3 | console.log('Tag process');
4 |
5 | var SHORT_PHRASE = 'ACM SIGIR Badging';
6 |
7 | var tagsP = or3client.or3request(or3client.tagsUrl + '?forum=' + note.forum, {}, 'GET', token)
8 | .then(result => result.tags.map(tagItem => tagItem.tag));
9 |
10 | var forumNotesP = or3client.or3request(or3client.notesUrl + '?id=' + note.forum, {}, 'GET', token);
11 |
12 | Promise.all([
13 | forumNotesP,
14 | tagsP
15 | ])
16 | .then(result => {
17 | var forumNote = result[0].notes[0];
18 | var assignedBadges = result[1];
19 | var authorMail;
20 | var authorMail = {
21 | groups: forumNote.content.authorids,
22 | subject: '[' + SHORT_PHRASE + '] A new badge has been posted on your submission. Title : "' + forumNote.content.title + '"',
23 | message: 'Your submission to ' + SHORT_PHRASE + ' has received a new badge.\n\nSubmission title: ' + forumNote.content.title +
24 | '\n\nRequested Badges: ' + forumNote.content["requested badges"].join(', ') + '\n\nAssigned Badges: ' + assignedBadges.join(', ')
25 | };
26 | return or3client.or3request(or3client.mailUrl, authorMail, 'POST', token);
27 | })
28 | .then(result => done())
29 | .catch(error => done(error));
30 | return true;
31 | }
--------------------------------------------------------------------------------
/venues/ACM.org/SIGIR/Badging/python/config.py:
--------------------------------------------------------------------------------
1 | '''
2 | ACM SIGIR Badging demo configuration
3 | https://acm.org
4 | '''
5 | import openreview
6 |
7 | def get_conference(client):
8 |
9 | builder = openreview.conference.ConferenceBuilder(client)
10 |
11 | builder.set_conference_id('ACM.org/SIGIR/Badging')
12 | builder.set_conference_name('ACM - Special Interests Group on Information Retrieva')
13 | builder.set_conference_short_name('ACM Badging')
14 | builder.set_homepage_header({
15 | 'title': 'ACM SIGIR Badging',
16 | 'subtitle': 'ACM - Special Interests Group on Information Retrieval',
17 | 'date': 'Continuous process',
18 | 'website': 'http://sigir.org/',
19 | 'location': 'Global',
20 | 'instructions': '
Questions or Concerns
\
21 |
Please contact the OpenReview support team at \
22 | info@openreview.net with any questions or concerns about the OpenReview platform.
\
23 |
'
24 | })
25 | builder.set_homepage_layout('simple')
26 | builder.set_submissions_public(True)
27 | builder.set_conference_program_chairs_name('Chairs')
28 | return builder.get_result()
29 |
--------------------------------------------------------------------------------
/venues/AKBC.ws/2013/js/superuser-reset.js:
--------------------------------------------------------------------------------
1 | //var counter = db.openreview_counters.byExample({'id':'AKBC.ws/2013/-/submission'}).toArray()[0]
2 | //db.openreview_counters.remove(counter._id)
3 |
4 | //also reset the counters for all the other invitations, not just submission
5 |
6 | var notes = db._query("FOR note IN openreview_notes FILTER CONTAINS(note.invitation, 'AKBC.ws/2013') RETURN note._id").toArray()
7 | for(i=0;i
done())
24 | .catch(error => done(error));
25 |
26 | return true;
27 | };
28 |
--------------------------------------------------------------------------------
/venues/AKBC.ws/2019/Conference/process/recruitReviewersProcess.js:
--------------------------------------------------------------------------------
1 | function() {
2 | var or3client = lib.or3client;
3 |
4 | var CONFERENCE_ID = 'AKBC.ws/2019/Conference'
5 | var REVIEWERS_ID = CONFERENCE_ID + '/Reviewers'
6 | var REVIEWERS_DECLINED_ID = REVIEWERS_ID + '/Declined'
7 | var HASH_SEED = "2810398440804348173"
8 |
9 | var hashKey = or3client.createHash(note.content.email, HASH_SEED);
10 |
11 | if(hashKey == note.content.key) {
12 | if (note.content.response == 'Yes') {
13 | console.log("Invitation replied Yes")
14 | //if a user is in the declined group, remove them from that group and add them to the reviewers group
15 | or3client.removeGroupMember(REVIEWERS_DECLINED_ID, note.content.email, token)
16 | .then(result => or3client.addGroupMember(REVIEWERS_ID, note.content.email, token))
17 | .then(result => done())
18 | .catch(error => done(error));
19 | } else if (note.content.response == 'No'){
20 | console.log("Invitation replied No")
21 | //if a user is in the reviewers group, remove them from that group and add them to the reviewers-declined group
22 | or3client.removeGroupMember(REVIEWERS_ID, note.content.email, token)
23 | .then(result => or3client.addGroupMember(REVIEWERS_DECLINED_ID, note.content.email, token))
24 | .then(result => done())
25 | .catch(error => done(error));
26 | } else {
27 | done('Invalid response', note.content.response);
28 | }
29 | return true;
30 | } else {
31 | done('Invalid key', note.content.key);
32 | return false;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/venues/AKBC.ws/2019/Conference/process/registrationProcess.js:
--------------------------------------------------------------------------------
1 | function () {
2 | var or3client = lib.or3client;
3 |
4 | or3client.addInvitationNoninvitee(note.invitation, note.signatures[0], token)
5 | .then(result => done())
6 | .catch(error => done(error));
7 | return true;
8 | };
9 |
--------------------------------------------------------------------------------
/venues/AKBC.ws/2019/Conference/process/submissionProcess.js:
--------------------------------------------------------------------------------
1 | function() {
2 | var or3client = lib.or3client;
3 |
4 | var SHORT_PHRASE = 'AKBC 2019';
5 |
6 | var authorMail = {
7 | groups: note.content.authorids,
8 | subject: SHORT_PHRASE + ' has received your submission titled ' + note.content.title,
9 | message: 'Your submission to ' + SHORT_PHRASE + ' has been posted.\n\nTitle: ' + note.content.title + '\n\nAbstract: ' + note.content.abstract + '\n\nTo view your submission, click here: ' + baseUrl + '/forum?id=' + note.forum
10 | };
11 | or3client.or3request(or3client.mailUrl, authorMail, 'POST', token)
12 | .then(result => done())
13 | .catch(error => done(error));
14 | return true;
15 | };
16 |
--------------------------------------------------------------------------------
/venues/AKBC.ws/2019/Conference/process/withdrawProcess.js:
--------------------------------------------------------------------------------
1 | function(){
2 | var or3client = lib.or3client;
3 |
4 | var CONFERENCE_ID = 'AKBC.ws/2019/Conference';
5 | var SHORT_PHRASE = "AKBC 2019";
6 | var PAPER_AUTHORS = CONFERENCE_ID + '/Paper' + note.number + '/Authors';
7 |
8 | var forumNoteP = or3client.or3request(or3client.notesUrl + '?id=' + note.forum, {}, 'GET', token);
9 |
10 | forumNoteP.then(function(result) {
11 | var forumNote = result.notes[0];
12 | author_mail = {
13 | "groups": forumNote.content.authorids,
14 | "subject": "Your submission to " + SHORT_PHRASE + " has been withdrawn",
15 | "message": "Your submission, \""+ forumNote.content.title +"\", has been withdrawn by one of the authors. \
16 | To view your withdrawn submission, click here: " + baseUrl + "/forum?id=" + forumNote.forum + "\n\n\
17 | Per AKBC policy, the identity of all authors will be revealed to the public. \
18 | The record of this submission (including all existing reviews and comments) \
19 | will remain publicly accessible on OpenReview.\n\nIf you believe that this withdrawal was an error, please contact info@openreview.net as soon as possible."
20 | };
21 | return or3client.or3request(or3client.mailUrl, author_mail, 'POST', token);
22 | })
23 | .then(result => done())
24 | .catch(error => done(error));
25 |
26 | return true;
27 | };
28 |
--------------------------------------------------------------------------------
/venues/AKBC.ws/2019/Conference/python/post-submissions-stage-1.py:
--------------------------------------------------------------------------------
1 | '''
2 | Post-submission Stage 1 (Midnight Nov 16)
3 |
4 | - Author permission to edit papers is revoked.
5 | - AKBC 2019 homepage is updated to show anonymous submissions.
6 |
7 | '''
8 |
9 | import openreview
10 | import akbc19 as conference_config
11 | import notes
12 | import groups
13 | import invitations
14 | import argparse
15 |
16 | if __name__ == '__main__':
17 | ## Argument handling
18 | parser = argparse.ArgumentParser()
19 | parser.add_argument('--baseurl', help="base url")
20 | parser.add_argument('--username')
21 | parser.add_argument('--password')
22 | args = parser.parse_args()
23 |
24 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
25 |
26 | original_notes = openreview.tools.iterget_notes(client, invitation=conference_config.submission_inv.id)
27 |
28 | for original in original_notes:
29 | notes.freeze_and_post(client, original)
30 | print('freezing note {}'.format(original.id))
31 |
32 | groups.update_homepage(client, '../webfield/homepagePostSubmission.js')
33 |
--------------------------------------------------------------------------------
/venues/AKBC.ws/AKBC-landing-webfield.js:
--------------------------------------------------------------------------------
1 | var GROUP_ID = 'AKBC.ws';
2 | var HEADER = {
3 | title: 'Automated Knowledge Base Construction',
4 | description: ''
5 | };
6 | var VENUE_LINKS = [
7 | { url: '/group?id=AKBC.ws/2019/Conference', name: 'AKBC 2019 Conference Track' },
8 | { url: '/group?id=AKBC.ws/2013', name: 'AKBC 2013 Workshop Track' }
9 | ];
10 |
11 | Webfield.ui.setup('#group-container', GROUP_ID);
12 |
13 | Webfield.ui.header(HEADER.title, HEADER.description, { underline: true });
14 |
15 | Webfield.ui.linksList(VENUE_LINKS);
16 |
17 | OpenBanner.welcome();
18 |
--------------------------------------------------------------------------------
/venues/DBLP.org/python/config.py:
--------------------------------------------------------------------------------
1 | BASE = 'DBLP.org'
2 | GROUP = BASE
3 | INVITATION = BASE + '/-/upload'
--------------------------------------------------------------------------------
/venues/Demo/2019/Workshop/DoubleBlind/python/init.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import argparse
4 | import openreview
5 | from openreview import tools
6 | from openreview import invitations
7 | import config
8 | import datetime
9 |
10 | """
11 | OPTIONAL SCRIPT ARGUMENTS
12 |
13 | baseurl - the URL of the OpenReview server to connect to (live site: https://openreview.net)
14 | username - the email address of the logging in user
15 | password - the user's password
16 | """
17 |
18 | parser = argparse.ArgumentParser()
19 | parser.add_argument('--baseurl', help="base URL")
20 | parser.add_argument('--username')
21 | parser.add_argument('--password')
22 |
23 | args = parser.parse_args()
24 |
25 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
26 | print('connecting to {0}'.format(client.baseurl))
27 |
28 | conference = config.get_conference(client)
29 | conference.open_submissions(due_date = datetime.datetime(2019, 7, 1, 23, 59))
30 |
--------------------------------------------------------------------------------
/venues/ECCV2016.org/BNMW/eccv_add_verdictInvitations.js:
--------------------------------------------------------------------------------
1 | var or3client = require('../../or3/or3client');
2 | var fs = require('fs');
3 | var _ = require('lodash');
4 |
5 | var grpUrl = 'http://localhost:3000/groups';
6 | var loginUrl = 'http://localhost:3000/login';
7 | var regUrl = 'http://localhost:3000/register';
8 | var inviteUrl = 'http://localhost:3000/invitations';
9 | var mailUrl = 'http://localhost:3000/mail';
10 | var notesUrl = 'http://localhost:3000/notes';
11 |
12 | var headers = { 'User-Agent': 'test-create-script' }; //what are these?
13 |
14 | var rootUser = {
15 | id:'OpenReview.net',
16 | password:''
17 | }
18 |
19 | or3client.getUserTokenP(rootUser).then(function(token){
20 | or3client.or3request(notesUrl+'?invitation=eccv.org/2016/workshop/-/submission', {}, 'GET', token)
21 | .then( function(result){
22 | console.log(result);
23 | return or3client.or3request(inviteUrl, or3client.createVerdictInvitation(result.notes[0].id, 'eccv.org/2016/workshop', ['~ECCV_Program_Chairs']), 'POST', token)
24 | })
25 | .then(result=>console.log("finished:",result))
26 | });
--------------------------------------------------------------------------------
/venues/ECCV2016.org/BNMW/process/commentProcess.js:
--------------------------------------------------------------------------------
1 | function(){
2 | var or3client = lib.or3client;
3 |
4 | var origNote = or3client.or3request(or3client.notesUrl+'?id='+note.forum, {}, 'GET', token);
5 |
6 | var conference = or3client.prettyConferenceName(note);
7 |
8 | origNote.then(function(result){
9 | var mail = {
10 | "groups": result.notes[0].content.authorids,
11 | "subject": "Comment on your submission to " + conference + ": \"" + note.content.title + "\".",
12 | "message": "Your submission to "+ conference +" has received a comment.\n\nTitle: "+note.content.title+"\n\nComment: "+note.content.comment+"\n\nTo view the comment, click here: "+baseUrl+"/forum?id=" + note.forum
13 | };
14 | return or3client.or3request( or3client.mailUrl, mail, 'POST', token );
15 |
16 | })
17 | .then(result => done())
18 | .catch(error => done(error));
19 |
20 | return true;
21 | };
--------------------------------------------------------------------------------
/venues/ECCV2016.org/BNMW/process/reviewProcess.js:
--------------------------------------------------------------------------------
1 | function(){
2 | var or3client = lib.or3client;
3 | var origNote = or3client.or3request(or3client.notesUrl+'?id='+note.forum, {}, 'GET', token);
4 |
5 | var conference = or3client.prettyConferenceName(note);
6 |
7 | origNote.then(function(result){
8 | var mail = {
9 | "groups": result.notes[0].content.authorids,
10 | "subject": "Review of your submission to " + conference + ": \"" + note.content.title + "\".",
11 | "message": "Your submission to "+ conference +" has received a review.\n\nTitle: "+note.content.title+"\n\nReview: "+note.content.review+"\n\nTo view the review, click here: "+baseUrl+"/forum?id=" + note.forum
12 | };
13 | return or3client.or3request( or3client.mailUrl, mail, 'POST', token )
14 |
15 | })
16 | .then(result => or3client.fulfillInvitation(invitation, note, token))
17 | .then(result => done())
18 | .catch(error => done(error));
19 |
20 | return true;
21 | };
--------------------------------------------------------------------------------
/venues/ECCV2016.org/BNMW/python/setup-groups.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openreview/openreview-scripts/e2d3e360759a02243222b853d1a501fc6cd862a0/venues/ECCV2016.org/BNMW/python/setup-groups.py
--------------------------------------------------------------------------------
/venues/ICLR.cc/2013/js/superuser-reset.js:
--------------------------------------------------------------------------------
1 | var counter = db.openreview_counters.byExample({'id':'ICLR.cc/2013/conference/-/submission'}).toArray()[0]
2 | db.openreview_counters.remove(counter._id)
3 |
4 | //also reset the counters for all the other invitations, not just submission
5 |
6 | var notes = db._query("FOR note IN openreview_notes FILTER CONTAINS(note.invitation, 'ICLR.cc/2013') RETURN note._id").toArray()
7 | for(i=0;i done())
25 | .catch(error=>done(error));
26 |
27 | return true;
28 | };
29 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2017/conference/process/ratingProcess.js:
--------------------------------------------------------------------------------
1 | function(){
2 | var or3client = lib.or3client;
3 | or3client.addInvitationNoninvitee(note.invitation, note.signatures[0],token)
4 | .then(result => done())
5 | .catch(error => done(error));
6 | return true;
7 | };
8 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2017/conference/process/verdictProcess.js:
--------------------------------------------------------------------------------
1 | function(){
2 | var or3client = lib.or3client;
3 | return true;
4 | };
--------------------------------------------------------------------------------
/venues/ICLR.cc/2017/conference/python/update-invitations.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | ## Import statements
4 | import argparse
5 | import csv
6 | import sys
7 | from openreview import *
8 |
9 | ## Handle the arguments
10 | parser = argparse.ArgumentParser()
11 | parser.add_argument('invitation', help="invitation to update")
12 | parser.add_argument('--process', help="process file")
13 | parser.add_argument('--webfield', help="html file that will replace the current ICLR 2017 homepage")
14 | parser.add_argument('--baseurl', help="base URL")
15 | parser.add_argument('--username')
16 | parser.add_argument('--password')
17 |
18 | args = parser.parse_args()
19 |
20 | ## Initialize the client library with username and password
21 | if args.username!=None and args.password!=None:
22 | openreview = Client(baseurl=args.baseurl, username=args.username, password=args.password)
23 | else:
24 | openreview = Client(baseurl=args.baseurl)
25 |
26 |
27 | invitation = openreview.get_invitation(args.invitation)
28 |
29 | if type(invitation) == Invitation:
30 |
31 | if(args.process):
32 | with open(args.process) as f:
33 | invitation.process = f.read()
34 |
35 | if(args.webfield):
36 | with open(args.webfield) as f:
37 | invitation.web = f.read()
38 |
39 | updated_invitation = openreview.post_invitation(invitation)
40 | print "Updated invitation",updated_invitation.to_json().get('id')
41 | else:
42 | print "Invitation not found"
43 |
44 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2017/conference/webfield/iclr2017_webfield.js:
--------------------------------------------------------------------------------
1 | var GROUP_ID = 'ICLR.cc/2017';
2 | var HEADER = {
3 | title: 'International Conference on Learning Representations 2017',
4 | description: 'Welcome to OpenReview for ICLR 2017. Please select a track below.'
5 | };
6 | var VENUE_LINKS = [
7 | { url: '/group?id=ICLR.cc/2017/conference', name: 'ICLR 2017 Conference Track' },
8 | { url: '/group?id=ICLR.cc/2017/workshop', name: 'ICLR 2017 Workshop Track' }
9 | ];
10 |
11 | Webfield.ui.setup('#group-container', GROUP_ID);
12 |
13 | Webfield.ui.header(HEADER.title, HEADER.description, { underline: true });
14 |
15 | Webfield.ui.linksList(VENUE_LINKS);
16 |
17 | OpenBanner.welcome();
18 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2017/js/superuser-reset.js:
--------------------------------------------------------------------------------
1 | var counter = db.openreview_counters.byExample({'id':'ICLR.cc/2017/conference/-/submission'}).toArray()[0]
2 | db.openreview_counters.remove(counter._id)
3 |
4 | //also reset the counters for all the other invitations, not just submission
5 |
6 | var notes = db._query("FOR note IN openreview_notes FILTER CONTAINS(note.invitation, 'ICLR.cc/2017') RETURN note._id").toArray()
7 | for(i=0;i or3client.addInvitationNoninvitee(note.invitation, note.signatures[0], token))
23 | .then(result => done())
24 | .catch(error => done(error));
25 |
26 | return true;
27 | };
28 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2017/workshop/process/openReviewProcess_workshop.js:
--------------------------------------------------------------------------------
1 | function(){
2 | var or3client = lib.or3client;
3 |
4 | var origNote = or3client.or3request(or3client.notesUrl+'?id='+note.forum, {}, 'GET', token);
5 |
6 | origNote.then(function(result){
7 | var forum = result.notes[0];
8 | var note_number = forum.number;
9 |
10 | var reviewers = ['ICLR.cc/2017/workshop/paper'+note_number+'/reviewers'];
11 | var authors = forum.content.authorids;
12 |
13 | var author_mail = {
14 | "groups": authors,
15 | "subject": "Review of your submission to ICLR 2017 Workshop: \"" + forum.content.title + "\"",
16 | "message": "Your submission to ICLR 2017 Workshop has received a public review.\n\nTitle: "+note.content.title+"\n\nReview: "+note.content.review+"\n\nTo view the review, click here: "+baseUrl+"/forum?id=" + note.forum
17 | };
18 |
19 | return or3client.or3request(or3client.mailUrl, author_mail, 'POST', token);
20 |
21 | })
22 | .then(result => or3client.addInvitationNoninvitee(note.invitation, note.signatures[0], token))
23 | .then(result => done())
24 | .catch(error => done(error));
25 |
26 | return true;
27 | };
28 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2018/Conference/README.md:
--------------------------------------------------------------------------------
1 | Properties of ICLR 2018:
2 |
3 | - Double-blind reviewing: Authors are anonymous until after the reviewing process, when they will be revealed.
4 | - Open comments: anyone can comment on submissions.
5 | - Reviewer bidding: Sign up reviewers may want to bid for papers instead of being assigned. This allows for some interesting opportunities (if no one bids, maybe a paper won't be reviewed / considered).
6 | - Rolling submissions: We may consider a submission window of months, in which papers can be reviewed anytime (i.e., each paper sets its own deadlines / review process).
7 |
8 | Description of files and scripts:
9 |
10 | - `config.py`: contains constants and configuration parameters, to be used by other scripts.
11 | - `admin-init.py`: Initializes the conference. Runnable by an ICLR administrator or the OpenReview super user.
12 | - `toggle-invitation.py`: can be used to enable or disable most invitations in the conference.
13 | -
14 |
15 | Notes for administrators:
16 | - Many of the invitations in `config.py` have an empty `invitees` field. These invitations must be enabled by the `toggle-invitation.py` script.
17 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2018/Conference/params.json:
--------------------------------------------------------------------------------
1 | {
2 | "conference": "ICLR.cc/2018/Conference",
3 | "conference_title": "ICLR 2018 Conference Track",
4 | "duedate_input": "27/10/2017",
5 | "submission_name": "Submission",
6 | "url": "http://www.iclr.cc",
7 | "conference_phrase": "ICLR 2018",
8 | "duetime_input": "23:59",
9 | "human_duedate": "5:00pm Eastern Standard Time, October 27, 2017",
10 | "conference_date": "April 30 - May 3, 2018",
11 | "conference_subtitle": "6th International Conference on Learning Representations",
12 | "conference_location": "Vancouver Convention Center, Vancouver, BC, Canada"
13 | }
14 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2018/Conference/process/addRevisionProcess.js:
--------------------------------------------------------------------------------
1 | function() {
2 | var or3client = lib.or3client;
3 |
4 | var number = note.invitation.split('/')[4].split('Paper')[1];
5 |
6 | var CONF = 'ICLR.cc/2018/Conference';
7 |
8 | or3client.or3request(or3client.notesUrl + '?forum=' + note.forum, {}, 'GET', token)
9 | .then(result => result.notes.filter(n => n.forum === n.id)[0])
10 | .then(originalNote => originalNote.overwriting[0])
11 | .then(overwritingId => {
12 | var reviewerMail = {
13 | "groups": ['ICLR.cc/2018/Conference/Paper' + number + '/Reviewers'],
14 | "subject": "Revision posted to a paper that you reviewed",
15 | "message": "A paper that you reviewed has been revised. \n\nTo view the paper, click here: " + baseUrl + "/forum?id=" + overwritingId + "\n\nYou can see the changes made at " + baseUrl + "/revisions?id=" + overwritingId
16 | };
17 | return or3client.or3request(or3client.mailUrl, reviewerMail, 'POST', token)
18 | })
19 | .then(result => done())
20 | .catch(error => done(error));
21 | return true;
22 | }
23 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2018/Conference/process/metaReviewProcess.js:
--------------------------------------------------------------------------------
1 | //EDIT ME
2 |
3 | function(){
4 | var or3client = lib.or3client;
5 |
6 | var origNote = or3client.or3request(or3client.notesUrl+'?id='+note.forum, {}, 'GET', token);
7 | var list = note.invitation.replace(/_/g,' ').split('/');
8 | list.splice(list.indexOf('-',1));
9 | var conference = list.join(' ');
10 |
11 |
12 | var programchairs = ['ICLR.cc/2018/Conference/Program_Chairs'];
13 |
14 | origNote.then(function(result){
15 | var forum = result.notes[0];
16 |
17 | var pc_mail = {
18 | "groups": programchairs,
19 | "subject": "Meta-review by area chair posted: "+ "\"" + forum.content.title + "\".",
20 | "message": "A paper submission to "+ conference +" has received a meta-review by an area chair.\n\nTitle: "+note.content.title+"\n\nMeta-review: "+note.content.metareview+"\n\nTo view the meta-review, click here: "+baseUrl+"/forum?id=" + note.forum
21 | };
22 |
23 | return or3client.or3request( or3client.mailUrl, pc_mail, 'POST', token );
24 | })
25 | .then(or3client.addInvitationNoninvitee(note.invitation, note.signatures[0],token))
26 | .then(result => done())
27 | .catch(error=>done(error));
28 |
29 | return true;
30 | };
31 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2018/Conference/process/officialReviewProcess.js:
--------------------------------------------------------------------------------
1 | //EDIT ME
2 |
3 | function(){
4 | var or3client = lib.or3client;
5 |
6 | var origNote = or3client.or3request(or3client.notesUrl+'?id='+note.forum, {}, 'GET', token);
7 | var list = note.invitation.replace(/_/g,' ').split('/');
8 | list.splice(list.indexOf('-',1));
9 | var conference = list.join(' ');
10 |
11 | origNote.then(function(result) {
12 | var forum = result.notes[0];
13 | var note_number = forum.number;
14 |
15 | var reviewers = ['ICLR.cc/2018/Conference/Paper' + note_number + '/Reviewers'];
16 | var areachairs = ['ICLR.cc/2018/Conference/Paper' + note_number + '/Area_Chair'];
17 | var authors = forum.content.authorids;
18 |
19 | var areachair_mail = {
20 | "groups": areachairs,
21 | "subject": "Review posted to your assigned paper: \"" + forum.content.title + "\"",
22 | "message": "A submission to " + conference + ", for which you are an official area chair, has received an official review. \n\nTitle: " + note.content.title + "\n\nComment: " + note.content.review + "\n\nTo view the review, click here: " + baseUrl + "/forum?id=" + note.forum
23 | };
24 | var areachairMailP = or3client.or3request( or3client.mailUrl, areachair_mail, 'POST', token );
25 |
26 | return areachairMailP;
27 | })
28 | .then(result => or3client.addInvitationNoninvitee(note.invitation, note.signatures[0], token))
29 | .then(result => done())
30 | .catch(error => done(error));
31 | return true;
32 | };
33 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2018/Conference/process/reviewRevisionProcess.js:
--------------------------------------------------------------------------------
1 | function() {
2 | var or3client = lib.or3client;
3 |
4 | var number = note.invitation.split('/')[5].split('Paper')[1];
5 |
6 | var CONF = 'ICLR.cc/2018/Conference';
7 |
8 | console.log('number: '+ number);
9 |
10 | var reviewerMail = {
11 | "groups": ['ICLR.cc/2018/Conference/Paper' + number + '/Authors'],
12 | "subject": "Revision posted to a review of your paper",
13 | "message": "A review of your paper has been revised. \n\nTo view the review, click here: " + baseUrl + "/forum?id=" + note.forum + "¬eId=" + note.id + "\n\nYou can see the changes made at " + baseUrl + "/revisions?id=" + note.id
14 | };
15 |
16 | or3client.or3request(or3client.mailUrl, reviewerMail, 'POST', token)
17 | .then(result => done())
18 | .catch(error => done(error));
19 | return true;
20 | }
21 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2018/Conference/process/withdrawProcess_delete.js:
--------------------------------------------------------------------------------
1 | function() {
2 | var or3client = lib.or3client;
3 |
4 | var CONF = 'ICLR.cc/2018/Conference';
5 | var BLIND_INVITATION = CONF + '/-/Blind_Submission';
6 |
7 | or3client.or3request(or3client.notesUrl + '?id=' + note.referent, {}, 'GET', token)
8 | .then(result => {
9 | if (result.notes.length > 0){
10 | var blindedNote = result.notes[0];
11 |
12 | var milliseconds = (new Date).getTime();
13 | blindedNote.ddate = milliseconds
14 | return or3client.or3request(or3client.notesUrl, blindedNote, 'POST', token);
15 | } else {
16 | return Promise.reject('No notes with the id ' + note.referent + ' were found');
17 | }
18 | })
19 | .then(result => or3client.or3request(or3client.notesUrl + '?id=' + result.original, {}, 'GET', token))
20 | .then(result => {
21 | if (result.notes.length > 0){
22 | var originalNote = result.notes[0];
23 |
24 | var milliseconds = (new Date).getTime();
25 | originalNote.ddate = milliseconds;
26 | originalNote.signatures = [CONF];
27 | return or3client.or3request(or3client.notesUrl, originalNote, 'POST', token);
28 | } else {
29 | return Promise.reject('No notes with the id ' + note.original + ' were found');
30 | }
31 | })
32 | .then(result => done())
33 | .catch(error => done(error));
34 | return true;
35 | }
36 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2018/Conference/process/withdrawProcess_reveal.js:
--------------------------------------------------------------------------------
1 | function() {
2 | var or3client = lib.or3client;
3 |
4 | var CONF = 'ICLR.cc/2018/Conference';
5 | var BLIND_INVITATION = CONF + '/-/Blind_Submission';
6 | var WITHDRAWN_INVITATION = CONF + '/-/Withdrawn_Submission';
7 |
8 | or3client.or3request(or3client.notesUrl + '?id=' + note.referent, {}, 'GET', token)
9 | .then(result => {
10 | if(result.notes.length > 0){
11 | var blindedNote = result.notes[0];
12 |
13 | var milliseconds = (new Date).getTime();
14 | blindedNote.ddate = milliseconds
15 | return blindedNote;
16 | } else {
17 | return Promise.reject('No notes with the referent ' + note.referent + ' were found');
18 | }
19 | })
20 | .catch(error => done(error))
21 | .then(blindedNote => or3client.or3request(or3client.notesUrl, blindedNote, 'POST', token))
22 | .then(result => {
23 | console.log('Withdrawing note: ' + JSON.stringify(result));
24 | var withdrawn_submission = {
25 | original: result.original,
26 | invitation: WITHDRAWN_INVITATION,
27 | forum: null,
28 | parent: null,
29 | signatures: [CONF],
30 | writers: [CONF],
31 | readers: ['everyone'],
32 | content: {}
33 | }
34 | return or3client.or3request(or3client.notesUrl, withdrawn_submission, 'POST', token);
35 | })
36 | .then(result => done())
37 | .catch(error => done(error));
38 | return true;
39 | }
40 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2018/Conference/python/refresh-bibtex.py:
--------------------------------------------------------------------------------
1 | '''
2 |
3 | Iterates through the list of ICLR 2018 submissions and updates the bibtex field
4 | based on the most recent version.
5 |
6 | '''
7 |
8 | import argparse
9 | import openreview
10 | import config
11 |
12 | def get_bibtex(note):
13 | firstWord = note.content['title'].split(' ')[0].lower()
14 |
15 | return '''@unpublished{
16 | anonymous2018''' + firstWord + ''',
17 | title={''' + note.content['title'] + '''},
18 | author={Anonymous},
19 | journal={International Conference on Learning Representations},
20 | year={2018},
21 | url={https://openreview.net/forum?id=''' + note.id + '''},
22 | note={under review}
23 | }'''
24 |
25 | parser = argparse.ArgumentParser()
26 | parser.add_argument('--baseurl', help="base URL")
27 | parser.add_argument('--username')
28 | parser.add_argument('--password')
29 | args = parser.parse_args()
30 |
31 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
32 |
33 | submissions = client.get_notes(invitation=config.BLIND_SUBMISSION)
34 |
35 | for n in submissions:
36 | # a submission potentially has many references, but we want to change only
37 | # the "prime" reference, which has an ID equal to its referent.
38 | refs = client.get_references(referent=n.id)
39 | prime_ref = [x for x in refs if x.id == x.referent][0]
40 |
41 | prime_ref.content['_bibtex'] = get_bibtex(n)
42 | new_ref = client.post_note(prime_ref)
43 | print "updated {0}".format(new_ref.id)
44 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2018/Conference/python/regen-paperauthor-groups.py:
--------------------------------------------------------------------------------
1 | import openreview
2 | import config
3 | import csv
4 | import argparse
5 |
6 | ## Handle the arguments
7 | parser = argparse.ArgumentParser()
8 | parser.add_argument('--baseurl', help="base URL")
9 | parser.add_argument('--username')
10 | parser.add_argument('--password')
11 |
12 | args = parser.parse_args()
13 |
14 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
15 | print client.baseurl
16 |
17 | # repair author groups
18 | submissions = client.get_notes(invitation=config.SUBMISSION)
19 |
20 | for note in submissions:
21 |
22 | papergroup_id = 'ICLR.cc/2018/Conference/Paper{0}'.format(note.number)
23 | papergroup_params = {
24 | 'signatures': [config.CONF],
25 | 'writers': [config.CONF],
26 | 'members': [],
27 | 'readers': [config.CONF],
28 | 'signatories': []
29 | }
30 | new_papergroup = client.post_group(openreview.Group(papergroup_id, **papergroup_params))
31 |
32 | authorgroup_id = 'ICLR.cc/2018/Conference/Paper{0}/Authors'.format(note.number)
33 | authorgroup_params = {
34 | 'signatures': [config.CONF, '~Super_User1'],
35 | 'writers': [config.CONF, '~Super_User1'],
36 | 'members': note.content['authorids'] + note.signatures,
37 | 'readers': [config.CONF, config.PROGRAM_CHAIRS, authorgroup_id],
38 | 'signatories': [authorgroup_id]
39 | }
40 | new_group = client.post_group(openreview.Group(authorgroup_id, **authorgroup_params))
41 | print "posting new group ", new_group.id
42 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2018/Conference/webfield/groupWebField.js:
--------------------------------------------------------------------------------
1 | var GROUP_ID = 'ICLR.cc/2018';
2 | var HEADER = {
3 | title: 'International Conference on Learning Representations 2018',
4 | description: 'Welcome to OpenReview for ICLR 2018. Please select a track below'
5 | };
6 | var VENUE_LINKS = [
7 | { url: '/group?id=ICLR.cc/2018/Conference', name: 'ICLR 2018 Conference Track' },
8 | ];
9 |
10 | Webfield.ui.setup('#group-container', GROUP_ID);
11 |
12 | Webfield.ui.header(HEADER.title, HEADER.description, { underline: true });
13 |
14 | Webfield.ui.linksList(VENUE_LINKS);
15 |
16 | OpenBanner.welcome();
17 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2018/Workshop/process/officialReviewProcess.js:
--------------------------------------------------------------------------------
1 | //EDIT ME
2 |
3 | function(){
4 | var or3client = lib.or3client;
5 |
6 | var origNote = or3client.or3request(or3client.notesUrl+'?id='+note.forum, {}, 'GET', token);
7 | var list = note.invitation.replace(/_/g,' ').split('/');
8 | list.splice(list.indexOf('-',1));
9 | var conference = list.join(' ');
10 |
11 | or3client.addInvitationNoninvitee(note.invitation, note.signatures[0], token)
12 | .then(result => done())
13 | .catch(error => done(error));
14 | return true;
15 | };
16 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2018/Workshop/python/programchairs/assign-all-reviewers.py:
--------------------------------------------------------------------------------
1 | import importlib
2 | import openreview
3 | import argparse
4 | import csv
5 | assign = importlib.import_module('assign-reviewer').assign
6 |
7 | if __name__ == "__main__":
8 |
9 | ## Argument handling
10 | parser = argparse.ArgumentParser()
11 | parser.add_argument('-f','--file', required=True)
12 | parser.add_argument('--baseurl', help="base url")
13 | parser.add_argument('--username')
14 | parser.add_argument('--password')
15 |
16 | args = parser.parse_args()
17 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
18 | print "connecting to ", client.baseurl
19 |
20 | failed_assignments = []
21 |
22 | with open(args.file) as f:
23 | reader = csv.reader(f)
24 | reader.next()
25 | for row in reader:
26 | paper_number = row[0]
27 | email = row[1]
28 | status = assign(client, paper_number, reviewer_to_add=email)
29 | if status == False:
30 | failed_assignments.append((paper_number, email))
31 |
32 | print "the following assignments were aborted: "
33 | for number, email in failed_assignments:
34 | print number, email
35 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2018/Workshop/python/programchairs/get-pdfs.py:
--------------------------------------------------------------------------------
1 | import requests
2 | import os
3 |
4 | submissions_response = requests.get('https://openreview.net/notes?invitation=ICLR.cc/2018/Workshop/-/Submission', params={})
5 |
6 | if not os.path.exists('./pdfs'):
7 | os.makedirs('./pdfs')
8 |
9 | for n in submissions_response.json()['notes']:
10 | pdf_url = 'https://openreview.net{0}'.format(n['content']['pdf'])
11 | paper_id = n['number']
12 | print "retrieving Paper{0} at {1}".format(paper_id, pdf_url)
13 | pdf_response = requests.get(pdf_url, stream=True)
14 |
15 | with open('./pdfs/Paper{0}.pdf'.format(paper_id), 'wb') as f:
16 | f.write(pdf_response.content)
17 |
18 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2018/iclr18-landing-webfield.js:
--------------------------------------------------------------------------------
1 | var GROUP_ID = 'ICLR.cc/2018';
2 | var HEADER = {
3 | title: 'International Conference on Learning Representations 2018',
4 | description: 'Welcome to OpenReview for ICLR 2018. Please select a track below.'
5 | };
6 | var VENUE_LINKS = [
7 | { url: '/group?id=ICLR.cc/2018/Conference', name: 'ICLR 2018 Conference Track' },
8 | { url: '/group?id=ICLR.cc/2018/Workshop', name: 'ICLR 2018 Workshop Track' },
9 | ];
10 |
11 | Webfield.ui.setup('#group-container', GROUP_ID);
12 |
13 | Webfield.ui.header(HEADER.title, HEADER.description, { underline: true });
14 |
15 | Webfield.ui.linksList(VENUE_LINKS);
16 |
17 | OpenBanner.welcome();
18 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2019/Conference/data/ac-match-config.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "areachairs-1",
3 | "weights": {
4 | "bid_score": 1.0,
5 | "tpms_score": 1.0
6 | },
7 | "max_users": 1,
8 | "min_papers": 18,
9 | "max_papers": 25,
10 | "alternates": 5,
11 | "constraints": {},
12 | "config_invitation": "ICLR.cc/2019/Conference/-/Assignment_Configuration",
13 | "paper_invitation": "ICLR.cc/2019/Conference/-/Blind_Submission",
14 | "metadata_invitation": "ICLR.cc/2019/Conference/-/Paper_Metadata",
15 | "assignment_invitation": "ICLR.cc/2019/Conference/-/Paper_Assignment",
16 | "match_group": "ICLR.cc/2019/Conference/Area_Chairs",
17 | "status": "complete",
18 | "custom_loads": {}
19 | }
20 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2019/Conference/data/iclr19-match-config-example.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "reviewers-1",
3 | "weights": {
4 | "bid_score": 1.0,
5 | "tpms_score": 1.0
6 | },
7 | "max_users": 3,
8 | "max_papers": 4,
9 | "alternates": 5,
10 | "constraints": {},
11 | "config_invitation": "ICLR.cc/2019/Conference/-/Assignment_Configuration",
12 | "paper_invitation": "ICLR.cc/2019/Conference/-/Blind_Submission",
13 | "metadata_invitation": "ICLR.cc/2019/Conference/-/Paper_Metadata",
14 | "assignment_invitation": "ICLR.cc/2019/Conference/-/Paper_Assignment",
15 | "match_group": "ICLR.cc/2019/Conference/Reviewers",
16 | "status": "complete"
17 | }
18 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2019/Conference/data/jr-reviewers-match-config.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "jr-reviewers-1",
3 | "weights": {
4 | "bid_score": 1.0,
5 | "tpms_score": 1.0
6 | },
7 | "max_users": 2,
8 | "min_papers": 2,
9 | "max_papers": 5,
10 | "alternates": 5,
11 | "constraints": {},
12 | "config_invitation": "ICLR.cc/2019/Conference/-/Assignment_Configuration",
13 | "paper_invitation": "ICLR.cc/2019/Conference/-/Blind_Submission",
14 | "metadata_invitation": "ICLR.cc/2019/Conference/-/Paper_Metadata",
15 | "assignment_invitation": "ICLR.cc/2019/Conference/-/Paper_Assignment",
16 | "match_group": "ICLR.cc/2019/Conference/Junior_Reviewers",
17 | "status": "complete",
18 | "custom_loads": {
19 | "~Kirthevasan_Kandasamy1": 2,
20 | "~Margarita_Kotti1": 2,
21 | "~Mark_Herbster1": 2,
22 | "~Rianne_van_den_Berg1": 2,
23 | "~Dragomir_Anguelov1": 2,
24 | "~Nicolò_Cesa-Bianchi1": 3,
25 | "~Ognjen_Rudovic1": 3,
26 | "~houssam_nassif1": 3,
27 | "~Alice_Zheng1": 3,
28 | "~Sageev_Oore1": 3
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2019/Conference/data/sr-reviewers-match-config.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "sr-reviewers-1",
3 | "weights": {
4 | "bid_score": 1.0,
5 | "tpms_score": 1.0
6 | },
7 | "max_users": 1,
8 | "min_papers": 3,
9 | "max_papers": 5,
10 | "alternates": 5,
11 | "constraints": {},
12 | "config_invitation": "ICLR.cc/2019/Conference/-/Assignment_Configuration",
13 | "paper_invitation": "ICLR.cc/2019/Conference/-/Blind_Submission",
14 | "metadata_invitation": "ICLR.cc/2019/Conference/-/Paper_Metadata",
15 | "assignment_invitation": "ICLR.cc/2019/Conference/-/Paper_Assignment",
16 | "match_group": "ICLR.cc/2019/Conference/Senior_Reviewers",
17 | "status": "complete",
18 | "custom_loads": {
19 | "~Margarita_Kotti1": 2,
20 | "~Mark_Herbster1": 2,
21 | "~Rianne_van_den_Berg1": 2,
22 | "~Dragomir_Anguelov1": 2,
23 | "~Nicolò_Cesa-Bianchi1": 3,
24 | "~Ognjen_Rudovic1": 3,
25 | "~houssam_nassif1": 3,
26 | "~Alice_Zheng1": 3,
27 | "~Sageev_Oore1": 3
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2019/Conference/process/metaReviewProcess.js:
--------------------------------------------------------------------------------
1 | function() {
2 | var or3client = lib.or3client;
3 | var CONFERENCE_ID = 'ICLR.cc/2019/Conference';
4 | var PROGRAM_CHAIRS_ID = CONFERENCE_ID + '/Program_Chairs';
5 | var SHORT_PHRASE = 'ICLR 2019'
6 |
7 | var origNote = or3client.or3request(or3client.notesUrl+'?id='+note.forum, {}, 'GET', token);
8 |
9 | origNote.then(function(result){
10 | var forum = result.notes[0];
11 |
12 | var pc_mail = {
13 | "groups": [PROGRAM_CHAIRS_ID];
14 | "subject": "[" + SHORT_PHRASE + "] Meta-review by an area chair has been posted: " + "\"" + forum.content.title + "\".",
15 | "message": "A paper submission to " + SHORT_PHRASE + " has received a meta-review by an area chair.\n\nTitle: "+note.content.title+"\n\nMeta-review: "+note.content.metareview+"\n\nTo view the meta-review, click here: "+baseUrl+"/forum?id=" + note.forum + "¬eId=" + note.id
16 | };
17 |
18 | return or3client.or3request( or3client.mailUrl, pc_mail, 'POST', token );
19 |
20 | })
21 | .then(result => done())
22 | .catch(error => done(error));
23 |
24 | return true;
25 | };
26 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2019/Conference/process/registrationProcess.js:
--------------------------------------------------------------------------------
1 | function () {
2 | var or3client = lib.or3client;
3 |
4 | or3client.addInvitationNoninvitee(note.invitation, note.signatures[0], token)
5 | .then(result => done())
6 | .catch(error => done(error));
7 | return true;
8 | };
9 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2019/Conference/process/submissionProcess.js:
--------------------------------------------------------------------------------
1 | function() {
2 | var or3client = lib.or3client;
3 | console.log('submission process');
4 |
5 | var SHORT_PHRASE = 'ICLR 2019';
6 |
7 | var authorMail = {
8 | groups: note.content.authorids,
9 | subject: 'Your submission to ' + SHORT_PHRASE + ' has been received: ' + note.content.title,
10 | message: 'Your submission to ' + SHORT_PHRASE + ' has been posted.\n\nTitle: ' + note.content.title + '\n\nAbstract: ' + note.content.abstract + '\n\nTo view your submission, click here: ' + baseUrl + '/forum?id=' + note.forum
11 | };
12 | or3client.or3request(or3client.mailUrl, authorMail, 'POST', token)
13 | .then(result => done())
14 | .catch(error => done(error));
15 | return true;
16 | };
17 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2019/Conference/process/withdrawProcess.js:
--------------------------------------------------------------------------------
1 | function(){
2 | var or3client = lib.or3client;
3 |
4 | var CONFERENCE_ID = 'ICLR.cc/2019/Conference';
5 | var SHORT_PHRASE = "ICLR 2019";
6 | var PAPER_AUTHORS = CONFERENCE_ID + '/Paper' + note.number + '/Authors';
7 |
8 | var forumNoteP = or3client.or3request(or3client.notesUrl + '?id=' + note.forum, {}, 'GET', token);
9 |
10 | forumNoteP.then(function(result) {
11 | var forumNote = result.notes[0];
12 | author_mail = {
13 | "groups": forumNote.content.authorids,
14 | "subject": "Your submission to " + SHORT_PHRASE + " has been withdrawn",
15 | "message": "Your submission, \""+ forumNote.content.title +"\", has been withdrawn by one of the authors. \
16 | To view your withdrawn submission, click here: " + baseUrl + "/forum?id=" + forumNote.forum + "\n\n\
17 | Per ICLR policy, the identity of all authors will be revealed to the public. \
18 | The record of this submission (including all existing reviews and comments) \
19 | will remain publicly accessible on OpenReview.\n\nIf you believe that this withdrawal was an error, please contact info@openreview.net as soon as possible."
20 | };
21 | return or3client.or3request(or3client.mailUrl, author_mail, 'POST', token);
22 | })
23 | .then(result => done())
24 | .catch(error => done(error));
25 |
26 | return true;
27 | };
28 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2019/Conference/python/resubmit_papers.py:
--------------------------------------------------------------------------------
1 | '''
2 | A throwaway script for testing ICLR 19 workflow.
3 |
4 | Gets ICLR 2018 papers and posts them as ICLR 2019 submissions.
5 | '''
6 |
7 | import openreview
8 | import argparse
9 | import iclr19
10 |
11 | def resubmit(client, old_papers_inv, new_papers_inv):
12 | for paper in openreview.tools.iterget_notes(client, invitation=old_papers_inv):
13 | new_content = paper.content
14 | new_paper = openreview.Note(**{
15 | 'invitation': new_papers_inv,
16 | 'writers': paper.signatures,
17 | 'readers': [iclr19.CONFERENCE_ID],
18 | 'signatures': paper.signatures,
19 | 'content': new_content
20 | })
21 |
22 | try:
23 | p = client.post_note(new_paper)
24 | print("{} -> {}".format(paper.id, p.id))
25 | except openreview.OpenReviewException as e:
26 | pass
27 |
28 | if __name__ == '__main__':
29 | parser = argparse.ArgumentParser()
30 | parser.add_argument('--baseurl', help="openreview base URL")
31 | parser.add_argument('--username')
32 | parser.add_argument('--password')
33 |
34 | args = parser.parse_args()
35 |
36 | ## Initialize the client library with username and password
37 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
38 | print("connecting to", client.baseurl)
39 |
40 | print('posting ICLR 18 submissions to ICLR 19')
41 | resubmit(client, 'ICLR.cc/2018/Conference/-/Submission', iclr19.SUBMISSION_ID)
42 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2019/Conference/python/tpms-get-pdfs.py:
--------------------------------------------------------------------------------
1 | from __future__ import print_function
2 | import requests
3 |
4 |
5 | '''
6 | Modify the out_dir variable
7 | '''
8 | out_dir = '../data/iclr19_pdfs'
9 |
10 | invitation_id = 'ICLR.cc/2019/Conference/-/Blind_Submission'
11 |
12 | limit = 1000
13 | offset = 0
14 | done = False
15 |
16 | while not done:
17 | submissions_response = requests.get(
18 | 'https://openreview.net/notes?invitation={}'.format(invitation_id),
19 | params={'limit': limit, 'offset': offset})
20 | submissions = submissions_response.json()['notes']
21 |
22 | if len(submissions) < limit:
23 | done = True
24 | else:
25 | offset += limit
26 |
27 | for n in submissions:
28 | pdf_url = 'https://openreview.net{0}'.format(n['content']['pdf'])
29 | paper_id = n['number']
30 | print("retrieving paper{0} at {1}".format(paper_id, pdf_url))
31 | pdf_response = requests.get(pdf_url, stream=True)
32 | with open('{}/paper{}.pdf'.format(out_dir, paper_id), 'wb') as f:
33 | f.write(pdf_response.content)
34 |
35 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2019/Workshop/DeepGenStruct/python/config.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import openreview
4 |
5 |
6 | def get_conference(client):
7 |
8 | builder = openreview.conference.ConferenceBuilder(client)
9 |
10 | builder.set_conference_id('ICLR.cc/2019/Workshop/DeepGenStruct')
11 | builder.set_conference_name('Deep Generative Models for Highly Structured Data')
12 | builder.set_conference_short_name('DeepGenStruct 2019')
13 | builder.set_homepage_header({
14 | 'title': 'Deep Generative Models for Highly Structured Data ',
15 | 'subtitle': 'ICLR 2019 Workshop',
16 | 'deadline': 'Submission Deadline: March 27, 2019 9am EST',
17 | 'date': 'May 6 - May 9, 2019',
18 | 'website': 'https://deep-gen-struct.github.io/index.html',
19 | 'location': 'New Orleans, Louisiana, United States'
20 | })
21 | builder.set_authorpage_header({
22 | 'title': 'Author Console',
23 | 'instructions': '',
24 | 'schedule': 'To Be Defined'
25 | })
26 | builder.set_double_blind(True)
27 | builder.set_override_homepage(True)
28 | return builder.get_result()
29 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2019/Workshop/DeepGenStruct/python/init.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import argparse
4 | import openreview
5 | from openreview import tools
6 | from openreview import invitations
7 | import config
8 | import datetime
9 |
10 | """
11 | OPTIONAL SCRIPT ARGUMENTS
12 |
13 | baseurl - the URL of the OpenReview server to connect to (live site: https://openreview.net)
14 | username - the email address of the logging in user
15 | password - the user's password
16 | """
17 |
18 | parser = argparse.ArgumentParser()
19 | parser.add_argument('--baseurl', help="base URL")
20 | parser.add_argument('--username')
21 | parser.add_argument('--password')
22 |
23 | args = parser.parse_args()
24 |
25 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
26 | print('connecting to {0}'.format(client.baseurl))
27 |
28 | conference = config.get_conference(client)
29 | # March 23, 2019 9am EST
30 | conference.open_submissions(due_date = datetime.datetime(2019, 3, 27, 14, 0))
31 | invite = client.get_invitation(id=conference.get_submission_id())
32 | blind = client.get_invitation(id=conference.get_id()+'/-/Blind_Submission')
33 | blind.duedate=invite.duedate
34 | blind.expdate=invite.expdate
35 | client.post_invitation(blind)
--------------------------------------------------------------------------------
/venues/ICLR.cc/2019/Workshop/DeepGenStruct/python/post-submission-stage.py:
--------------------------------------------------------------------------------
1 | import openreview
2 | import config
3 | import argparse
4 | import datetime
5 |
6 | ## Argument handling
7 | parser = argparse.ArgumentParser()
8 | parser.add_argument('--baseurl', help="base url")
9 | parser.add_argument('--username')
10 | parser.add_argument('--password')
11 | args = parser.parse_args()
12 |
13 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
14 | conference = config.get_conference(client)
15 |
16 | print ("Closing submissions")
17 | conference.close_submissions()
18 |
19 | print ("Create blind submissions")
20 | conference.create_blind_submissions()
21 |
22 | conference.set_authors()
23 |
24 | print('replacing members with IDs')
25 | reviewers_group = client.get_group(conference.get_reviewers_id())
26 | openreview.tools.replace_members_with_ids(client, reviewers_group)
27 |
28 | # March 31st 11:59 pm EST
29 | conference.open_bids(due_date = datetime.datetime(2019, 4, 1, 4, 59))
--------------------------------------------------------------------------------
/venues/ICLR.cc/2019/Workshop/DeepGenStruct/python/review-assignment-stage.py:
--------------------------------------------------------------------------------
1 | import openreview
2 | import config
3 | import argparse
4 |
5 | ## Argument handling
6 | parser = argparse.ArgumentParser()
7 | parser.add_argument('--baseurl', help="base url")
8 | parser.add_argument('--username')
9 | parser.add_argument('--password')
10 | args = parser.parse_args()
11 |
12 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
13 | conference = config.get_conference(client)
14 |
15 | print ("Set global committee members")
16 | conference.set_authors()
17 | conference.set_program_chairs(['pc@mail.com'])
18 | conference.set_reviewers(['pmandler@cs.umass.edu'])
19 |
20 | print ("Create some assignments")
21 | conference.set_assignment('mandler@cs.umass.edu', 1, is_area_chair = False)
22 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2019/Workshop/DeepGenStruct/python/reviewing-stage.py:
--------------------------------------------------------------------------------
1 | import openreview
2 | import config
3 | import argparse
4 | import datetime
5 |
6 | ## Argument handling
7 | parser = argparse.ArgumentParser()
8 | parser.add_argument('--baseurl', help="base url")
9 | parser.add_argument('--username')
10 | parser.add_argument('--password')
11 | args = parser.parse_args()
12 |
13 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
14 | conference = config.get_conference(client)
15 |
16 | print("Open Comments")
17 | conference.open_comments(name = 'Official_Comment', public = False, anonymous = True)
18 | conference.open_comments(name = 'Public_Comment', public = True, anonymous = True)
19 |
20 | print("Open Reviews")
21 | conference.open_reviews(name = 'Official_Review', due_date = datetime.datetime(2019, 3, 16, 0, 0), public = False)
22 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2019/Workshop/LLD/python/config.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import openreview
4 |
5 |
6 | def get_conference(client):
7 |
8 | builder = openreview.conference.ConferenceBuilder(client)
9 |
10 | builder.set_conference_id('ICLR.cc/2019/Workshop/LLD')
11 | builder.set_conference_name('Learning from Limited Labeled Data')
12 | builder.set_conference_short_name('LLD 2019')
13 | builder.set_homepage_header({
14 | 'title': 'Learning from Limited Labeled Data',
15 | 'subtitle': 'ICLR 2019 Workshop',
16 | 'deadline': 'Submission Deadline: March 24, 2019',
17 | 'date': 'May 6 - May 9, 2019',
18 | 'website': 'https://lld-workshop.github.io/',
19 | 'location': 'New Orleans, Louisiana, United States',
20 | 'instructions': ' '})
21 | builder.set_double_blind(True)
22 | builder.set_override_homepage(True)
23 | builder.set_submission_public(True)
24 | return builder.get_result()
25 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2019/Workshop/LLD/python/init.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import argparse
4 | import openreview
5 | from openreview import tools
6 | from openreview import invitations
7 | import config
8 | import datetime
9 |
10 | """
11 | OPTIONAL SCRIPT ARGUMENTS
12 |
13 | baseurl - the URL of the OpenReview server to connect to (live site: https://openreview.net)
14 | username - the email address of the logging in user
15 | password - the user's password
16 | """
17 |
18 | parser = argparse.ArgumentParser()
19 | parser.add_argument('--baseurl', help="base URL")
20 | parser.add_argument('--username')
21 | parser.add_argument('--password')
22 |
23 | args = parser.parse_args()
24 |
25 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
26 | print('connecting to {0}'.format(client.baseurl))
27 |
28 | conference = config.get_conference(client)
29 | conference.open_submissions(due_date = datetime.datetime(2019, 3, 25, 0, 0))
30 | conference.set_program_chairs(emails=[])
--------------------------------------------------------------------------------
/venues/ICLR.cc/2019/Workshop/LLD/python/post-submission-stage.py:
--------------------------------------------------------------------------------
1 | import openreview
2 | import config
3 | import argparse
4 |
5 | ## Argument handling
6 | parser = argparse.ArgumentParser()
7 | parser.add_argument('--baseurl', help="base url")
8 | parser.add_argument('--username')
9 | parser.add_argument('--password')
10 | args = parser.parse_args()
11 |
12 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
13 | conference = config.get_conference(client)
14 |
15 | print ("Closing submissions")
16 | conference.close_submissions()
17 |
18 | print ("Create blind submissions")
19 | conference.create_blind_submissions()
20 |
21 | conference.set_authors()
22 |
23 | print('replacing members with IDs')
24 | reviewers_group = client.get_group(conference.get_reviewers_id())
25 | openreview.tools.replace_members_with_ids(client, reviewers_group)
--------------------------------------------------------------------------------
/venues/ICLR.cc/2019/Workshop/RML/python/init.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import argparse
4 | import openreview
5 | from openreview import tools
6 | from openreview import invitations
7 | import config
8 | import datetime
9 |
10 | """
11 | OPTIONAL SCRIPT ARGUMENTS
12 |
13 | baseurl - the URL of the OpenReview server to connect to (live site: https://openreview.net)
14 | username - the email address of the logging in user
15 | password - the user's password
16 | """
17 |
18 | parser = argparse.ArgumentParser()
19 | parser.add_argument('--baseurl', help="base URL")
20 | parser.add_argument('--username')
21 | parser.add_argument('--password')
22 |
23 | args = parser.parse_args()
24 |
25 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
26 | print('connecting to {0}'.format(client.baseurl))
27 |
28 | conference = config.get_conference(client)
29 | conference.open_submissions(due_date = datetime.datetime(2019, 3, 6, 4, 59))
30 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2019/Workshop/RML/python/post-submission-stage.py:
--------------------------------------------------------------------------------
1 | import openreview
2 | import config
3 | import argparse
4 |
5 | ## Argument handling
6 | parser = argparse.ArgumentParser()
7 | parser.add_argument('--baseurl', help="base url")
8 | parser.add_argument('--username')
9 | parser.add_argument('--password')
10 | args = parser.parse_args()
11 |
12 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
13 | conference = config.get_conference(client)
14 |
15 | print ("Closing submissions")
16 | conference.close_submissions()
17 |
18 | print ("Create blind submissions")
19 | conference.create_blind_submissions()
20 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2019/Workshop/drlStructPred/python/init.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import argparse
4 | import openreview
5 | from openreview import tools
6 | from openreview import invitations
7 | import config
8 | import datetime
9 |
10 | """
11 | OPTIONAL SCRIPT ARGUMENTS
12 |
13 | baseurl - the URL of the OpenReview server to connect to (live site: https://openreview.net)
14 | username - the email address of the logging in user
15 | password - the user's password
16 | """
17 |
18 | parser = argparse.ArgumentParser()
19 | parser.add_argument('--baseurl', help="base URL")
20 | parser.add_argument('--username')
21 | parser.add_argument('--password')
22 |
23 | args = parser.parse_args()
24 |
25 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
26 | print('connecting to {0}'.format(client.baseurl))
27 |
28 | conference = config.get_conference(client)
29 | #conference.set_program_chairs(emails = [
30 | #hidden emails
31 | #])
32 |
33 | # March 22, 11:59pm AoE
34 | submission_inv = conference.open_submissions(due_date = datetime.datetime(2019, 3, 23, 11, 59))
35 | submission_inv.reply['content']['authorids']['description']+=" Please provide real emails; identities will be anonymized."
36 | submission_inv.reply['content']['authors']['description']+=" Please provide real names; identities will be anonymized."
37 | submission_inv = client.post_invitation(submission_inv)
38 |
--------------------------------------------------------------------------------
/venues/ICLR.cc/2020/Conference/python/assign-area-chair.py:
--------------------------------------------------------------------------------
1 | import openreview
2 | import argparse
3 |
4 | if __name__ == '__main__':
5 | ## Argument handling
6 | parser = argparse.ArgumentParser()
7 | parser.add_argument('--baseurl', help="base url")
8 | parser.add_argument('--username')
9 | parser.add_argument('--password')
10 | args = parser.parse_args()
11 |
12 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
13 |
14 | conference = openreview.helpers.get_conference(client, 'Skli7GteaN')
15 |
16 | conference.set_assignment(user = '~Melisa_Bok1', number = 1, is_area_chair = True)
--------------------------------------------------------------------------------
/venues/ICLR.cc/2020/Conference/python/assign-reviewer.py:
--------------------------------------------------------------------------------
1 | import openreview
2 | import argparse
3 |
4 | if __name__ == '__main__':
5 | ## Argument handling
6 | parser = argparse.ArgumentParser()
7 | parser.add_argument('--baseurl', help="base url")
8 | parser.add_argument('--username')
9 | parser.add_argument('--password')
10 | args = parser.parse_args()
11 |
12 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
13 |
14 | conference = openreview.helpers.get_conference(client, 'Skli7GteaN')
15 |
16 | conference.set_assignment(user = 'reviewer_iclr2020@mail.com', number = 1, is_area_chair = False)
--------------------------------------------------------------------------------
/venues/ICLR.cc/ICLR-landing-webfield.js:
--------------------------------------------------------------------------------
1 | var GROUP_ID = 'ICLR.cc';
2 | var HEADER = {
3 | title: 'International Conference on Learning Representations',
4 | description: ''
5 | };
6 | var VENUE_LINKS = [
7 | { url: '/group?id=ICLR.cc/2019/Conference', name: 'ICLR 2019 Conference Track' },
8 | { url: '/group?id=ICLR.cc/2018/Conference', name: 'ICLR 2018 Conference Track' },
9 | { url: '/group?id=ICLR.cc/2018/Workshop', name: 'ICLR 2018 Workshop Track' },
10 | { url: '/group?id=ICLR.cc/2017/conference', name: 'ICLR 2017 Conference Track' },
11 | { url: '/group?id=ICLR.cc/2017/workshop', name: 'ICLR 2017 Workshop Track' },
12 | { url: '/group?id=ICLR.cc/2016/workshop', name: 'ICLR 2016 Workshop Track' },
13 | { url: '/group?id=ICLR.cc/2014', name: 'ICLR 2014 Workshop Track' },
14 | { url: '/group?id=ICLR.cc/2013', name: 'ICLR 2013 Conference Track' }
15 | ];
16 |
17 | Webfield.ui.setup('#group-container', GROUP_ID);
18 |
19 | Webfield.ui.header(HEADER.title, HEADER.description, { underline: true });
20 |
21 | Webfield.ui.linksList(VENUE_LINKS);
22 |
23 | OpenBanner.welcome();
24 |
--------------------------------------------------------------------------------
/venues/ICML.cc/2017/MLAV/process/submissionProcess.js:
--------------------------------------------------------------------------------
1 | function() {
2 |
3 | var or3client = lib.or3client;
4 |
5 | //Send an email to the author of the submitted note, confirming its receipt
6 | var mail = {
7 | "groups": note.content.authorids,
8 | "subject": "Confirmation of your submission to ICML 2017 MLAV Workshop: \"" + note.content.title + "\".",
9 | "message": `Your submission to ICML 2017 Machine Learning for Autonomous Vehicles has been posted.\n\nTitle: `+note.content.title+`\n\nAbstract: `+note.content.abstract+`\n\nTo view the note, click here: `+baseUrl+`/forum?id=` + note.forum
10 | };
11 |
12 | or3client.or3request(or3client.mailUrl, mail, 'POST', token)
13 | .then(result => done())
14 | .catch(error => done(error));
15 |
16 | return true;
17 | }
18 |
--------------------------------------------------------------------------------
/venues/ICML.cc/2017/RML/process/submissionProcess.template:
--------------------------------------------------------------------------------
1 | function () {
2 | var or3client = lib.or3client;
3 |
4 | var CONFERENCEPHRASE = "the Reproducibility in Machine Learning Workshop";
5 |
6 | var author_mail = {
7 | "groups": note.content.authorids,
8 | "subject": "Your submission to "+ CONFERENCEPHRASE +" has been received: \"" + note.content.title + "\"",
9 | "message": "Your submission to "+ CONFERENCEPHRASE + " has been posted.\n\nTitle: " + note.content.title + "\n\nAbstract: " + note.content.abstract + "\n\nTo view your submission, click here: " + baseUrl+"/forum?id=" + note.forum
10 | };
11 |
12 | return or3client.or3request(or3client.mailUrl, author_mail, 'POST', token)
13 | .then(result => done())
14 | .catch(error => done(error));
15 |
16 | return true;
17 | };
18 |
--------------------------------------------------------------------------------
/venues/ICML.cc/2017/RML/python/create_revisions.py:
--------------------------------------------------------------------------------
1 | # import statements
2 | import openreview
3 | import config
4 | import argparse
5 |
6 | parser = argparse.ArgumentParser()
7 | parser.add_argument('--baseurl', help="base url")
8 | parser.add_argument('--username')
9 | parser.add_argument('--password')
10 | args = parser.parse_args()
11 |
12 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
13 | print client.baseurl
14 |
15 | # setup variables
16 | submissions = client.get_notes(invitation = config.SUBMISSION)
17 |
18 | def revision_invitation(n):
19 |
20 | revision_reply = {
21 | 'content': config.submission_content,
22 | 'referent': n.id,
23 | 'forum': n.forum,
24 | 'readers': {
25 | 'description': 'The users who will be allowed to read the above content.',
26 | 'values': ['everyone']
27 | },
28 | 'signatures': {
29 | 'description': 'How your identity will be displayed with the above content.',
30 | 'values-regex': '~.*'
31 | },
32 | 'writers': {
33 | 'values-regex': '~.*'
34 | }
35 | }
36 |
37 | return openreview.Invitation(config.CONF + '/-/Paper{0}/Add/Revision'.format(n.number),
38 | readers = ['everyone'],
39 | writers = [config.CONF],
40 | invitees = n.content['authorids'],
41 | signatures = [config.CONF],
42 | reply = revision_reply
43 | )
44 |
45 |
46 | for n in submissions:
47 | inv = client.post_invitation(revision_invitation(n))
48 | print inv.id
49 |
--------------------------------------------------------------------------------
/venues/ICML.cc/2017/WHI/process/submissionProcess.template:
--------------------------------------------------------------------------------
1 | function () {
2 | var or3client = lib.or3client;
3 |
4 | var CONFERENCEPHRASE = "the Workshop on Human Interpretability in Machine Learning";
5 |
6 | var author_mail = {
7 | "groups": note.content.authorids,
8 | "subject": "Your submission to "+ CONFERENCEPHRASE +" has been received: \"" + note.content.title + "\"",
9 | "message": "Your submission to "+ CONFERENCEPHRASE + " has been posted.\n\nTitle: " + note.content.title + "\n\nAbstract: " + note.content.abstract + "\n\nTo view your submission, click here: " + baseUrl+"/forum?id=" + note.forum
10 | };
11 |
12 | return or3client.or3request(or3client.mailUrl, author_mail, 'POST', token)
13 | .then(result => done())
14 | .catch(error => done(error));
15 |
16 | return true;
17 | };
18 |
--------------------------------------------------------------------------------
/venues/ICML.cc/2018/ECA/process/officialReviewProcess.js:
--------------------------------------------------------------------------------
1 | function(){
2 | var SHORT_PHRASE = 'ICML ECA 2018';
3 | var CONFERENCE_ID = 'ICML.cc/2018/ECA';
4 | var or3client = lib.or3client;
5 |
6 | // send email to author of paper submission
7 | var origNote = or3client.or3request(or3client.notesUrl+'?id='+note.forum, {}, 'GET', token);
8 | origNote.then(function(result) {
9 | var forum = result.notes[0];
10 | var note_number = forum.number;
11 |
12 | var author_mail = {
13 | groups: forum.content.authorids,
14 | subject: 'Review of your submission to ' + SHORT_PHRASE + ': "' + forum.content.title + '"',
15 | message: 'Your submission to ' + SHORT_PHRASE + ' has received an official review.\n\nTitle: ' + note.content.title + '\n\nReview: ' + note.content.review + '\n\nTo view the review, click here: ' + baseUrl+'/forum?id=' + note.forum
16 | };
17 |
18 | return or3client.or3request( or3client.mailUrl, author_mail, 'POST', token );
19 | })
20 | // do not allow reviewer to post another review for this paper
21 | .then(result => or3client.addInvitationNoninvitee(note.invitation, note.signatures[0], token))
22 | .then(result => done())
23 | .catch(error => done(error));
24 | return true;
25 | };
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/venues/ICML.cc/2018/ECA/python/update_homepage.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import sys, os
4 | import argparse
5 | import openreview
6 | from openreview import tools
7 | from openreview import invitations
8 | from openreview import webfield
9 | import config
10 |
11 | """
12 | OPTIONAL SCRIPT ARGUMENTS
13 |
14 | baseurl - the URL of the OpenReview server to connect to (live site: https://openreview.net)
15 | username - the email address of the logging in user
16 | password - the user's password
17 | """
18 |
19 | parser = argparse.ArgumentParser()
20 | parser.add_argument('--baseurl', help="base URL")
21 | parser.add_argument('--username')
22 | parser.add_argument('--password')
23 |
24 | args = parser.parse_args()
25 |
26 | print config.CONFERENCE_ID
27 |
28 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
29 | print 'connecting to {0}'.format(client.baseurl)
30 |
31 | '''
32 | Create the homepage and add it to the conference group.
33 | '''
34 |
35 | homepage = webfield.Webfield(
36 | config.HOMEPAGE_TEMPLATE,
37 | group_id = config.CONFERENCE_ID,
38 | js_constants = config.JS_CONSTANTS,
39 | )
40 |
41 | this_conference = client.get_group(config.CONFERENCE_ID)
42 | this_conference.web = homepage.render()
43 | this_conference = client.post_group(this_conference)
44 | print "adding webfield to", this_conference.id
45 |
46 | filename = config.HOMEPAGE_TEMPLATE.split('.template')[0]+'.js'
47 | f = open(filename, 'w')
48 | f.write(this_conference.web)
49 | f.close()
50 |
--------------------------------------------------------------------------------
/venues/ICML.cc/2018/Workshop/NAMPI/process/officialReviewProcess.js:
--------------------------------------------------------------------------------
1 | function(){
2 | var or3client = lib.or3client;
3 |
4 | // do not allow reviewer to post another review for this paper
5 | or3client.addInvitationNoninvitee(note.invitation, note.signatures[0], token)
6 | .then(result => done())
7 | .catch(error => done(error));
8 | return true;
9 | };
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/venues/ICML.cc/2018/Workshop/NAMPI/python/setup.py:
--------------------------------------------------------------------------------
1 |
2 | # coding: utf-8
3 |
4 | # In[1]:
5 |
6 |
7 | import openreview
8 | from openreview import tools
9 | import config
10 | import functions
11 |
12 | client = openreview.Client()
13 | print client.baseurl
14 |
15 |
16 | # In[3]:
17 |
18 |
19 | '''
20 | Post the reviewer groups. Warning! This will reset all members!
21 |
22 | TODO: make a function to post a group without overwriting members.
23 | '''
24 | reviewers = client.post_group(config.reviewers)
25 | reviewers_invited = client.post_group(config.reviewers_invited)
26 | reviewers_declined = client.post_group(config.reviewers_declined)
27 |
28 |
29 | # In[4]:
30 |
31 |
32 | '''
33 | Post the recruitment invitation. This can be done multiple times without consequence.
34 | '''
35 | recruit_reviewers = client.post_invitation(config.recruit_reviewers)
36 |
37 |
38 | # In[5]:
39 |
40 |
41 | '''
42 | Example of how to invite a reviewer.
43 | '''
44 |
45 | functions.recruit_reviewer(client, 'michael.l.spector@gmail.com', 'Michael')
46 |
47 |
--------------------------------------------------------------------------------
/venues/ICML.cc/2019/Conference/README.md:
--------------------------------------------------------------------------------
1 | # ICML 2019 Paper Matching
2 |
3 | ## Requested services:
4 | - Match Senior ACs to ACs
5 | - Match ACs to Papers
6 |
7 | ## Data Management
8 | - All data is provided to us through a [shared Google Sheet](https://docs.google.com/spreadsheets/d/1G3AFQyO7-dwNrIJOCc-GYL4QPwhT-QzKYIoY-Y-SMjI/edit#gid=1928338508)
9 | - Download each sheet and place them in a directory called `ICML.cc/2019/Conference/data/icml-sheets`. Give them the following names: `areachairs.csv`, `reviewer_quotas.csv`, `reviewers.csv`, `sac_ac_bids.csv`, and `sr_areachairs.csv`.
10 | - Run `parse_sheets.py` to process them into a format that is recognized by our scripts.
11 |
12 | ## Matching Setup
13 | - Run `init.py`. This builds the groups and invitations needed to do the match. This script can be run multiple times without negative consequences.
14 |
15 | ### Matching Sr. ACs and ACs
16 | - Run `sac_ac_match.py` to set up the system for matching Sr. ACs to Jr. ACs.
17 | - The script will post a Note that represents each Jr. AC, and then use the matching system as normal on the Sr. ACs and the Jr. AC "placeholder" papers.
18 | - Export the results by running `export_sac_match.py`
19 |
--------------------------------------------------------------------------------
/venues/ICML.cc/2019/Conference/process/metaReviewProcess.js:
--------------------------------------------------------------------------------
1 | function() {
2 | var or3client = lib.or3client;
3 | var CONFERENCE_ID = 'ICML.cc/2019/Conference';
4 | var SHORT_PHRASE = 'ICML 2019'
5 |
6 | var origNote = or3client.or3request(or3client.notesUrl+'?id='+note.forum, {}, 'GET', token);
7 |
8 |
9 | var programchairs = [CONFERENCE_ID];
10 |
11 | origNote.then(function(result){
12 | var forum = result.notes[0];
13 |
14 | var pc_mail = {
15 | "groups": programchairs,
16 | "subject": "[" + SHORT_PHRASE + "] Meta-review by an area chair has been posted: " + "\"" + forum.content.title + "\".",
17 | "message": "A paper submission to " + SHORT_PHRASE + " has received a meta-review by an area chair.\n\nTitle: "+note.content.title+"\n\nMeta-review: "+note.content.metareview+"\n\nTo view the meta-review, click here: "+baseUrl+"/forum?id=" + note.forum + "¬eId=" + note.id
18 | };
19 |
20 | return or3client.or3request( or3client.mailUrl, pc_mail, 'POST', token );
21 |
22 | })
23 | .then(or3client.addInvitationNoninvitee(note.invitation, note.signatures[0],token))
24 | .then(result => done())
25 | .catch(error => done(error));
26 |
27 | return true;
28 | };
29 |
--------------------------------------------------------------------------------
/venues/ICML.cc/2019/Workshop/RL4RealLife/python/config.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import openreview
4 |
5 |
6 | def get_conference(client):
7 |
8 | builder = openreview.conference.ConferenceBuilder(client)
9 |
10 | builder.set_conference_id('ICML.cc/2019/Workshop/RL4RealLife')
11 | builder.set_conference_name('Reinforcement Learning for Real Life')
12 | builder.set_conference_short_name('RL4RealLife 2019')
13 | builder.set_homepage_header({
14 | 'title': 'Reinforcement Learning for Real Life',
15 | 'subtitle': 'An ICML Workshop',
16 | 'deadline': 'Submission Deadline: May 1, midnight GMT',
17 | 'date': 'June 14th, 2019',
18 | 'website': 'https://sites.google.com/view/RL4RealLife',
19 | 'location': 'Long Beach, CA, USA'
20 | })
21 | builder.set_double_blind(False)
22 | builder.set_submission_public(True)
23 | #builder.set_override_homepage(True)
24 | return builder.get_result()
25 |
--------------------------------------------------------------------------------
/venues/ICML.cc/2019/Workshop/RL4RealLife/python/init.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import argparse
4 | import openreview
5 | from openreview import tools
6 | from openreview import invitations
7 | import config
8 | import datetime
9 |
10 | """
11 | OPTIONAL SCRIPT ARGUMENTS
12 |
13 | baseurl - the URL of the OpenReview server to connect to (live site: https://openreview.net)
14 | username - the email address of the logging in user
15 | password - the user's password
16 | """
17 |
18 | parser = argparse.ArgumentParser()
19 | parser.add_argument('--baseurl', help="base URL")
20 | parser.add_argument('--username')
21 | parser.add_argument('--password')
22 |
23 | args = parser.parse_args()
24 |
25 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
26 | print('connecting to {0}'.format(client.baseurl))
27 |
28 | conference = config.get_conference(client)
29 | # midnight GMT 5/1
30 | conference.open_submissions(due_date = datetime.datetime(2019, 5, 2, 0, 0), remove_fields = ['TL;DR'])
31 |
32 | conference.set_program_chairs(emails = [])
--------------------------------------------------------------------------------
/venues/ICML.cc/ICML-landing-webfield.js:
--------------------------------------------------------------------------------
1 | var GROUP_ID = 'ICML.cc';
2 | var HEADER = {
3 | title: 'International Conference on Machine Learning',
4 | description: ''
5 | };
6 | var VENUE_LINKS = [
7 | { url: '/group?id=ICML.cc/2018/ECA', name: 'ICML 2018 ECA' },
8 | { url: '/group?id=ICML.cc/2018/Workshop/NAMPI', name: 'ICML 2018 NAMPI' },
9 | { url: '/group?id=ICML.cc/2018/RML', name: 'ICML 2018 RML' },
10 | { type: 'divider' },
11 | { url: '/group?id=ICML.cc/2017/MLAV', name: 'ICML 2017 MLAV' },
12 | { url: '/group?id=ICML.cc/2017/RML', name: 'ICML 2017 RML' },
13 | { url: '/group?id=ICML.cc/2017/WHI', name: 'ICML 2017 WHI' },
14 | { type: 'divider' },
15 | { url: '/group?id=ICML.cc/2013/Inferning', name: 'ICML 2013 Inferning' },
16 | { url: '/group?id=ICML.cc/2013/PeerReview', name: 'ICML 2013 PeerReview' }
17 | ];
18 |
19 | Webfield.ui.setup('#group-container', GROUP_ID);
20 |
21 | Webfield.ui.header(HEADER.title, HEADER.description, { underline: true });
22 |
23 | Webfield.ui.linksList(VENUE_LINKS);
24 |
25 | OpenBanner.welcome();
26 |
--------------------------------------------------------------------------------
/venues/MIDL.amsterdam/2018/Abstract/process/officialReviewProcess.js:
--------------------------------------------------------------------------------
1 | function(){
2 | var SHORT_PHRASE = 'MIDL 2018 Abstract';
3 | var CONFERENCE_ID = 'MIDL.amsterdam/2018/Abstract';
4 | var or3client = lib.or3client;
5 |
6 | // send email to author of paper submission
7 | var origNote = or3client.or3request(or3client.notesUrl+'?id='+note.forum, {}, 'GET', token);
8 | origNote.then(function(result) {
9 | var forum = result.notes[0];
10 | var note_number = forum.number;
11 |
12 | var author_mail = {
13 | groups: forum.content.authorids,
14 | subject: 'Review of your submission to ' + SHORT_PHRASE + ': "' + forum.content.title + '"',
15 | message: 'Your submission to ' + SHORT_PHRASE + ' has received an official review.\n\nTitle: ' + note.content.title + '\n\nReview: ' + note.content.review + '\n\nTo view the review, click here: ' + baseUrl+'/forum?id=' + note.forum
16 | };
17 |
18 | var authorMailP = or3client.or3request( or3client.mailUrl, author_mail, 'POST', token );
19 |
20 | return Promise.all([
21 | authorMailP,
22 | ]);
23 | })
24 | // do not allow reviewer to post another review for this paper
25 | .then(result => or3client.addInvitationNoninvitee(note.invitation, note.signatures[0], token))
26 | .then(result => done())
27 | .catch(error => done(error));
28 | return true;
29 | };
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/venues/MIDL.amsterdam/2018/Abstract/python/process-reviewer-assignments.py:
--------------------------------------------------------------------------------
1 | '''
2 | processes the file "midl_assigned_reviews.csv", sent to us by Geert on April 16, 2018.
3 |
4 | This script reformats the information in the above file in a format that
5 | the assign-reviewers.py script can accept.
6 | '''
7 |
8 | import csv
9 | new_rows = []
10 | with open('../data/midl_abstracts_assigned_reviews.csv') as f:
11 | reader = csv.reader(f)
12 | reader.next()
13 | for row in reader:
14 | papernum = row[1]
15 | rev1 = row[6].lower()
16 | rev2 = row[7].lower()
17 | new_rows.append([rev1, papernum])
18 | new_rows.append([rev2, papernum])
19 |
20 | with open('../data/2018-04-19-midl-reviewer-assignments.csv', 'w') as f:
21 | writer = csv.writer(f)
22 | writer.writerows(new_rows)
23 |
--------------------------------------------------------------------------------
/venues/MIDL.amsterdam/2018/Conference/process/officialReviewProcess.js:
--------------------------------------------------------------------------------
1 | function(){
2 | var or3client = lib.or3client;
3 |
4 | // do not allow reviewer to post another review for this paper
5 | or3client.addInvitationNoninvitee(note.invitation, note.signatures[0], token)
6 | .then(result => done())
7 | .catch(error => done(error));
8 | return true;
9 | };
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/venues/MIDL.amsterdam/2018/Conference/python/process-reviewer-assignments.py:
--------------------------------------------------------------------------------
1 | '''
2 | processes the file "midl_assigned_reviews.csv", sent to us by Geert on April 16, 2018.
3 |
4 | This script reformats the information in the above file in a format that
5 | the assign-reviewers.py script can accept.
6 | '''
7 |
8 | import csv
9 | new_rows = []
10 | with open('../data/midl_assigned_reviews.csv') as f:
11 | reader = csv.reader(f)
12 | reader.next()
13 | for row in reader:
14 | papernum = row[3]
15 | rev1 = row[7].lower()
16 | rev2 = row[8].lower()
17 | rev3 = row[9].lower()
18 | new_rows.append([rev1, papernum])
19 | new_rows.append([rev2, papernum])
20 | new_rows.append([rev3, papernum])
21 |
22 | with open('../data/2018-04-17-midl-reviewer-assignments.csv', 'w') as f:
23 | writer = csv.writer(f)
24 | writer.writerows(new_rows)
25 |
--------------------------------------------------------------------------------
/venues/MIDL.amsterdam/2018/midl18-landing-webfield.js:
--------------------------------------------------------------------------------
1 | var GROUP_ID = 'MIDL.amsterdam/2018';
2 | var HEADER = {
3 | title: 'Medical Imaging with Deep Learning 2018',
4 | description: 'Welcome to OpenReview for MIDL 2018. Please select a track below.'
5 | };
6 | var VENUE_LINKS = [
7 | { url: '/group?id=MIDL.amsterdam/2018/Conference', name: 'MIDL 2018 Conference Track' },
8 | { url: '/group?id=MIDL.amsterdam/2018/Abstract', name: 'MIDL 2018 Abstract Track' },
9 | ];
10 |
11 | Webfield.ui.setup('#group-container', GROUP_ID);
12 |
13 | Webfield.ui.header(HEADER.title, HEADER.description, { underline: true });
14 |
15 | Webfield.ui.linksList(VENUE_LINKS);
16 |
17 | OpenBanner.welcome();
18 |
--------------------------------------------------------------------------------
/venues/MIDL.io/2019/Conference/python/post-submission-stage-1.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import sys, os
4 | import argparse
5 | import datetime
6 | import openreview
7 | import config
8 |
9 | """
10 | OPTIONAL SCRIPT ARGUMENTS
11 | baseurl - the URL of the OpenReview server to connect to (live site: https://openreview.net)
12 | username - the email address of the logging in user
13 | password - the user's password
14 | """
15 |
16 | parser = argparse.ArgumentParser()
17 | parser.add_argument('--baseurl', help="base URL")
18 | parser.add_argument('--username')
19 | parser.add_argument('--password')
20 |
21 | args = parser.parse_args()
22 |
23 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
24 | print('connecting to {0}'.format(client.baseurl))
25 |
26 | conference = config.get_conference(client)
27 |
28 | conference.close_submissions()
29 |
30 |
--------------------------------------------------------------------------------
/venues/MIDL.io/2019/Conference/python/post-submission-stage-2.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import sys, os
4 | import argparse
5 | import datetime
6 | import openreview
7 | import config
8 |
9 | """
10 | OPTIONAL SCRIPT ARGUMENTS
11 | baseurl - the URL of the OpenReview server to connect to (live site: https://openreview.net)
12 | username - the email address of the logging in user
13 | password - the user's password
14 | """
15 |
16 | parser = argparse.ArgumentParser()
17 | parser.add_argument('--baseurl', help="base URL")
18 | parser.add_argument('--username')
19 | parser.add_argument('--password')
20 |
21 | args = parser.parse_args()
22 |
23 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
24 | print('connecting to {0}'.format(client.baseurl))
25 |
26 | conference = config.get_conference(client)
27 |
28 | print('open comment invitations')
29 | conference.set_authors()
30 | conference.open_comments(name = 'Official_Comment', public = False, anonymous = True)
31 |
32 | print('replacing members with IDs')
33 | reviewers_group = client.get_group(conference.get_reviewers_id())
34 | areachairs_group = client.get_group(conference.get_area_chairs_id())
35 | openreview.tools.replace_members_with_ids(client, reviewers_group)
36 | openreview.tools.replace_members_with_ids(client, areachairs_group)
37 |
--------------------------------------------------------------------------------
/venues/MIDL.io/2020/Conference/python/get-pdfs.py:
--------------------------------------------------------------------------------
1 | import os
2 | import openreview
3 | import argparse
4 |
5 | parser = argparse.ArgumentParser()
6 | parser.add_argument('--baseurl', help="base URL")
7 | parser.add_argument('--username')
8 | parser.add_argument('--password')
9 | args = parser.parse_args()
10 |
11 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
12 | print ('connecting to {0}'.format(client.baseurl))
13 |
14 | submission_invitation = 'MIDL.io/2020/Conference/-/Blind_Submission'
15 | submissions = openreview.tools.iterget_notes(client, invitation=submission_invitation, details='original')
16 |
17 | if not os.path.exists('midl2020-pdfs'):
18 | os.makedirs('midl2020-pdfs')
19 |
20 | for submission in submissions:
21 | if 'pdf' in submission.details['original']['content']:
22 | pdf_url = '{0}{1}'.format(client.baseurl, submission.details['original']['content']['pdf'])
23 | paper_id = submission.number
24 | print ('retrieving Paper{0} at {1}'.format(paper_id, pdf_url))
25 | with open('midl2020-pdfs/Paper{0}.pdf'.format(paper_id), 'wb') as f:
26 | f.write(client.get_pdf(submission.details['original']['id']))
27 | else:
28 | print('Paper number {0} has no pdf'.format(submission.number))
--------------------------------------------------------------------------------
/venues/MIDL.io/midl-landing-webfield.js:
--------------------------------------------------------------------------------
1 | var GROUP_ID = 'MIDL.io';
2 | var HEADER = {
3 | title: 'Medical Imaging with Deep Learning',
4 | description: ''
5 | };
6 | var VENUE_LINKS = [
7 | { url: '/group?id=MIDL.io/2019/Conference/Full', name: 'MIDL 2019 Full Paper' },
8 | { type: 'divider' },
9 | { url: '/group?id=MIDL.amsterdam/2018/Conference', name: 'MIDL 2018 Conference Track' },
10 | { url: '/group?id=MIDL.amsterdam/2018/Abstract', name: 'MIDL 2018 Abstract Track' },
11 | ];
12 |
13 | Webfield.ui.setup('#group-container', GROUP_ID);
14 |
15 | Webfield.ui.header(HEADER.title, HEADER.description, { underline: true });
16 |
17 | Webfield.ui.linksList(VENUE_LINKS);
18 |
19 | OpenBanner.welcome();
--------------------------------------------------------------------------------
/venues/ML_Reproducibility_Challenge/2020/process/reportProcess.py:
--------------------------------------------------------------------------------
1 | def process(client, note, invitation):
2 | CONFERENCE_ID = 'ML_Reproducibility_Challenge/2020'
3 |
4 | # send confirmation email
5 | msg = 'Your report submission to ML Reproducibility Challenge 2020 has been posted. \n\nTitle: {title}'.format(
6 | title=note.content['title'])
7 | client.send_mail("ML Reproducibility Challenge 2020 report received", note.content['authorids'], msg)
8 |
9 | authors = client.get_group(CONFERENCE_ID + '/Authors')
10 | authors.members.extend(note.content['authorids'])
11 | client.post_group(authors)
12 |
--------------------------------------------------------------------------------
/venues/NIPS.cc/2016/Deep_Learning_Symposium/process/commentProcess.js:
--------------------------------------------------------------------------------
1 | function(){
2 | var or3client = lib.or3client;
3 | done();
4 | return true;
5 | }
--------------------------------------------------------------------------------
/venues/NIPS.cc/2016/NIPS-2016-landing-webfield.js:
--------------------------------------------------------------------------------
1 | var GROUP_ID = 'NIPS.cc/2016';
2 | var HEADER = {
3 | title: 'Neural Information Processing Systems 2016',
4 | description: ''
5 | };
6 | var VENUE_LINKS = [
7 | { url: '/group?id=NIPS.cc/2016/Deep_Learning_Symposium', name: 'NIPS 2016 Deep Learning Symposium' },
8 | { url: '/group?id=NIPS.cc/2016/workshop/MLITS', name: 'NIPS 2016 MLITS Workshop' },
9 | { url: '/group?id=NIPS.cc/2016/workshop/NAMPI', name: 'NIPS 2016 NAMPI Workshop' },
10 | ];
11 |
12 | Webfield.ui.setup('#group-container', GROUP_ID);
13 |
14 | Webfield.ui.header(HEADER.title, HEADER.description, { underline: true });
15 |
16 | Webfield.ui.linksList(VENUE_LINKS);
17 |
18 | OpenBanner.welcome();
19 |
--------------------------------------------------------------------------------
/venues/NIPS.cc/2016/workshop/MLITS/process/commentProcess.js:
--------------------------------------------------------------------------------
1 | function(){
2 | var or3client = lib.or3client;
3 |
4 | var origNote = or3client.or3request(or3client.notesUrl+'?id='+note.forum, {}, 'GET', token);
5 |
6 | var conference = or3client.prettyConferenceName(note);
7 |
8 | origNote.then(function(result){
9 | var mail = {
10 | "groups": result.notes[0].content.authorids,
11 | "subject": "Comment on your submission to " + conference + ": \"" + note.content.title + "\".",
12 | "message": "Your submission to "+ conference +" has received a comment.\n\nTitle: "+note.content.title+"\n\nComment: "+note.content.comment+"\n\nTo view the comment, click here: "+baseUrl+"/forum?id=" + note.forum
13 | };
14 | return or3client.or3request( or3client.mailUrl, mail, 'POST', token );
15 | })
16 | .then(result => done())
17 | .catch(error => done(error))
18 |
19 | return true;
20 | };
--------------------------------------------------------------------------------
/venues/NIPS.cc/2016/workshop/MLITS/process/reviewProcess.js:
--------------------------------------------------------------------------------
1 | function(){
2 | var or3client = lib.or3client;
3 | var origNote = or3client.or3request(or3client.notesUrl+'?id='+note.forum, {}, 'GET', token);
4 |
5 | var conference = or3client.prettyConferenceName(note);
6 |
7 | origNote.then(function(result){
8 | var mail = {
9 | "groups": result.notes[0].content.authorids,
10 | "subject": "Review of your submission to " + conference + ": \"" + note.content.title + "\".",
11 | "message": "Your submission to "+ conference +" has received a review.\n\nTitle: "+note.content.title+"\n\nReview: "+note.content.review+"\n\nTo view the review, click here: "+baseUrl+"/forum?id=" + note.forum
12 | };
13 | return or3client.or3request( or3client.mailUrl, mail, 'POST', token );
14 | })
15 | .then(result => or3client.fulfillInvitation(invitation, note, token))
16 | .then(result => done())
17 | .catch(error => done(error));
18 |
19 | return true;
20 | };
--------------------------------------------------------------------------------
/venues/NIPS.cc/2016/workshop/NAMPI/process/acceptanceProcess.js:
--------------------------------------------------------------------------------
1 | function(){
2 | "use strict";
3 | var or3client = lib.or3client;
4 | or3client.addInvitationNoninvitee(note.invitation, note.signatures[0],token)
5 | .then(result => done())
6 | .catch(error => done(error));
7 | return true;
8 | }
--------------------------------------------------------------------------------
/venues/NIPS.cc/2016/workshop/NAMPI/process/officialReviewProcess.js:
--------------------------------------------------------------------------------
1 | function(){
2 | "use strict";
3 | var or3client = lib.or3client;
4 |
5 | var origNote = or3client.or3request(or3client.notesUrl+'?id='+note.forum, {}, 'GET', token);
6 |
7 | var conference = or3client.getConference(note);
8 |
9 | origNote.then(function(result){
10 | var authors = result.notes[0].content.authorids;
11 |
12 | var author_mail = {
13 | "groups": authors,
14 | "subject": "Review of your submission to " + conference + ": \"" + note.content.title + "\"",
15 | "message": "Your submission to "+ conference +" has received an official review.\n\nTitle: "+note.content.title+"\n\nReview: "+note.content.review+"\n\nTo view the review, click here: "+baseUrl+"/forum?id=" + note.forum
16 | };
17 |
18 | var promises = [
19 | or3client.or3request(or3client.mailUrl, author_mail, 'POST', token)
20 | ];
21 | return Promise.all(promises);
22 | })
23 | .then(or3client.addInvitationNoninvitee(note.invitation, note.signatures[0],token))
24 | .then(result=>done())
25 | .catch(error=>done(error));
26 |
27 | return true;
28 | }
--------------------------------------------------------------------------------
/venues/NIPS.cc/2016/workshop/NAMPI/process/openReviewProcess.js:
--------------------------------------------------------------------------------
1 | function(){
2 | "use strict";
3 | var or3client = lib.or3client;
4 |
5 | var origNote = or3client.or3request(or3client.notesUrl+'?id='+note.forum, {}, 'GET', token);
6 |
7 | var conference = or3client.getConference(note);
8 |
9 | origNote.then(function(result){
10 | var authors = result.notes[0].content.authorids;
11 |
12 | var author_mail = {
13 | "groups": authors,
14 | "subject": "Review of your submission to " + conference + ": \"" + note.content.title + "\"",
15 | "message": "Your submission to "+ conference +" has received a public review.\n\nTitle: "+note.content.title+"\n\nReview: "+note.content.review+"\n\nTo view the review, click here: "+baseUrl+"/forum?id=" + note.forum
16 | };
17 |
18 | var promises = [
19 | or3client.or3request( or3client.mailUrl, author_mail, 'POST', token )
20 | ];
21 | return Promise.all(promises);
22 | })
23 | .then(or3client.addInvitationNoninvitee(note.invitation, note.signatures[0],token))
24 | .then(result=>done())
25 | .catch(error=>done(error));
26 |
27 | return true;
28 | }
--------------------------------------------------------------------------------
/venues/NIPS.cc/2016/workshop/NAMPI/process/responseInvitationProcess.js:
--------------------------------------------------------------------------------
1 | function() {
2 | "use strict";
3 | var or3client = lib.or3client;
4 | var hashKey = or3client.createHash(note.content.email, "4813408173804203984");
5 | if(hashKey == note.content.key) {
6 | if (note.content.response == 'Yes') {
7 | or3client.removeGroupMember(invitation.signatures[0]+'/reviewers-declined', note.content.email, token)
8 | .then(result => or3client.addGroupMember(invitation.signatures[0]+'/reviewers', note.content.email, token))
9 | .then(result => done())
10 | .catch(error => console.log(error));
11 | } else if (note.content.response == 'No'){
12 | or3client.removeGroupMember(invitation.signatures[0]+'/reviewers', note.content.email, token)
13 | .then(result=> or3client.addGroupMember(invitation.signatures[0] + '/reviewers-declined', note.content.email, token))
14 | .then(result => done())
15 | .catch(error => console.log(error));
16 | }
17 | return true;
18 | } else {
19 | console.log('Invalid key', note.content.key);
20 | done();
21 | return false;
22 | }
23 | }
--------------------------------------------------------------------------------
/venues/NIPS.cc/2017/NIPS-2017-landing-webfield.js:
--------------------------------------------------------------------------------
1 | var GROUP_ID = 'NIPS.cc/2017';
2 | var HEADER = {
3 | title: 'Neural Information Processing Systems 2017',
4 | description: ''
5 | };
6 | var VENUE_LINKS = [
7 | { url: '/group?id=NIPS.cc/2017/Workshop/Autodiff', name: 'NIPS 2017 Autodiff Workshop' },
8 | { url: '/group?id=NIPS.cc/2017/Workshop/MLITS', name: 'NIPS 2017 MLITS Workshop' },
9 | ];
10 |
11 | Webfield.ui.setup('#group-container', GROUP_ID);
12 |
13 | Webfield.ui.header(HEADER.title, HEADER.description, { underline: true });
14 |
15 | Webfield.ui.linksList(VENUE_LINKS);
16 |
17 | OpenBanner.welcome();
18 |
--------------------------------------------------------------------------------
/venues/NIPS.cc/2017/Workshop/Autodiff/data/NIPS2017_autodiff.json:
--------------------------------------------------------------------------------
1 | {
2 | "conference_title": "NIPS 2017 Autodiff Workshop",
3 | "conference_subtitle": "The future of gradient-based machine learning software and techniques",
4 | "conference_location": "Long Beach, California",
5 | "conference_date": "December 9, 2017",
6 | "human_duedate": "October 14, 2017 at midnight UTC",
7 | "conference_phrase": "NIPS 2017 Autodiff Workshop",
8 | "submission_name": "",
9 | "duedate_input": "14/10/2017",
10 | "duetime_input": "19:59",
11 | "reviewduedate_input": "03/11/2017",
12 | "url": "https://autodiff-workshop.github.io/"
13 | }
14 |
--------------------------------------------------------------------------------
/venues/NIPS.cc/2017/Workshop/Autodiff/params.json:
--------------------------------------------------------------------------------
1 | {
2 | "conference": "NIPS.cc/2017/Workshop/Autodiff",
3 | "conference_title": "NIPS 2017 Autodiff Workshop",
4 | "conference_subtitle": "The future of gradient-based machine learning software and techniques",
5 | "submission_name": "Submission",
6 | "url": "https://autodiff-workshop.github.io/",
7 | "conference_phrase": "NIPS 2017 Autodiff Workshop",
8 | "reviewduedate_input": "10/11/2017",
9 | "duetime_input": "23:59",
10 | "human_duedate": "October 28, 2017 at midnight UTC",
11 | "conference_date": "December 9, 2017",
12 | "duedate_input": "28/10/2017",
13 | "conference_location": "Long Beach, California"
14 | }
--------------------------------------------------------------------------------
/venues/NIPS.cc/2017/Workshop/MLITS/data/NIPS2017_MLITS.json:
--------------------------------------------------------------------------------
1 | {
2 | "conference_title": "NIPS 2017 MLITS Workshop",
3 | "conference_subtitle": "Machine Learning for Intelligent Transportation Systems",
4 | "conference_location": "Long Beach, California",
5 | "conference_date": "December 9, 2017",
6 | "human_duedate": "October 12, 2017 at midnight GMT",
7 | "conference_phrase": "NIPS 2017 MLITS Workshop",
8 | "submission_name": "",
9 | "duedate_input": "12/10/2017",
10 | "duetime_input": "19:59",
11 | "reviewduedate_input": "03/11/2017",
12 | "url": "https://nips.cc/Conferences/2017/Schedule?showEvent=8755"
13 | }
14 |
--------------------------------------------------------------------------------
/venues/NIPS.cc/2017/Workshop/MLITS/params.json:
--------------------------------------------------------------------------------
1 | {
2 | "conference": "NIPS.cc/2017/Workshop/MLITS",
3 | "conference_title": "NIPS 2017 MLITS Workshop",
4 | "conference_subtitle": "Machine Learning for Intelligent Transportation Systems",
5 | "submission_name": "Submission",
6 | "url": "https://nips.cc/Conferences/2017/Schedule?showEvent=8755",
7 | "conference_phrase": "NIPS 2017 MLITS Workshop",
8 | "reviewduedate_input": "03/11/2017",
9 | "duetime_input": "19:59",
10 | "human_duedate": "October 21, 2017 at midnight GMT",
11 | "conference_date": "December 9, 2017",
12 | "duedate_input": "21/10/2017",
13 | "conference_location": "Long Beach, California"
14 | }
--------------------------------------------------------------------------------
/venues/NIPS.cc/2018/Workshop/CDNNRIA/process/officialReviewProcess.js:
--------------------------------------------------------------------------------
1 |
2 | function(){
3 | var or3client = lib.or3client;
4 |
5 | var origNote = or3client.or3request(or3client.notesUrl+'?id='+note.forum, {}, 'GET', token);
6 | var list = note.invitation.replace(/_/g,' ').split('/');
7 | list.splice(list.indexOf('-',1));
8 | var conference = list.join(' ');
9 |
10 | origNote.then(function(result) {
11 | var forum = result.notes[0];
12 | var sendto = forum.content.authorids;
13 | sendto.push('NIPS.cc/2018/Workshop/CDNNRIA/Program_Chairs')
14 |
15 | var programchair_mail = {
16 | "groups": sendto,
17 | "subject": "Review posted to paper: \"" + forum.content.title + "\"",
18 | "message": "A submission to " + conference + ", has received an official review. \n\nTitle: " + note.content.title + "\n\nComment: " + note.content.review + "\n\nTo view the review, click here: " + baseUrl + "/forum?id=" + note.forum
19 | };
20 | var programchairMailP = or3client.or3request( or3client.mailUrl, programchair_mail, 'POST', token );
21 |
22 | return programchairMailP;
23 | })
24 | .then(result => done())
25 | .catch(error => done(error));
26 | return true;
27 | };
28 |
--------------------------------------------------------------------------------
/venues/NIPS.cc/2018/Workshop/IRASL/process/officialReviewProcess.js:
--------------------------------------------------------------------------------
1 |
2 | function(){
3 | var or3client = lib.or3client;
4 |
5 | var origNote = or3client.or3request(or3client.notesUrl+'?id='+note.forum, {}, 'GET', token);
6 | var list = note.invitation.replace(/_/g,' ').split('/');
7 | list.splice(list.indexOf('-',1));
8 | var conference = list.join(' ');
9 |
10 | origNote.then(function(result) {
11 | var forum = result.notes[0];
12 | var sendto = forum.content.authorids;
13 | sendto.push('NIPS.cc/2018/Workshop/IRASL/Program_Chairs')
14 |
15 | var programchair_mail = {
16 | "groups": sendto,
17 | "subject": "Review posted to paper: \"" + forum.content.title + "\"",
18 | "message": "A submission to " + conference + ", has received an official review. \n\nTitle: " + note.content.title + "\n\nComment: " + note.content.review + "\n\nTo view the review, click here: " + baseUrl + "/forum?id=" + note.forum
19 | };
20 | var programchairMailP = or3client.or3request( or3client.mailUrl, programchair_mail, 'POST', token );
21 |
22 | return programchairMailP;
23 | })
24 | .then(result => done())
25 | .catch(error => done(error));
26 | return true;
27 | };
28 |
--------------------------------------------------------------------------------
/venues/NIPS.cc/2018/Workshop/MLITS/process/addRevisionProcess.js:
--------------------------------------------------------------------------------
1 | function() {
2 | var or3client = lib.or3client;
3 |
4 | var number = note.invitation.split('/')[4].split('Paper')[1];
5 |
6 | var CONF = 'NIPS.cc/2018/Workshop/MLITS';
7 |
8 | or3client.or3request(or3client.notesUrl + '?forum=' + note.forum, {}, 'GET', token)
9 | .then(result => result.notes.filter(n => n.forum === n.id)[0])
10 | .then(originalNote => originalNote.overwriting[0])
11 | .then(overwritingId => {
12 | var reviewerMail = {
13 | "groups": [CONF+'/Paper' + number + '/Reviewers'],
14 | "subject": "Revision posted to a paper that you reviewed",
15 | "message": "A paper that you reviewed has been revised. \n\nTo view the paper, click here: " + baseUrl + "/forum?id=" + overwritingId + "\n\nYou can see the changes made at " + baseUrl + "/revisions?id=" + overwritingId
16 | };
17 | return or3client.or3request(or3client.mailUrl, reviewerMail, 'POST', token)
18 | })
19 | .then(result => done())
20 | .catch(error => done(error));
21 | return true;
22 | }
23 |
--------------------------------------------------------------------------------
/venues/NIPS.cc/2018/Workshop/Spatiotemporal/process/addRevisionProcess.js:
--------------------------------------------------------------------------------
1 | function() {
2 | var or3client = lib.or3client;
3 |
4 | var number = note.invitation.split('/')[4].split('Paper')[1];
5 |
6 | var CONF = 'NIPS.cc/2018/Workshop/Spatiotemporal';
7 |
8 | or3client.or3request(or3client.notesUrl + '?forum=' + note.forum, {}, 'GET', token)
9 | .then(result => result.notes.filter(n => n.forum === n.id)[0])
10 | .then(originalNote => originalNote.overwriting[0])
11 | .then(overwritingId => {
12 | var reviewerMail = {
13 | "groups": [CONF+'/Paper' + number + '/Reviewers'],
14 | "subject": "Revision posted to a paper that you reviewed",
15 | "message": "A paper that you reviewed has been revised. \n\nTo view the paper, click here: " + baseUrl + "/forum?id=" + overwritingId + "\n\nYou can see the changes made at " + baseUrl + "/revisions?id=" + overwritingId
16 | };
17 | return or3client.or3request(or3client.mailUrl, reviewerMail, 'POST', token)
18 | })
19 | .then(result => done())
20 | .catch(error => done(error));
21 | return true;
22 | }
23 |
--------------------------------------------------------------------------------
/venues/NIPS.cc/2018/Workshop/Spatiotemporal/process/confidentialReviewProcess.js:
--------------------------------------------------------------------------------
1 |
2 | function(){
3 | var or3client = lib.or3client;
4 |
5 | var origNote = or3client.or3request(or3client.notesUrl+'?id='+note.forum, {}, 'GET', token);
6 | var list = note.invitation.replace(/_/g,' ').split('/');
7 | list.splice(list.indexOf('-',1));
8 | var conference = list.join(' ');
9 |
10 | origNote.then(function(result) {
11 | var forum = result.notes[0];
12 | var prog_chair = ['NIPS.cc/2018/Workshop/Spatiotemporal/Program_Chairs'];
13 |
14 | var progchair_mail = {
15 | "groups": prog_chair,
16 | "subject": "Review posted to paper: \"" + forum.content.title + "\"",
17 | "message": "A submission to " + conference + ", has received a confidential review.\n\nRelevance to the workshop: " + note.content.relevance + '\n\nNovelty: ' + note.content.novelty + '\n\nPotential impact: ' + note.content.impact + '\n\nTo view the evaluation, click here: ' + baseUrl+'/forum?id=' + note.forum +'¬eId='+note.id
18 | };
19 | var progchairMailP = or3client.or3request( or3client.mailUrl, progchair_mail, 'POST', token );
20 |
21 | return progchairMailP;
22 | })
23 | .then(result => done())
24 | .catch(error => done(error));
25 | return true;
26 | };
27 |
--------------------------------------------------------------------------------
/venues/NIPS.cc/2018/Workshop/Spatiotemporal/process/overallEvaluationProcess.js:
--------------------------------------------------------------------------------
1 | function(){
2 | var or3client = lib.or3client;
3 |
4 | var SHORT_PHRASE = 'NIPS 2018 Spatiotemporal Workshop';
5 |
6 | var origNoteP = or3client.or3request(or3client.notesUrl + '?id=' + note.forum, {}, 'GET', token);
7 | var replytoNoteP = note.replyto ? or3client.or3request(or3client.notesUrl + '?id=' + note.replyto, {}, 'GET', token) : null;
8 |
9 | Promise.all([
10 | origNoteP,
11 | replytoNoteP
12 | ]).then(function(result) {
13 |
14 | var origNote = result[0].notes[0];
15 | var replytoNote = note.replyto ? result[1].notes[0] : null;
16 | var replytoNoteSignatures = replytoNote ? replytoNote.signatures : [];
17 | var author_mail = {
18 | groups: origNote.content.authorids,
19 | subject: 'Your submission to ' + SHORT_PHRASE + ' has received an evaluation',
20 | message: 'Your submission to ' + SHORT_PHRASE + ' has received an evaluation.\n\nEvaluation: ' + note.content.evaluation + '\n\nTo view the evaluation, click here: ' + baseUrl+'/forum?id=' + note.forum +'¬eId='+note.id
21 | };
22 |
23 | return or3client.or3request(or3client.mailUrl, author_mail, 'POST', token);
24 |
25 | })
26 | .then(result => done())
27 | .catch(error => done(error));
28 |
29 | return true;
30 | };
31 |
--------------------------------------------------------------------------------
/venues/NIPS.cc/2018/Workshop/Spatiotemporal/process/pcCommentProcess.js:
--------------------------------------------------------------------------------
1 | function(){
2 | var or3client = lib.or3client;
3 |
4 | var SHORT_PHRASE = 'NIPS 2018 Spatiotemporal Workshop';
5 |
6 | var origNoteP = or3client.or3request(or3client.notesUrl + '?id=' + note.forum, {}, 'GET', token);
7 |
8 | Promise.all([
9 | origNoteP,
10 | ]).then(function(result) {
11 |
12 | var origNote = result[0].notes[0];
13 |
14 | var author_mail = {
15 | groups: origNote.content.authorids,
16 | subject: 'Your submission to ' + SHORT_PHRASE + ' has received a comment',
17 | message: 'Your submission to ' + SHORT_PHRASE + ' has received a comment.\n\nComment: ' + note.content.comment + '\n\nTo view the comment, click here: ' + baseUrl+'/forum?id=' + note.forum +'¬eId='+note.id
18 | };
19 |
20 | return or3client.or3request(or3client.mailUrl, author_mail, 'POST', token);
21 | })
22 | .then(result => done())
23 | .catch(error => done(error));
24 |
25 | return true;
26 | };
27 |
--------------------------------------------------------------------------------
/venues/NIPS.cc/NIPS-landing-webfield.js:
--------------------------------------------------------------------------------
1 | var GROUP_ID = 'NIPS.cc';
2 | var HEADER = {
3 | title: 'Neural Information Processing Systems',
4 | description: ''
5 | };
6 | var VENUE_LINKS = [
7 | { url: '/group?id=NIPS.cc/2018/Workshop/Spatiotemporal', name: 'NIPS 2018 Spatiotemporal Workshop' },
8 | { url: '/group?id=NIPS.cc/2018/Workshop/IRASL', name: 'NIPS 2018 IRASL Workshop' },
9 | { url: '/group?id=NIPS.cc/2018/Workshop/MLITS', name: 'NIPS 2018 MLITS Workshop' },
10 | { url: '/group?id=NIPS.cc/2018/Workshop/MLOSS', name: 'NIPS 2018 MLOSS Workshop' },
11 | { type: 'divider' },
12 | { url: '/group?id=NIPS.cc/2017/Workshop/Autodiff', name: 'NIPS 2017 Autodiff Workshop' },
13 | { url: '/group?id=NIPS.cc/2017/Workshop/MLITS', name: 'NIPS 2017 MLITS Workshop' },
14 | { type: 'divider' },
15 | { url: '/group?id=NIPS.cc/2016/Deep_Learning_Symposium', name: 'NIPS 2016 Deep Learning Symposium' },
16 | { url: '/group?id=NIPS.cc/2016/workshop/MLITS', name: 'NIPS 2016 MLITS Workshop' },
17 | { url: '/group?id=NIPS.cc/2016/workshop/NAMPI', name: 'NIPS 2016 NAMPI Workshop' },
18 | ];
19 |
20 | Webfield.ui.setup('#group-container', GROUP_ID);
21 |
22 | Webfield.ui.header(HEADER.title, HEADER.description, { underline: true });
23 |
24 | Webfield.ui.linksList(VENUE_LINKS);
25 |
26 | OpenBanner.welcome();
27 |
--------------------------------------------------------------------------------
/venues/NeurIPS.cc/2021/Conference/python/README.md:
--------------------------------------------------------------------------------
1 | NeurIPS 2021 scripts
--------------------------------------------------------------------------------
/venues/OpenReview.net/Anonymous_Preprint/process/addRevisionProcess.js:
--------------------------------------------------------------------------------
1 | function() {
2 | var or3client = lib.or3client;
3 | var CONF = 'OpenReview.net/Anonymous_Preprint';
4 |
5 | // Don't do anything.
6 |
7 | done()
8 | return true;
9 | }
10 |
--------------------------------------------------------------------------------
/venues/OpenReview.net/Anonymous_Preprint/process/revealProcess.py:
--------------------------------------------------------------------------------
1 | def process(client, note, invitation):
2 | # create new reference with only the updated bibtex
3 | import datetime
4 |
5 | # Get the blinded submission in order to reveal author info
6 | blind_note = client.get_note(id=note.forum)
7 | blind_note.content={'_bibtex': blind_note.content['_bibtex']}
8 | # Post blinded note w/o covering author info
9 | blind_note = client.post_note(blind_note)
10 |
11 | # then use author info to update bibtex
12 | first_word = blind_note.content['title'].split(' ')[0].lower()
13 | year = str(datetime.datetime.now().year)
14 | first_author = blind_note.content['authors'][0]
15 | last_name = first_author.split(' ')[-1].lower()
16 |
17 | bibtex_text = 'unpublished{\
18 | \n' + last_name + year + first_word + ',\
19 | \ntitle={' + blind_note.content['title'] + '},\
20 | \nauthor={' + ', '.join(blind_note.content['authors']) + '},\
21 | \njournal={OpenReview Preprint},\
22 | \nyear={' + year + '},\
23 | \nnote={preprint under review}\
24 | \n}'
25 |
26 | print("Reveal process: "+bibtex_text)
27 | blind_note.content = {'_bibtex': bibtex_text}
28 | client.post_note(blind_note)
29 |
--------------------------------------------------------------------------------
/venues/OpenReview.net/Anonymous_Preprint/process/revisionProcess.py:
--------------------------------------------------------------------------------
1 | def process(client, note, invitation):
2 | import datetime
3 |
4 | # update bibtex
5 | def getBibtex(note) :
6 | year = str(datetime.datetime.now().year)
7 | first_word = note.content['title'].split(' ')[0].lower()
8 | first_author = note.content['authors'][0]
9 | last_name = first_author.split(' ')[-1].lower()
10 | return '@unpublished{\
11 | \n' + last_name + year + first_word + ',\
12 | \ntitle={' + note.content['title'] + '},\
13 | \nauthor={' + ','.join(note.content['authors']) + '},\
14 | \njournal={OpenReview Preprint},\
15 | \nyear={' + year + '},\
16 | \nnote={anonymous preprint under review}\
17 | \n}'
18 |
19 | notes = client.get_notes(original=note.forum)
20 | forum_note = None
21 | for note in notes:
22 | if note.invitation.endswith("Blind_Submission"):
23 | forum_note=note
24 |
25 | if forum_note:
26 | forum_content = {
27 | 'authors': forum_note.content['authors'],
28 | 'authorids': forum_note.content['authorids'],
29 | '_bibtex': getBibtex(forum_note)
30 | }
31 | forum_note.content = forum_content
32 | client.post_note(forum_note)
33 |
34 | else:
35 | raise openreview.OpenReviewException('Revision process: Blind submission not found for forum '+note.forum)
--------------------------------------------------------------------------------
/venues/OpenReview.net/Support/commentProcess.js:
--------------------------------------------------------------------------------
1 | function(){
2 | var or3client = lib.or3client;
3 |
4 | var CONFERENCE_ID = 'OpenReview.net/Support';
5 |
6 | or3client.or3request(or3client.notesUrl + '?id=' + note.forum, {}, 'GET', token)
7 | .then(function(result) {
8 |
9 | var forumNote = result.notes[0];
10 |
11 | var message = {
12 | groups: note.readers,
13 | ignoreGroups: [note.tauthor, CONFERENCE_ID],
14 | subject: 'Comment posted to your request for service: ' + forumNote.content.title,
15 | message: 'A comment was posted to your service request. \n\nComment title: ' + note.content.title + '\n\nComment: ' + note.content.comment + '\n\nTo view the comment, click here: ' + baseUrl + '/forum?id=' + note.forum + '¬eId=' + note.id
16 | };
17 |
18 | var support_message = {
19 | groups: [CONFERENCE_ID],
20 | subject: 'Comment posted to a service request: ' + forumNote.content.title,
21 | message: 'A comment was posted to a service request. \n\nComment title: ' + note.content.title + '\n\nComment: ' + note.content.comment + '\n\nTo view the comment, click here: ' + baseUrl + '/forum?id=' + note.forum + '¬eId=' + note.id
22 | };
23 |
24 | return or3client.or3request(or3client.mailUrl, message, 'POST', token)
25 | .then(result => or3client.or3request(or3client.mailUrl, support_message, 'POST', token));
26 | })
27 | .then(result => done())
28 | .catch(error => done(error));
29 |
30 | return true;
31 | };
32 |
--------------------------------------------------------------------------------
/venues/UAI/update-custom-edges.py:
--------------------------------------------------------------------------------
1 | import argparse
2 | import openreview
3 | from tqdm import tqdm
4 |
5 |
6 | """
7 | OPTIONAL SCRIPT ARGUMENTS
8 |
9 | baseurl - the URL of the OpenReview server to connect to (live site: https://openreview.net)
10 | username - the email address of the logging in user
11 | password - the user's password
12 |
13 | """
14 | parser = argparse.ArgumentParser()
15 | parser.add_argument('--baseurl', help="base URL")
16 | parser.add_argument('--username')
17 | parser.add_argument('--password')
18 | args = parser.parse_args()
19 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
20 |
21 | edges_a = list(openreview.tools.iterget_edges(client, invitation = 'auai.org/UAI/2022/Conference/Reviewers/-/Conflict', label = 'exp conflict paper(B) reviewer(A)'))
22 | edges_b = list(openreview.tools.iterget_edges(client, invitation = 'auai.org/UAI/2022/Conference/Reviewers/-/Conflict', label = 'exp conflict paper(A) reviewer(B)'))
23 |
24 | ac_id = 'auai.org/UAI/2022/Conference/Area_Chairs'
25 | confid = 'auai.org/UAI/2022/Conference'
26 |
27 | for edge in tqdm(edges_a):
28 | edge.readers = [edge.tail, ac_id, confid]
29 | client.post_edge(edge)
30 | for edge in tqdm(edges_b):
31 | edge.readers = [edge.tail, ac_id, confid]
32 | client.post_edge(edge)
33 |
--------------------------------------------------------------------------------
/venues/aclweb.org/ACL/create_main_ethics_ac_reviewers.py:
--------------------------------------------------------------------------------
1 | # Just here for reference, removed them from reviewer_ac_groups because they shouldn't be created every time
2 | # Create Ethics AC group
3 | ethics = client.post_group(openreview.Group(
4 | id = 'aclweb.org/ACL/2022/Conference/Ethics_Chairs',
5 | signatures = [
6 | 'aclweb.org/ACL/2022/Conference'
7 | ],
8 | signatories=[
9 | 'aclweb.org/ACL/2022/Conference',
10 | 'aclweb.org/ACL/2022/Conference/Ethics_Chairs'
11 | ],
12 | readers = [
13 | 'aclweb.org/ACL/2022/Conference',
14 | 'aclweb.org/ACL/2022/Conference/Ethics_Chairs'
15 | ],
16 | writers = [
17 | 'aclweb.org/ACL/2022/Conference'
18 | ],
19 | members = [
20 |
21 | ]
22 | ))
23 | # Create Ethics Reviewers Group
24 | ethics_reviewers = client.post_group(openreview.Group(
25 | id = f'aclweb.org/ACL/2022/Conference/Ethics_Reviewers',
26 | signatures = [
27 | 'aclweb.org/ACL/2022/Conference'
28 | ],
29 | signatories=[
30 | 'aclweb.org/ACL/2022/Conference'
31 | ],
32 | readers = [
33 | 'aclweb.org/ACL/2022/Conference/Ethics_Chairs',
34 | 'aclweb.org/ACL/2022/Conference/Ethics_Reviewers',
35 | 'aclweb.org/ACL/2022/Conference'
36 | ],
37 | writers = [
38 | 'aclweb.org/ACL/2022/Conference'
39 | ]
40 | ))
--------------------------------------------------------------------------------
/venues/aclweb.org/ACL/decision_process.py:
--------------------------------------------------------------------------------
1 | def process(client, note, invitation):
2 | from datetime import datetime
3 | CONFERENCE_ID = 'aclweb.org/ACL/2022/Conference'
4 | CONFERENCE_SHORT_NAME = 'ACL 2022 Conference'
5 | #DESK_REJECTED_SUBMISSION_ID = 'aclweb.org/ACL/2022/Conference/-/Desk_Rejected_Submission'
6 |
7 | forum_note = client.get_note(note.forum)
8 |
9 |
10 |
11 | # Mail to the submission readers
12 | email_subject = '''{CONFERENCE_SHORT_NAME}: Decision posted to Paper #{paper_number} titled "{paper_title}" by program chairs'''.format(
13 | CONFERENCE_SHORT_NAME=CONFERENCE_SHORT_NAME,
14 | paper_number=forum_note.number,
15 | paper_title=forum_note.content['title']
16 |
17 | )
18 | email_body = f'A decision was posted to Paper #{forum_note.number} titled "{forum_note.content["title"]}"".\n\n Decision: {note.content["decision"]}.\n\nView it here: https://openreview.net/forum?id={forum_note.forum}¬eId={note.id}'
19 |
20 |
21 |
22 | recipients = note.readers
23 | client.post_message(subject=email_subject, recipients=recipients, message=email_body, ignoreRecipients=note.nonreaders)
24 |
25 |
--------------------------------------------------------------------------------
/venues/aclweb.org/ACL/ethics_review_process.py:
--------------------------------------------------------------------------------
1 | def process(client, note, invitation):
2 | from datetime import datetime
3 | CONFERENCE_ID = 'aclweb.org/ACL/2022/Conference'
4 | CONFERENCE_SHORT_NAME = 'ACL 2022 Conference'
5 |
6 |
7 | forum_note = client.get_note(note.forum)
8 |
9 | # Mail to the submission readers
10 | email_subject = '''{CONFERENCE_SHORT_NAME}: Ethics Review Posted to Paper #{paper_number} titled "{paper_title}"'''.format(
11 | CONFERENCE_SHORT_NAME=CONFERENCE_SHORT_NAME,
12 | paper_number=forum_note.number,
13 | paper_title=forum_note.content['title']
14 | )
15 | email_body = f'An ethics review was posted to Paper #{forum_note.number} titled "{forum_note.content["title"]}":\n\nRecommendation: {note.content["recommendation"]}\n\nJustification: {note.content["ethics_review"]}'
16 |
17 |
18 |
19 | recipients = note.readers
20 |
21 | client.post_message(subject=email_subject, recipients=recipients, message=email_body, ignoreRecipients=note.nonreaders)
22 |
--------------------------------------------------------------------------------
/venues/aclweb.org/ACL/ethics_reviewer_assignment_preprocess.py:
--------------------------------------------------------------------------------
1 | def process(client, edge, invitation):
2 |
3 | print(edge.id)
4 |
5 | if edge.ddate is None:
6 |
7 | ## Get the submission
8 | submission = client.get_note(id=edge.head)
9 |
10 | ## - Get profile
11 | user = edge.tail
12 | print(f'Get profile for {user}')
13 | user_profile=openreview.tools.get_profiles(client, [user], with_publications=True)[0]
14 |
15 | print(f'Check conflicts for {user_profile.id}')
16 | ## - Check conflicts
17 | authors = client.get_group(f'aclweb.org/ACL/2022/Conference/Paper{submission.number}/Authors')
18 | author_profiles = openreview.tools.get_profiles(client, authors.members, with_publications=True)
19 | conflicts=openreview.tools.get_conflicts(author_profiles, user_profile, policy = 'neurips', n_years=5)
20 | if conflicts:
21 | print('Conflicts detected', conflicts)
22 | raise openreview.OpenReviewException(f'Conflict detected for {user_profile.get_preferred_name(pretty=True)}')
23 |
24 | return edge
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/venues/aclweb.org/ACL/flagged_papers.py:
--------------------------------------------------------------------------------
1 | flagged_papers = [1320,948,868,463,1822,1656,1729,779,1654,1773,1812,1684,1801,1197,1713,1753,1296,857,1772,1076,14,1915,450,963,886,1657,1003,1479,854,1498,860,1187]
2 |
--------------------------------------------------------------------------------
/venues/aclweb.org/ACL/suggested_decision_pre_process.py:
--------------------------------------------------------------------------------
1 | def process(client, note, invitation):
2 |
3 | if ('2 - possible accept to main conference' in note.content['suggested_decision'] or '3 - possible accept to findings' in note.content['suggested_decision']) and 'ranking' not in note.content:
4 | raise openreview.OpenReviewException('Please select a ranking for this paper.')
--------------------------------------------------------------------------------
/venues/aclweb.org/ACL/suggested_decision_process.py:
--------------------------------------------------------------------------------
1 | def process(client, note, invitation):
2 | from datetime import datetime
3 |
4 |
5 | forum_note = client.get_note(note.forum)
6 | CONFERENCE_ID = 'aclweb.org/ACL/2022/Conference'
7 | CONFERENCE_SHORT_NAME = 'ACL 2022 Conference'
8 |
9 |
10 | email_subject = f'{CONFERENCE_SHORT_NAME}: A suggested decision has been posted to a paper in your area'
11 | email_body = f'A suggested decision has been posted to Paper {forum_note.number} in {CONFERENCE_SHORT_NAME} track {forum_note.content["track"]}. \n\nSuggested decision: {note.content["suggested_decision"]}\n\nView it here: https://openreview.net/forum?id={note.forum}¬eId={note.id}'
12 | client.post_message(subject=email_subject, recipients=note.readers, message=email_body, ignoreRecipients=note.nonreaders)
13 |
--------------------------------------------------------------------------------
/venues/aclweb.org/ACL/withdraw-ACL-process.py:
--------------------------------------------------------------------------------
1 | def process(client, note, invitation):
2 | from datetime import datetime
3 | CONFERENCE_ID = 'aclweb.org/ACL/2022/Conference'
4 | CONFERENCE_SHORT_NAME = 'ACL 2022 Conference'
5 | WITHDRAWN_SUBMISSION_ID = 'aclweb.org/ACL/2022/Conference/-/Withdrawn_Submission'
6 |
7 | forum_note = client.get_note(note.forum)
8 | forum_note.invitation = WITHDRAWN_SUBMISSION_ID
9 | forum_note.content = {
10 | 'authors': forum_note.content['authors'],
11 | 'authorids': forum_note.content['authorids']
12 | }
13 | forum_note = client.post_note(forum_note)
14 |
15 | # Mail to the submission readers
16 | email_subject = '''{CONFERENCE_SHORT_NAME}: Paper #{paper_number} titled "{paper_title}" withdrawn by authors'''.format(
17 | CONFERENCE_SHORT_NAME=CONFERENCE_SHORT_NAME,
18 | paper_number=forum_note.number,
19 | paper_title=forum_note.content['title']
20 | )
21 | email_body = '''The {CONFERENCE_SHORT_NAME} paper "{paper_title_or_num}" has been withdrawn by the paper authors.'''.format(
22 | CONFERENCE_SHORT_NAME=CONFERENCE_SHORT_NAME,
23 | paper_title_or_num=forum_note.content.get('title', '#'+str(forum_note.number))
24 | )
25 |
26 | PAPER_AUTHORS_ID = f'aclweb.org/ACL/2022/Conference/Paper{forum_note.number}/Authors'
27 |
28 | recipients = note.readers
29 | recipients.append(PAPER_AUTHORS_ID)
30 | client.post_message(subject=email_subject, recipients=recipients, message=email_body, ignoreRecipients=note.nonreaders)
31 |
--------------------------------------------------------------------------------
/venues/aclweb.org/NAACL/2018/Preprint/process/addRevisionProcess.js:
--------------------------------------------------------------------------------
1 | function() {
2 | var or3client = lib.or3client;
3 | var CONF = 'aclweb.org/NAACL/2018/Preprint';
4 |
5 | // Don't do anything.
6 |
7 | done()
8 | return true;
9 | }
10 |
--------------------------------------------------------------------------------
/venues/aclweb.org/NAACL/2022/migrated-submissions/commitmentPreProcess.py:
--------------------------------------------------------------------------------
1 | def process(client, note, invitation):
2 |
3 | paper_link = note.content['paper_link']
4 | paper_forum = paper_link.split('=')[-1]
5 |
6 | try:
7 | arr_submission = client.get_note(paper_forum)
8 | except openreview.OpenReviewException as e:
9 | raise openreview.OpenReviewException('Provided paper link does not correspond to a submission in OpenReview')
10 |
11 | if ('aclweb.org/ACL/ARR/2021' not in arr_submission.invitation) and ('aclweb.org/ACL/ARR/2022' not in arr_submission.invitation):
12 | raise openreview.OpenReviewException('Provided paper link does not correspond to an ARR submission')
13 |
--------------------------------------------------------------------------------
/venues/aclweb.org/NAACL/2022/migrated-submissions/create_main_ethics_ac_reviewers.py:
--------------------------------------------------------------------------------
1 | # Just here for reference, removed them from reviewer_ac_groups because they shouldn't be created every time
2 | # Create Ethics AC group
3 | ethics = client.post_group(openreview.Group(
4 | id = 'aclweb.org/ACL/2022/Conference/Ethics_Chairs',
5 | signatures = [
6 | 'aclweb.org/ACL/2022/Conference'
7 | ],
8 | signatories=[
9 | 'aclweb.org/ACL/2022/Conference',
10 | 'aclweb.org/ACL/2022/Conference/Ethics_Chairs'
11 | ],
12 | readers = [
13 | 'aclweb.org/ACL/2022/Conference',
14 | 'aclweb.org/ACL/2022/Conference/Ethics_Chairs'
15 | ],
16 | writers = [
17 | 'aclweb.org/ACL/2022/Conference'
18 | ],
19 | members = [
20 |
21 | ]
22 | ))
23 | # Create Ethics Reviewers Group
24 | ethics_reviewers = client.post_group(openreview.Group(
25 | id = f'aclweb.org/ACL/2022/Conference/Ethics_Reviewers',
26 | signatures = [
27 | 'aclweb.org/ACL/2022/Conference'
28 | ],
29 | signatories=[
30 | 'aclweb.org/ACL/2022/Conference'
31 | ],
32 | readers = [
33 | 'aclweb.org/ACL/2022/Conference/Ethics_Chairs',
34 | 'aclweb.org/ACL/2022/Conference/Ethics_Reviewers',
35 | 'aclweb.org/ACL/2022/Conference'
36 | ],
37 | writers = [
38 | 'aclweb.org/ACL/2022/Conference'
39 | ]
40 | ))
--------------------------------------------------------------------------------
/venues/aclweb.org/NAACL/2022/migrated-submissions/decision_process.py:
--------------------------------------------------------------------------------
1 | def process(client, note, invitation):
2 | from datetime import datetime
3 | CONFERENCE_ID = 'aclweb.org/NAACL/2022/Conference'
4 | CONFERENCE_SHORT_NAME = 'NAACL 2022 Conference'
5 | #DESK_REJECTED_SUBMISSION_ID = 'aclweb.org/ACL/2022/Conference/-/Desk_Rejected_Submission'
6 |
7 | forum_note = client.get_note(note.forum)
8 |
9 |
10 |
11 | # Mail to the submission readers
12 | email_subject = '''{CONFERENCE_SHORT_NAME}: Decision posted to Commitment #{paper_number} titled "{paper_title}" by program chairs'''.format(
13 | CONFERENCE_SHORT_NAME=CONFERENCE_SHORT_NAME,
14 | paper_number=forum_note.number,
15 | paper_title=forum_note.content['title']
16 |
17 | )
18 | email_body = f'A decision was posted to Commitment #{forum_note.number} titled "{forum_note.content["title"]}"".\n\n Decision: {note.content["decision"]}.\n\nView it here: https://openreview.net/forum?id={forum_note.forum}¬eId={note.id}'
19 |
20 |
21 |
22 | recipients = note.readers
23 | client.post_message(subject=email_subject, recipients=recipients, message=email_body, ignoreRecipients=note.nonreaders)
24 |
25 |
--------------------------------------------------------------------------------
/venues/aclweb.org/NAACL/2022/migrated-submissions/ethics_review_process.py:
--------------------------------------------------------------------------------
1 | def process(client, note, invitation):
2 | from datetime import datetime
3 | CONFERENCE_ID = 'aclweb.org/NAACL/2022/Conference'
4 | CONFERENCE_SHORT_NAME = 'NAACL 2022 Conference'
5 |
6 |
7 | forum_note = client.get_note(note.forum)
8 |
9 | # Mail to the submission readers
10 | email_subject = '''{CONFERENCE_SHORT_NAME}: Ethics Review Posted to Paper #{paper_number} titled "{paper_title}"'''.format(
11 | CONFERENCE_SHORT_NAME=CONFERENCE_SHORT_NAME,
12 | paper_number=forum_note.number,
13 | paper_title=forum_note.content['title']
14 | )
15 | email_body = f'An ethics review was posted to Paper #{forum_note.number} titled "{forum_note.content["title"]}":\n\nRecommendation: {note.content["recommendation"]}\n\nJustification: {note.content["ethics_review"]}'
16 |
17 |
18 |
19 | recipients = note.readers
20 |
21 | client.post_message(subject=email_subject, recipients=recipients, message=email_body, ignoreRecipients=note.nonreaders)
22 |
--------------------------------------------------------------------------------
/venues/aclweb.org/NAACL/2022/migrated-submissions/ethics_reviewer_assignment_preprocess.py:
--------------------------------------------------------------------------------
1 | def process(client, edge, invitation):
2 |
3 | print(edge.id)
4 |
5 | if edge.ddate is None:
6 |
7 | ## Get the submission
8 | submission = client.get_note(id=edge.head)
9 |
10 | ## - Get profile
11 | user = edge.tail
12 | print(f'Get profile for {user}')
13 | user_profile=openreview.tools.get_profiles(client, [user], with_publications=True)[0]
14 |
15 | print(f'Check conflicts for {user_profile.id}')
16 | ## - Check conflicts
17 | authors = client.get_group(f'aclweb.org/NAACL/2022/Conference/Commitment{submission.number}/Authors')
18 | author_profiles = openreview.tools.get_profiles(client, authors.members, with_publications=True)
19 | conflicts=openreview.tools.get_conflicts(author_profiles, user_profile, policy = 'neurips', n_years=5)
20 | if conflicts:
21 | print('Conflicts detected', conflicts)
22 | raise openreview.OpenReviewException(f'Conflict detected for {user_profile.get_preferred_name(pretty=True)}')
23 |
24 | return edge
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/venues/aclweb.org/NAACL/2022/migrated-submissions/flagged_papers.py:
--------------------------------------------------------------------------------
1 | flagged_papers = [426]
--------------------------------------------------------------------------------
/venues/aclweb.org/NAACL/2022/migrated-submissions/suggested_decision_pre_process.py:
--------------------------------------------------------------------------------
1 | def process(client, note, invitation):
2 |
3 | if ('2 - possible accept to main conference' in note.content['suggested_decision'] or '3 - possible accept to findings' in note.content['suggested_decision']) and 'ranking' not in note.content:
4 | raise openreview.OpenReviewException('Please select a ranking for this paper.')
--------------------------------------------------------------------------------
/venues/aclweb.org/NAACL/2022/migrated-submissions/suggested_decision_process.py:
--------------------------------------------------------------------------------
1 | def process(client, note, invitation):
2 | from datetime import datetime
3 |
4 |
5 | forum_note = client.get_note(note.forum)
6 | CONFERENCE_ID = 'aclweb.org/NAACL/2022/Conference'
7 | CONFERENCE_SHORT_NAME = 'NAACL 2022 Conference'
8 |
9 |
10 | email_subject = f'{CONFERENCE_SHORT_NAME}: A suggested decision has been posted to a paper in your area'
11 | email_body = f'A suggested decision has been posted to Paper {forum_note.number} in {CONFERENCE_SHORT_NAME} track {forum_note.content["track"]}. \n\nSuggested decision: {note.content["suggested_decision"]}\n\nView it here: https://openreview.net/forum?id={note.forum}¬eId={note.id}'
12 | client.post_message(subject=email_subject, recipients=note.readers, message=email_body, ignoreRecipients=note.nonreaders)
13 |
--------------------------------------------------------------------------------
/venues/aclweb.org/NAACL/2022/special-theme/ethics_review_process.py:
--------------------------------------------------------------------------------
1 | def process(client, note, invitation):
2 | from datetime import datetime
3 | CONFERENCE_ID = 'aclweb.org/NAACL/2022/Conference'
4 | CONFERENCE_SHORT_NAME = 'NAACL 2022 Conference'
5 |
6 |
7 | forum_note = client.get_note(note.forum)
8 |
9 | # Mail to the submission readers
10 | email_subject = '''{CONFERENCE_SHORT_NAME}: Ethics Review Posted to Paper #{paper_number} titled "{paper_title}"'''.format(
11 | CONFERENCE_SHORT_NAME=CONFERENCE_SHORT_NAME,
12 | paper_number=forum_note.number,
13 | paper_title=forum_note.content['title']
14 | )
15 | email_body = f'An ethics review was posted to Paper #{forum_note.number} titled "{forum_note.content["title"]}":\n\nRecommendation: {note.content["recommendation"]}\n\nJustification: {note.content["ethics_review"]}'
16 |
17 |
18 |
19 | recipients = note.readers
20 |
21 | client.post_message(subject=email_subject, recipients=recipients, message=email_body, ignoreRecipients=note.nonreaders)
22 |
--------------------------------------------------------------------------------
/venues/aclweb.org/NAACL/2022/special-theme/ethics_reviewer_assignment_preprocess.py:
--------------------------------------------------------------------------------
1 | def process(client, edge, invitation):
2 |
3 | print(edge.id)
4 |
5 | if edge.ddate is None:
6 |
7 | ## Get the submission
8 | submission = client.get_note(id=edge.head)
9 |
10 | ## - Get profile
11 | user = edge.tail
12 | print(f'Get profile for {user}')
13 | user_profile=openreview.tools.get_profiles(client, [user], with_publications=True)[0]
14 |
15 | print(f'Check conflicts for {user_profile.id}')
16 | ## - Check conflicts
17 | authors = client.get_group(f'aclweb.org/NAACL/2022/Conference/Paper{submission.number}/Authors')
18 | author_profiles = openreview.tools.get_profiles(client, authors.members, with_publications=True)
19 | conflicts=openreview.tools.get_conflicts(author_profiles, user_profile, policy = 'neurips', n_years=5)
20 | if conflicts:
21 | print('Conflicts detected', conflicts)
22 | raise openreview.OpenReviewException(f'Conflict detected for {user_profile.get_preferred_name(pretty=True)}')
23 |
24 | return edge
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/venues/aclweb.org/NAACL/2022/special-theme/flagged_papers.py:
--------------------------------------------------------------------------------
1 | flagged_papers = [17,28,32,48,52,53,60,76,79,81,97]
--------------------------------------------------------------------------------
/venues/aclweb.org/Workshops/camera_ready_process.py:
--------------------------------------------------------------------------------
1 | def process_update(client, note, invitation, existing_note):
2 | SHORT_PHRASE = ''
3 | AUTHOR_ID = ''
4 |
5 |
6 | action = 'posted'
7 | if existing_note:
8 | action = 'deleted' if note.ddate else 'updated'
9 |
10 | forum = client.get_note(note.forum)
11 |
12 | title = note.content.get('title', forum.content.get('title', ''))
13 | authorids = note.content.get('authorids', forum.content.get('authorids', []))
14 | abstract = note.content.get('abstract', forum.content.get('abstract', ''))
15 |
16 | subject = '{} has received a new revision of your submission titled {}'.format(SHORT_PHRASE, title)
17 | message = '''Your new revision of the submission to {} has been {}.
18 |
19 | Title: {}
20 |
21 | Abstract: {}
22 |
23 | To view your submission, click here: https://openreview.net/forum?id={}'''.format(SHORT_PHRASE, action, title, abstract, forum.id)
24 |
25 | client.post_message(subject=subject, recipients=authorids, message=message)
26 |
27 | if note.content.get('authorids'):
28 | author_group = openreview.tools.get_group(client, AUTHOR_ID)
29 | if author_group:
30 | author_group.members = authorids
31 | client.post_group(author_group)
32 |
33 |
34 |
--------------------------------------------------------------------------------
/venues/aclweb.org/Workshops/withdraw-ACL-process.py:
--------------------------------------------------------------------------------
1 | def process(client, note, invitation):
2 | from datetime import datetime
3 | CONFERENCE_SHORT_NAME = ''
4 | WITHDRAWN_SUBMISSION_ID = ''
5 |
6 | forum_note = client.get_note(note.forum)
7 | forum_note.invitation = WITHDRAWN_SUBMISSION_ID
8 |
9 |
10 |
11 | forum_note.content = {
12 | 'authors': forum_note.content['authors'],
13 | 'authorids': forum_note.content['authorids']
14 | }
15 | forum_note = client.post_note(forum_note)
16 |
17 |
18 | # Mail to the submission readers
19 | email_subject = '''{CONFERENCE_SHORT_NAME}: Paper #{paper_number} titled "{paper_title}" withdrawn by authors'''.format(
20 | CONFERENCE_SHORT_NAME=CONFERENCE_SHORT_NAME,
21 | paper_number=forum_note.number,
22 | paper_title=forum_note.content['title']
23 | )
24 | email_body = '''The {CONFERENCE_SHORT_NAME} paper "{paper_title_or_num}" has been withdrawn by the paper authors.'''.format(
25 | CONFERENCE_SHORT_NAME=CONFERENCE_SHORT_NAME,
26 | paper_title_or_num=forum_note.content.get('title', '#'+str(forum_note.number))
27 | )
28 |
29 | PAPER_AUTHORS_ID = ''
30 |
31 | recipients = note.readers
32 | recipients.append(PAPER_AUTHORS_ID)
33 | client.post_message(subject=email_subject, recipients=recipients, message=email_body, ignoreRecipients=note.nonreaders)
34 |
--------------------------------------------------------------------------------
/venues/adai.ai/DAI/2019/Conference/python/init.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import sys, os
4 | import argparse
5 | import datetime
6 | import openreview
7 | import config
8 |
9 | """
10 | OPTIONAL SCRIPT ARGUMENTS
11 | baseurl - the URL of the OpenReview server to connect to (live site: https://openreview.net)
12 | username - the email address of the logging in user
13 | password - the user's password
14 | """
15 |
16 | parser = argparse.ArgumentParser()
17 | parser.add_argument('--baseurl', help="base URL")
18 | parser.add_argument('--username')
19 | parser.add_argument('--password')
20 |
21 | args = parser.parse_args()
22 |
23 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
24 | print('connecting to {0}'.format(client.baseurl))
25 |
26 | conference = config.get_conference(client)
27 | conference.set_program_chairs([
28 | #hidden
29 | ])
30 | conference.set_reviewers([
31 | #hidden
32 | ])
33 |
34 |
--------------------------------------------------------------------------------
/venues/auai.org/UAI/2017/js/superuser-reset.js:
--------------------------------------------------------------------------------
1 | var counter = db.openreview_counters.byExample({'id':'UAI.org/2017/conference/-/submission'}).toArray()[0]
2 | db.openreview_counters.remove(counter._id)
3 |
4 | //also reset the counters for all the other invitations, not just submission
5 |
6 | var notes = db._query("FOR note IN openreview_notes FILTER CONTAINS(note.invitation, 'UAI.org/2017') RETURN note._id").toArray()
7 | for(i=0;i done())
5 | .catch(error => done(error));
6 | return true;
7 | };
--------------------------------------------------------------------------------
/venues/auai.org/UAI/2017/process/bidProcess.js:
--------------------------------------------------------------------------------
1 | function(){
2 | var or3client = lib.or3client;
3 | or3client.addInvitationNoninvitee(note.invitation, note.signatures[0],token)
4 | .then(result => done())
5 | .catch(error => done(error));
6 | return true;
7 | };
8 |
--------------------------------------------------------------------------------
/venues/auai.org/UAI/2017/process/emptyProcess.js:
--------------------------------------------------------------------------------
1 | function(){
2 | done();
3 | return true;
4 | };
5 |
--------------------------------------------------------------------------------
/venues/auai.org/UAI/2017/process/verdictProcess.js:
--------------------------------------------------------------------------------
1 | function(){
2 | var or3client = lib.or3client;
3 | return true;
4 | };
--------------------------------------------------------------------------------
/venues/auai.org/UAI/2017/python/assignment_utils.py:
--------------------------------------------------------------------------------
1 | import openreview
2 |
3 | def single_assignment_valid(s):
4 | try:
5 | user, paper_number= s.split(',')
6 |
7 | try:
8 | int(paper_number)
9 | except ValueError:
10 | return False
11 |
12 | if not '@' in user and not '~' in user:
13 | return False
14 |
15 | return True
16 | except IndexError:
17 | return False
18 |
19 | def get_nonreaders(paper_number, client):
20 | # nonreaders are a list of all domain groups of the authors of the paper
21 |
22 | authors = client.get_group('auai.org/UAI/2017/Paper%s/Authors' % paper_number)
23 | conflicts = set()
24 | for author in authors.members:
25 | try:
26 | conflicts.update(get_user_domains(author, client))
27 |
28 | except openreview.OpenReviewException:
29 | pass
30 |
31 | if 'gmail.com' in conflicts: conflicts.remove('gmail.com')
32 |
33 | return conflicts
34 |
35 |
36 | def get_user_domains(user, client):
37 |
38 | domains = set()
39 | members = client.get_groups(member = user)
40 | member_domains = [d.id for d in members if '@' in d.id]
41 | domains.update([p.split('@')[1] for p in member_domains])
42 |
43 | profile = client.get_profile(user)
44 | domains.update([p.split('@')[1] for p in profile.content['emails']])
45 | domains.update([p['institution']['domain'] for p in profile.content['history']])
46 |
47 | return domains
48 |
--------------------------------------------------------------------------------
/venues/auai.org/UAI/2018/README.md:
--------------------------------------------------------------------------------
1 | Before doing anything else, first ensure that the group auai.org/UAI/2018 already exists. It must be created by the OpenReview Super User.
2 |
3 | To set up the submission infrastructure: run /python/setup-submission.py
4 |
5 | To create the reviewer and area chair groups:
6 | - run /python/setup-pc-recruitment.py
7 | - run /python/setup-spc-recruitment.py
8 |
9 | Matching system:
10 |
11 | Before performing any match: make sure that all members of the "matching_group" are tilde IDs. This is important for the user interface to work properly.
12 |
13 | To set up the matching invitations/infrastructure:
14 | - run /python/setup-matching.py
15 | - run /python/setup-metadata.py
16 |
17 | To match reviewers and create assignments, run:
18 | - run /python/match-reviewers.py
19 |
20 |
--------------------------------------------------------------------------------
/venues/auai.org/UAI/2018/js/fix-reviews.js:
--------------------------------------------------------------------------------
1 | var ids_to_fix = [
2 | 'HJSDO-8iM',
3 | 'H1ibhvBsM',
4 | 'SJQjmBrif',
5 | 'SyOczBrsf',
6 | 'rkVKtGSjf',
7 | 'r10rnWriG',
8 | 'rJ746yrjG',
9 | 'B1sHmsEsz',
10 | 'SJNWlONsz',
11 | 'SJhWlWEjf',
12 | 'H1n1FxVsz',
13 | 'rkEs_eEif',
14 | 'B1FVul4sz',
15 | 'HkAkOeNjM',
16 | 'ByOYPlEiG',
17 | 'HJVC11VoM',
18 | 'Hy9GwpXsM',
19 | 'H1WwmDQsz',
20 | 'SkuM_xmsz',
21 | 'B1RFIqGiG',
22 | 'B1WJ2ZGsz',
23 | 'Hy_whnbsz',
24 | 'r1JLZvbjz',
25 | 'rkg4aZWif',
26 | 'SkRpFclsM',
27 | 'B1wncBgof',
28 | 'HycjnPhqM',
29 | 'BJTSLv39M',
30 | 'ByFDiE35M',
31 | 'SyKQi439G',
32 | 'ByvgjNn9M',
33 | 'BJA39V29z',
34 | 'BylL5V3cG',
35 | 'By2KfbnqG',
36 | 'Hyv9_Lo9M',
37 | 'S1PjQVicz'
38 | ];
39 |
40 | for(i=0; i done())
22 | .catch(error => done(error));
23 |
24 | return true;
25 | };
26 |
--------------------------------------------------------------------------------
/venues/auai.org/UAI/2018/process/recruitPCProcess.js:
--------------------------------------------------------------------------------
1 | function() {
2 |
3 | var or3client = lib.or3client;
4 | var hashKey = or3client.createHash(note.content.email, "2810398440804348173");
5 | if(hashKey == note.content.key) {
6 | if (note.content.response == 'Yes') {
7 | console.log("Invitation replied Yes")
8 | //if a user is in the declined group, remove them from that group and add them to the reviewers group
9 | or3client.removeGroupMember('auai.org/UAI/2018/Program_Committee/Declined', note.content.email, token) //MODIFIED_BY_YCN: SPC->PC
10 | or3client.addGroupMember('auai.org/UAI/2018/Program_Committee', note.content.email, token) //MODIFIED_BY_YCN: SPC->PC
11 | .then(result => done())
12 | .catch(error => done(error));
13 | } else if (note.content.response == 'No'){
14 | console.log("Invitation replied No")
15 | //if a user is in the reviewers group, remove them from that group and add them to the reviewers-declined group
16 | or3client.removeGroupMember('auai.org/UAI/2018/Program_Committee', note.content.email, token) //MODIFIED_BY_YCN: SPC->PC
17 | or3client.addGroupMember('auai.org/UAI/2018/Program_Committee/Declined', note.content.email, token) //MODIFIED_BY_YCN: SPC->PC
18 | .then(result => done())
19 | .catch(error => done(error));
20 | } else {
21 | done('Invalid response', note.content.response);
22 | }
23 | return true;
24 | } else {
25 | done('Invalid key', note.content.key);
26 | return false;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/venues/auai.org/UAI/2018/process/recruitSPCProcess.js:
--------------------------------------------------------------------------------
1 | function() {
2 |
3 | var or3client = lib.or3client;
4 | var hashKey = or3client.createHash(note.content.email, "2810398440804348173");
5 | if(hashKey == note.content.key) {
6 | if (note.content.response == 'Yes') {
7 | console.log("Invitation replied Yes")
8 | //if a user is in the declined group, remove them from that group and add them to the reviewers group
9 | or3client.removeGroupMember('auai.org/UAI/2018/Senior_Program_Committee/Declined', note.content.email, token)
10 | or3client.addGroupMember('auai.org/UAI/2018/Senior_Program_Committee', note.content.email, token)
11 | .then(result => done())
12 | .catch(error => done(error));
13 | } else if (note.content.response == 'No'){
14 | console.log("Invitation replied No")
15 | //if a user is in the reviewers group, remove them from that group and add them to the reviewers-declined group
16 | or3client.removeGroupMember('auai.org/UAI/2018/Senior_Program_Committee', note.content.email, token)
17 | or3client.addGroupMember('auai.org/UAI/2018/Senior_Program_Committee/Declined', note.content.email, token)
18 | .then(result => done())
19 | .catch(error => done(error));
20 | } else {
21 | done('Invalid response', note.content.response);
22 | }
23 | return true;
24 | } else {
25 | done('Invalid key', note.content.key);
26 | return false;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/venues/auai.org/UAI/2018/process/registrationProcess.js:
--------------------------------------------------------------------------------
1 | function () {
2 | var or3client = lib.or3client;
3 |
4 | or3client.addInvitationNoninvitee(note.invitation, note.signatures[0], token)
5 | .then(result => done())
6 | .catch(error => done(error));
7 | return true;
8 | };
9 |
--------------------------------------------------------------------------------
/venues/auai.org/UAI/2018/python/assign-all-areachairs.py:
--------------------------------------------------------------------------------
1 | import importlib
2 | import openreview
3 | import argparse
4 | import csv
5 |
6 | if __name__ == "__main__":
7 |
8 | ## Argument handling
9 | parser = argparse.ArgumentParser()
10 | parser.add_argument('--baseurl', help="base url")
11 | parser.add_argument('--username')
12 | parser.add_argument('--password')
13 |
14 | args = parser.parse_args()
15 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
16 | print "connecting to ", client.baseurl
17 |
18 | assignments = client.get_notes(invitation='auai.org/UAI/2018/-/Paper_Assignment')
19 | ac_assignments = [a for a in assignments if a.content['label'] == 'areachairs']
20 | papers = client.get_notes(invitation='auai.org/UAI/2018/-/Blind_Submission')
21 | papers_by_forum = {n.forum: n for n in papers}
22 |
23 | for assignment in ac_assignments:
24 | assignment_entries = assignment.content['assignedGroups']
25 |
26 | paper = papers_by_forum[assignment.forum]
27 |
28 | for entry in assignment_entries:
29 | openreview.tools.assign(client, paper.number, 'auai.org/UAI/2018',
30 | parent_group_params = {},
31 | reviewer_to_add = entry['userId'].encode('utf-8'),
32 | check_conflicts_invitation = None,
33 | parent_label = 'Area_Chairs',
34 | individual_label = 'Area_Chair')
35 |
36 |
--------------------------------------------------------------------------------
/venues/auai.org/UAI/2018/python/fix-ofer-metadata.py:
--------------------------------------------------------------------------------
1 | import requests
2 | import os
3 | import openreview
4 | import argparse
5 |
6 | parser = argparse.ArgumentParser()
7 | parser.add_argument('--baseurl', help="base URL")
8 | parser.add_argument('--username')
9 | parser.add_argument('--password')
10 | args = parser.parse_args()
11 |
12 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
13 | print 'connecting to {0}'.format(client.baseurl)
14 |
15 |
16 | metadata = client.get_notes(invitation='auai.org/UAI/2018/-/Paper_Metadata')
17 | for m in metadata:
18 | score_entries = m.content['groups']['auai.org/UAI/2018/Senior_Program_Committee']
19 | ofer_entry = [s for s in score_entries if s['userId'] == '~Ofer_Meshi2']
20 | if ofer_entry:
21 | for e in ofer_entry:
22 | e['userId'] = '~Ofer_Meshi1'
23 | client.post_note(m)
24 |
--------------------------------------------------------------------------------
/venues/auai.org/UAI/2018/python/get-pdfs.py:
--------------------------------------------------------------------------------
1 | import requests
2 | import os
3 | import openreview
4 | import argparse
5 |
6 | parser = argparse.ArgumentParser()
7 | parser.add_argument('--baseurl', help="base URL")
8 | parser.add_argument('--username')
9 | parser.add_argument('--password')
10 | args = parser.parse_args()
11 |
12 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
13 | print 'connecting to {0}'.format(client.baseurl)
14 |
15 | submission_invitation = 'auai.org/UAI/2018/-/Blind_Submission'
16 | submissions = client.get_notes(invitation=submission_invitation)
17 |
18 | if not os.path.exists('../pdfs'):
19 | os.makedirs('../pdfs')
20 |
21 | for n in submissions:
22 | pdf_url = '{0}{1}'.format(client.baseurl, n.content['pdf'])
23 | paper_id = n.number
24 | print "retrieving Paper{0} at {1}".format(paper_id, pdf_url)
25 | pdf_response = requests.get(pdf_url, stream=True)
26 |
27 | with open('../pdfs/Paper{0}.pdf'.format(paper_id), 'wb') as f:
28 | f.write(pdf_response.content)
29 |
30 |
--------------------------------------------------------------------------------
/venues/auai.org/UAI/2018/python/reveal_decisions.py:
--------------------------------------------------------------------------------
1 |
2 | import argparse
3 | import openreview
4 |
5 | # Argument handling
6 | parser = argparse.ArgumentParser()
7 | parser.add_argument('--username')
8 | parser.add_argument('--password')
9 | parser.add_argument('--baseurl', help="base URL")
10 | args = parser.parse_args()
11 |
12 | client = openreview.Client(username=args.username, password=args.password, baseurl=args.baseurl)
13 | print client.baseurl
14 |
15 | # pull authors off of non-readers for reviews
16 | groups = client.get_groups('auai.org/UAI/2018/Paper.*/Reviewers/Unsubmitted')
17 | for group in groups:
18 | paper_num = group.id.split('Paper')[-1].split('/')[0]
19 | authors = 'auai.org/UAI/2018/Paper'+paper_num+'/Authors'
20 | client.remove_members_from_group(group, [authors])
21 |
22 | # add authors, area chairs, reviewers to final decision
23 | decisions = client.get_notes(invitation='auai.org/UAI/2018/-/Paper.*/Final_Decision')
24 |
25 | for note in decisions:
26 | paper_num = note.invitation.split('Paper')[-1].split('/')[0]
27 | authors = 'auai.org/UAI/2018/Paper{0}/Authors'.format(paper_num)
28 | reviewers = 'auai.org/UAI/2018/Paper{0}/Reviewers'.format(paper_num)
29 | acs = 'auai.org/UAI/2018/Paper{0}/Area_Chairs'.format(paper_num)
30 | note.readers.extend([authors, reviewers, acs])
31 | client.post_note(note)
--------------------------------------------------------------------------------
/venues/auai.org/UAI/2018/python/samples/add-spc.py:
--------------------------------------------------------------------------------
1 | import openreview
2 |
3 | # initialize a Client
4 | admin_client = openreview.Client(username = 'uai2018admin', password = 'your_password', baseurl = 'https://openreview.net')
5 |
6 | # get the group representing the Senior Program Committee
7 | spc = admin_client.get_group('auai.org/UAI/2018/Senior_Program_Committee')
8 | print "Before : ", spc
9 | print "\n"
10 |
11 | # add a member to the spc group
12 | spc = admin_client.add_members_to_group(spc, ['~Michael_Spector1'])
13 | print "Adding ~Michael_Spector1: ", spc
14 | print "\n"
15 |
16 | # remove a member from the spc group
17 | spc = admin_client.remove_members_from_group(spc, ['~Michael_Spector1'])
18 | print "Removing ~Michael_Spector1: ", spc
19 |
--------------------------------------------------------------------------------
/venues/auai.org/UAI/2018/python/samples/spc-recommendation-sample.py:
--------------------------------------------------------------------------------
1 | import openreview
2 | import argparse
3 |
4 | parser = argparse.ArgumentParser()
5 | parser.add_argument('--baseurl', help="base URL")
6 | parser.add_argument('--username')
7 | parser.add_argument('--password')
8 | args = parser.parse_args()
9 |
10 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
11 | print 'connecting to {0}'.format(client.baseurl)
12 |
13 | papers = client.get_notes(invitation='auai.org/UAI/2018/-/Submission')
14 |
15 | recommendations_by_forum = {}
16 |
17 | for p in papers:
18 | recs = client.get_tags(invitation='auai.org/UAI/2018/-/Paper{}/Recommend_Reviewer'.format(p.number))
19 |
20 | '''
21 | you may want to sort the recommendations by cdate.
22 | this will let you determine the order in which the SPC member entered their recommendation.
23 | (this is useful if, for example, you instructed the SPCs to enter recommendations in
24 | order of preference)
25 | '''
26 | recommendations_by_forum[p.id] = sorted(recs, key=lambda x: x.cdate)
27 |
28 | # get an example recommendation by its paper forum ID:
29 | example_paper = papers[0]
30 | example_paper_recommendations = recommendations_by_forum[example_paper.id]
31 |
32 | # show that the recommendations are ordered
33 | # the "tag" field of a recommendation will contain the recommended reviewer's ID
34 | print "showing recommendations for [{}]: \"{}\"".format(example_paper.id, example_paper.content['title'])
35 | for i in example_paper_recommendations:
36 | print i.cdate, i.tag
37 |
38 |
--------------------------------------------------------------------------------
/venues/auai.org/UAI/2019/Conference/README.md:
--------------------------------------------------------------------------------
1 | To set up the conference: run /python/init.py
2 |
3 | To create and invite the Senior Program Committee and Program Committee groups, provide the emails and first names in these files and run them:
4 | - /python/invite-spc.py
5 | - /python/invite-pc.py
6 |
--------------------------------------------------------------------------------
/venues/auai.org/UAI/2019/Conference/python/enable-comments.py:
--------------------------------------------------------------------------------
1 | import argparse
2 | import openreview
3 | from openreview import invitations
4 | import datetime
5 | import os
6 | import config
7 |
8 | if __name__ == '__main__':
9 | ## Argument handling
10 | parser = argparse.ArgumentParser()
11 | parser.add_argument('--baseurl', help="base url")
12 | parser.add_argument('--username')
13 | parser.add_argument('--password')
14 | args = parser.parse_args()
15 |
16 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
17 | conference = config.get_conference(client)
18 |
19 | conference.open_comments(anonymous=True)
20 |
--------------------------------------------------------------------------------
/venues/auai.org/UAI/2019/Conference/python/get-pdfs.py:
--------------------------------------------------------------------------------
1 | import requests
2 | import os
3 | import openreview
4 | import argparse
5 |
6 | parser = argparse.ArgumentParser()
7 | parser.add_argument('--baseurl', help="base URL")
8 | parser.add_argument('--username')
9 | parser.add_argument('--password')
10 | args = parser.parse_args()
11 |
12 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
13 | print ('connecting to {0}'.format(client.baseurl))
14 |
15 | submission_invitation = 'auai.org/UAI/2019/Conference/-/Blind_Submission'
16 | submissions = openreview.tools.iterget_notes(client, invitation=submission_invitation)
17 |
18 | if not os.path.exists('uai2019-pdfs'):
19 | os.makedirs('uai2019-pdfs')
20 |
21 | for submission in submissions:
22 | pdf_url = '{0}{1}'.format(client.baseurl, submission.content['pdf'])
23 | paper_id = submission.number
24 | print ('retrieving Paper{0} at {1}'.format(paper_id, pdf_url))
25 | with open('uai2019-pdfs/Paper{0}.pdf'.format(paper_id), 'wb') as f:
26 | f.write(client.get_pdf(submission.id))
27 |
--------------------------------------------------------------------------------
/venues/auai.org/UAI/2019/Conference/python/init.py:
--------------------------------------------------------------------------------
1 | import argparse
2 | import openreview
3 | from openreview import invitations
4 | import datetime
5 | import os
6 | import config
7 |
8 | if __name__ == '__main__':
9 | ## Argument handling
10 | parser = argparse.ArgumentParser()
11 | parser.add_argument('--baseurl', help="base url")
12 | parser.add_argument('--username')
13 | parser.add_argument('--password')
14 | args = parser.parse_args()
15 |
16 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
17 | conference = config.get_conference(client)
18 |
19 | conference.set_program_chairs(emails = [])
20 | conference.set_reviewers(emails = [])
21 | conference.set_area_chairs(emails = [])
22 |
23 | conference.open_submissions(start_date = datetime.datetime(2019, 2, 15, 11, 59), due_date = datetime.datetime(2019, 3, 5, 11, 59), remove_fields = ['pdf'], additional_fields = {
24 | 'pdf': {
25 | 'description': 'Upload a PDF file that ends with .pdf',
26 | 'required': False,
27 | 'value-regex': 'upload'
28 | }
29 | })
30 |
--------------------------------------------------------------------------------
/venues/cv-foundation.org/BNWM-landing-webfield.js:
--------------------------------------------------------------------------------
1 | var GROUP_ID = 'BNMW_Workshop';
2 | var HEADER = {
3 | title: 'Brave New Motion Representations',
4 | description: ''
5 | };
6 | var VENUE_LINKS = [
7 | { url: '/group?id=cv-foundation.org/CVPR/2017/BNMW', name: 'CVPR 2017 BNMW' },
8 | { url: '/group?id=ECCV2016.org/BNMW', name: 'ECCV 2018 BNMW' }
9 | ];
10 |
11 | Webfield.ui.setup('#group-container', GROUP_ID);
12 |
13 | Webfield.ui.header(HEADER.title, HEADER.description, { underline: true });
14 |
15 | Webfield.ui.linksList(VENUE_LINKS);
16 |
17 | OpenBanner.welcome();
18 |
--------------------------------------------------------------------------------
/venues/cv-foundation.org/CVPR/2017/BNMW/process/cvprdata.js:
--------------------------------------------------------------------------------
1 | {
2 | 'ADMIN':'cvpr2017admin',
3 | 'BASE_URL':'CVPR.org',
4 | 'WORKSHOP':'BNMW',
5 | 'CONF_YEAR':'2017',
6 | 'CONFERENCE': 'CVPR.org/2017/BNMW',
7 | 'COCHAIRS':'CVPR.org/2017/BNMW/Program_Co-Chairs',
8 | 'REVIEWERS':'CVPR.org/2017/BNMW/Reviewers',
9 | 'CONF_TITLE':'CVPR 2017 BNMW',
10 | // Due date April 7, 2017 at 5:15pm (here)
11 | 'EIGHT_PG_DATE_DUE':new Date(2017, 4, 7, 17, 15),
12 | // Due date May 15, 2017 at 5:15pm (here)
13 | 'FOUR_PG_DATE_DUE':new Date(2017, 5, 15, 17, 15)
14 | }
15 |
--------------------------------------------------------------------------------
/venues/cv-foundation.org/CVPR/2017/BNMW/python/cvprdata.py:
--------------------------------------------------------------------------------
1 | """
2 | CVPR 2017 BNMW Conference constants
3 | """
4 | import datetime
5 | import time
6 |
7 | ADMIN = "cvpr2017admin"
8 | CONFERENCE = 'cv-foundation.org/CVPR/2017/BNMW'
9 | COCHAIRS = CONFERENCE+"/Program_Co-Chairs"
10 | REVIEWERS = CONFERENCE+"/Reviewers"
11 | # Due date April 7, 2017 at 5:15pm (here)
12 | EIGHT_PG_DATE_DUE = datetime.datetime(2017, 4, 7, 17, 15)
13 | EIGHT_PG_TIMESTAMP_DUE = int(time.mktime(EIGHT_PG_DATE_DUE.timetuple()))*1000
14 | # Due date May 15, 2017 at 5:15pm (here)
15 | FOUR_PG_DATE_DUE = datetime.datetime(2017, 5, 15, 17, 15)
16 | FOUR_TIMESTAMP_DUE = int(time.mktime(FOUR_PG_DATE_DUE.timetuple()))*1000
17 |
--------------------------------------------------------------------------------
/venues/cv-foundation.org/CVPR/2019/Conference/python/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openreview/openreview-scripts/e2d3e360759a02243222b853d1a501fc6cd862a0/venues/cv-foundation.org/CVPR/2019/Conference/python/__init__.py
--------------------------------------------------------------------------------
/venues/cv-foundation.org/CVPR/2019/Conference/python/cvpr2019.py:
--------------------------------------------------------------------------------
1 | # Symbols
2 | YR = "2019"
3 | CONF_ID = "CVPR.cc/" + YR + "/Conference"
4 | PC_ID = CONF_ID + "/Program_Chairs"
5 | AC_ID = CONF_ID + "/Area_Chairs"
6 | REVIEWERS_ID = CONF_ID + "/Reviewers"
7 | SUBMISSION_ID = CONF_ID + "/-/Submission"
8 | INPUT_FILES_DIR = "/home/marshall/iesl/or/scripts/venues/cv-foundation.org/CVPR/2019/Conference/data/"
9 | # This one used to be called REVIEWER_METADATA_ID but I don't like the term "meta-data" for this stuff
10 | PAPER_REVIEWER_SCORE_ID = CONF_ID + "/-/Paper_Reviewer_Scores"
11 | CONFIG_ID = CONF_ID + "/-/Assignment_Configuration"
12 | ASSIGNMENT_ID = CONF_ID + "/-/Paper_Assignment"
--------------------------------------------------------------------------------
/venues/cv-foundation.org/ECCV/2018/Conference/python/download-author-profiles.py:
--------------------------------------------------------------------------------
1 | import openreview
2 | import random
3 | import argparse
4 | import requests
5 | from collections import defaultdict
6 | import csv
7 | import os
8 | import pickle
9 |
10 | parser = argparse.ArgumentParser()
11 | parser.add_argument('--baseurl', help="base URL")
12 | parser.add_argument('--username')
13 | parser.add_argument('--password')
14 |
15 | args = parser.parse_args()
16 |
17 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
18 | print 'connecting to {0}'.format(client.baseurl)
19 |
20 | papers = openreview.tools.get_all_notes(client, 'cv-foundation.org/ECCV/2018/Conference/-/Submission')
21 | profiles_by_email = {}
22 |
23 | for paper in papers:
24 | print paper.number
25 | authorids = [e.lower() for e in paper.content['authorids']]
26 | paper_profiles = client.get_profiles(authorids)
27 | profiles_by_email.update(paper_profiles)
28 |
29 | with open('../data/author-profiles.pkl', 'wb') as f:
30 | pickle.dump(profiles_by_email, f)
31 |
32 |
33 |
--------------------------------------------------------------------------------
/venues/cv-foundation.org/ECCV/2018/Conference/python/setup-metadata-reviewers.py:
--------------------------------------------------------------------------------
1 | import openreview
2 | import openreview_matcher
3 | import random
4 | import argparse
5 | import requests
6 | from collections import defaultdict
7 | import csv
8 | import os
9 | import json
10 | import pickle
11 |
12 | parser = argparse.ArgumentParser()
13 | parser.add_argument('--baseurl', help="base URL")
14 | parser.add_argument('--username')
15 | parser.add_argument('--password')
16 |
17 | args = parser.parse_args()
18 |
19 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
20 | print 'connecting to {0}'.format(client.baseurl)
21 |
22 | print "getting conference objects...",
23 | metadata_invitation = client.get_invitation('cv-foundation.org/ECCV/2018/Conference/Reviewers/-/Paper_Metadata')
24 | papers = openreview.tools.get_all_notes(client, 'cv-foundation.org/ECCV/2018/Conference/-/Submission')
25 | reviewers = client.get_group('cv-foundation.org/ECCV/2018/Conference/Reviewers')
26 |
27 | print "loading score maps..."
28 | with open('../data/score-maps.pkl', 'rb') as f:
29 | maps = pickle.load(f)
30 | score_maps = maps['score_maps']
31 | constraint_maps = maps['constraint_maps']
32 |
33 | new_metadata_notes = openreview_matcher.metadata.generate_metadata_notes(client,
34 | papers = papers,
35 | metadata_invitation = metadata_invitation,
36 | match_group = reviewers,
37 | score_maps = score_maps,
38 | constraint_maps = constraint_maps
39 | )
40 |
41 | for m in new_metadata_notes:
42 | new_m = client.post_note(m)
43 | print new_m.id
44 |
--------------------------------------------------------------------------------
/venues/cv-foundation.org/ECCV/2018/Demo/run-demo.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | python python/setup-demo.py
4 | python python/precreate-profiles.py
5 | python python/submit-papers.py
6 | config_id=$(python python/generate-metadata.py)
7 | python ~/projects/openreview/openreview-scripts/admin/match.py $config_id
8 |
--------------------------------------------------------------------------------
/venues/eswc-conferences.org/ESWC/2019/Workshop/KGB/python/config.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import openreview
4 |
5 | def get_conference(client):
6 |
7 | builder = openreview.conference.ConferenceBuilder(client)
8 |
9 | builder.set_conference_id('eswc-conferences.org/ESWC/2019/Workshop/KGB')
10 | builder.set_conference_name('Knowledge Graph Building Workshop')
11 | builder.set_conference_short_name('KGB 2019')
12 | builder.set_homepage_header({
13 | 'title': 'Knowledge Graph Building Workshop',
14 | 'subtitle': 'Co-located with the Extended Semantic Web Conference 2019',
15 | 'deadline': 'Submission Deadline: 11th of March, 2019, 23:59 Hawaii time',
16 | 'date': '3 June 2019',
17 | 'website': 'http://kgb-workshop.org/',
18 | 'location': 'Portorož, Slovenia',
19 | 'instructions': ' '
20 | })
21 | builder.set_conference_submission_name('Submission')
22 | builder.set_submission_public(True)
23 | builder.set_override_homepage(True)
24 |
25 | return builder.get_result()
26 |
27 |
28 |
--------------------------------------------------------------------------------
/venues/gamesec-conf.org/GameSec/2019/Conference/python/init.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import sys, os
4 | import argparse
5 | import datetime
6 | import openreview
7 | import config
8 |
9 | """
10 | OPTIONAL SCRIPT ARGUMENTS
11 | baseurl - the URL of the OpenReview server to connect to (live site: https://openreview.net)
12 | username - the email address of the logging in user
13 | password - the user's password
14 | """
15 |
16 | parser = argparse.ArgumentParser()
17 | parser.add_argument('--baseurl', help="base URL")
18 | parser.add_argument('--username')
19 | parser.add_argument('--password')
20 |
21 | args = parser.parse_args()
22 |
23 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
24 | print('connecting to {0}'.format(client.baseurl))
25 |
26 | conference = config.get_conference(client)
27 | conference.set_program_chairs([
28 | #hidden
29 | ])
30 | conference.set_reviewers([
31 | #hidden
32 | ])
33 |
34 | # May 27, 2019, 2019 23:59 AoE
35 | conference.open_submissions(due_date = datetime.datetime(2019, 5, 28, 11, 59), remove_fields = ['TL;DR'], additional_fields = {
36 | 'archival': {
37 | 'description': 'Archival grants OpenReview permission to post the paper publicly',
38 | 'required': True,
39 | 'value-radio': [
40 | 'Archival',
41 | 'Non-archival'
42 | ]
43 | }
44 | })
--------------------------------------------------------------------------------
/venues/icaps-conference.org/ICAPS/2019/Workshop/HSDIP/python/config.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import openreview
4 |
5 |
6 | def get_conference(client):
7 |
8 | builder = openreview.conference.ConferenceBuilder(client)
9 |
10 | builder.set_conference_id('icaps-conference.org/ICAPS/2019/Workshop/HSDIP')
11 | builder.set_conference_name('Heuristics and Search for Domain-independent Planning')
12 | builder.set_conference_short_name('ICAPS HSDIP 2019')
13 | builder.set_homepage_header({
14 | 'title': 'Heuristics and Search for Domain-independent Planning',
15 | 'subtitle': 'ICAPS 2019 Workshop',
16 | 'deadline': 'Submission Deadline: March 17, 2019 midnight AoE',
17 | 'date': 'July 11-15, 2019',
18 | 'website': 'https://icaps19.icaps-conference.org/workshops/HSDIP/index.html',
19 | 'location': 'Berkeley, CA, USA'
20 | })
21 | builder.set_double_blind(True)
22 | builder.set_submission_public(True)
23 | return builder.get_result()
24 |
25 |
--------------------------------------------------------------------------------
/venues/icaps-conference.org/ICAPS/2019/Workshop/HSDIP/python/init_conference.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import argparse
4 | import openreview
5 | from openreview import tools
6 | from openreview import invitations
7 | import config
8 | import datetime
9 |
10 | """
11 | OPTIONAL SCRIPT ARGUMENTS
12 |
13 | baseurl - the URL of the OpenReview server to connect to (live site: https://openreview.net)
14 | username - the email address of the logging in user
15 | password - the user's password
16 | """
17 |
18 | parser = argparse.ArgumentParser()
19 | parser.add_argument('--baseurl', help="base URL")
20 | parser.add_argument('--username')
21 | parser.add_argument('--password')
22 |
23 | args = parser.parse_args()
24 |
25 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
26 | print('connecting to {0}'.format(client.baseurl))
27 |
28 | conference = config.get_conference(client)
29 | conference.open_submissions(due_date = datetime.datetime(2019, 3, 18, 12, 0))
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/venues/icaps-conference.org/ICAPS/2019/Workshop/Hierarchical_Planning/python/config.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import openreview
4 |
5 |
6 | def get_conference(client):
7 |
8 | builder = openreview.conference.ConferenceBuilder(client)
9 |
10 | builder.set_conference_id('icaps-conference.org/ICAPS/2019/Workshop/Hierarchical_Planning')
11 | builder.set_conference_name('Second ICAPS Workshop on Hierarchical Planning')
12 | builder.set_conference_short_name('ICAPS 2019 Workshop Hierarchical Planning')
13 | builder.set_homepage_header({
14 | 'title': 'Second Workshop on Hierarchical Planning',
15 | 'subtitle': 'ICAPS 2019 Workshop',
16 | 'deadline': 'Submission Deadline: March 29, 2019 midnight AoE',
17 | 'date': 'July 11-15, 2019',
18 | 'website': 'https://icaps19.icaps-conference.org/workshops/Hierarchical-Planning/index.html',
19 | 'location': 'Berkeley, CA, USA'
20 | })
21 | builder.set_double_blind(True)
22 | builder.set_override_homepage(True)
23 | return builder.get_result()
24 |
25 |
--------------------------------------------------------------------------------
/venues/icaps-conference.org/ICAPS/2019/Workshop/Hierarchical_Planning/python/init.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import argparse
4 | import openreview
5 | from openreview import tools
6 | from openreview import invitations
7 | import config
8 | import datetime
9 |
10 | """
11 | OPTIONAL SCRIPT ARGUMENTS
12 |
13 | baseurl - the URL of the OpenReview server to connect to (live site: https://openreview.net)
14 | username - the email address of the logging in user
15 | password - the user's password
16 | """
17 |
18 | parser = argparse.ArgumentParser()
19 | parser.add_argument('--baseurl', help="base URL")
20 | parser.add_argument('--username')
21 | parser.add_argument('--password')
22 |
23 | args = parser.parse_args()
24 |
25 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
26 | print('connecting to {0}'.format(client.baseurl))
27 |
28 | conference = config.get_conference(client)
29 | # Appearance of March 29 midnight anywhere on earth
30 | invitation = conference.open_submissions(due_date = datetime.datetime(2019, 3, 30, 12, 0))
31 | # while actually expiring 24 hours later
32 | invitation.expdate = tools.datetime_millis(datetime.datetime(2019, 3, 31, 12, 0))
33 | client.post_invitation(invitation)
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/venues/icaps-conference.org/ICAPS/2019/Workshop/KEPS/python/config.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import openreview
4 |
5 |
6 | def get_conference(client):
7 |
8 | builder = openreview.conference.ConferenceBuilder(client)
9 |
10 | builder.set_conference_id('icaps-conference.org/ICAPS/2019/Workshop/KEPS')
11 | builder.set_conference_name('Workshop on Knowledge Engineering for Planning and Scheduling')
12 | builder.set_conference_short_name('ICAPS KEPS 2019')
13 | builder.set_homepage_header({
14 | 'title': 'Workshop on Knowledge Engineering for Planning and Scheduling',
15 | 'subtitle': 'ICAPS 2019 Workshop',
16 | 'deadline': 'Submission Deadline: April 15, 2019 (UTC-12)',
17 | 'date': 'July 11-15, 2019',
18 | 'website': 'https://icaps19.icaps-conference.org/workshops/KEPS/index.html',
19 | 'location': 'Berkeley, CA, USA'
20 | })
21 | builder.set_double_blind(True)
22 | builder.set_submission_public(True)
23 | builder.set_override_homepage(True)
24 | return builder.get_result()
25 |
26 |
--------------------------------------------------------------------------------
/venues/icaps-conference.org/ICAPS/2019/Workshop/KEPS/python/init.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import argparse
4 | import openreview
5 | from openreview import tools
6 | from openreview import invitations
7 | import config
8 | import datetime
9 |
10 | """
11 | OPTIONAL SCRIPT ARGUMENTS
12 |
13 | baseurl - the URL of the OpenReview server to connect to (live site: https://openreview.net)
14 | username - the email address of the logging in user
15 | password - the user's password
16 | """
17 |
18 | parser = argparse.ArgumentParser()
19 | parser.add_argument('--baseurl', help="base URL")
20 | parser.add_argument('--username')
21 | parser.add_argument('--password')
22 |
23 | args = parser.parse_args()
24 |
25 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
26 | print('connecting to {0}'.format(client.baseurl))
27 |
28 | conference = config.get_conference(client)
29 | conference.open_submissions(due_date = datetime.datetime(2019, 4, 16, 12, 0), additional_fields = {
30 | "author_identity_visibility": {
31 | "order": 4,
32 | "value-checkbox": "Reveal author identities to reviewers",
33 | "required": False
34 | }
35 | })
36 |
37 | # doesn't seem to take the order information during init
38 | invite = client.get_invitation(id=conference.get_submission_id())
39 | invite.reply['content']['author_identity_visibility']['order'] = 4
40 | print(invite.reply['content'])
41 | client.post_invitation(invite)
42 |
43 |
44 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/venues/icaps-conference.org/ICAPS/2019/Workshop/KEPS/python/post-submission-stage-1.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 |
4 | import argparse
5 | import openreview
6 | from openreview import tools
7 | import config
8 |
9 | """
10 | OPTIONAL SCRIPT ARGUMENTS
11 | baseurl - the URL of the OpenReview server to connect to (live site: https://openreview.net)
12 | username - the email address of the logging in user
13 | password - the user's password
14 | """
15 |
16 | parser = argparse.ArgumentParser()
17 | parser.add_argument('--baseurl', help="base URL")
18 | parser.add_argument('--username')
19 | parser.add_argument('--password')
20 |
21 | args = parser.parse_args()
22 |
23 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
24 | print('connecting to {0}'.format(client.baseurl))
25 |
26 | conference = config.get_conference(client)
27 |
28 | conference.close_submissions()
29 | conference.set_authors()
30 |
31 | print('replacing members with IDs')
32 | reviewers_group = client.get_group(conference.get_reviewers_id())
33 | openreview.tools.replace_members_with_ids(client, reviewers_group)
34 |
35 | conference.create_blind_submissions()
--------------------------------------------------------------------------------
/venues/icaps-conference.org/ICAPS/2019/Workshop/SPARK/python/config.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import openreview
4 |
5 |
6 | def get_conference(client):
7 |
8 | builder = openreview.conference.ConferenceBuilder(client)
9 |
10 | builder.set_conference_id('icaps-conference.org/ICAPS/2019/Workshop/SPARK')
11 | builder.set_conference_name('Scheduling and Planning Applications Workshop')
12 | builder.set_conference_short_name('SPARK 2019')
13 | builder.set_homepage_header({
14 | 'title': 'Scheduling and Planning Applications Workshop',
15 | 'subtitle': 'ICAPS 2019 Workshop',
16 | 'deadline': 'Submission Deadline: April 5, 2019 23:59 GMT',
17 | 'date': 'July 11-15, 2019',
18 | 'website': 'https://icaps19.icaps-conference.org/workshops/SPARK/index.html',
19 | 'location': 'Berkeley, CA, USA'
20 | })
21 | builder.set_double_blind(True)
22 | builder.set_submission_public(True)
23 | builder.set_override_homepage(True)
24 | return builder.get_result()
25 |
26 |
--------------------------------------------------------------------------------
/venues/icaps-conference.org/ICAPS/2019/Workshop/SPARK/python/init.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import argparse
4 | import openreview
5 | from openreview import tools
6 | from openreview import invitations
7 | import config
8 | import datetime
9 |
10 | """
11 | OPTIONAL SCRIPT ARGUMENTS
12 |
13 | baseurl - the URL of the OpenReview server to connect to (live site: https://openreview.net)
14 | username - the email address of the logging in user
15 | password - the user's password
16 | """
17 |
18 | parser = argparse.ArgumentParser()
19 | parser.add_argument('--baseurl', help="base URL")
20 | parser.add_argument('--username')
21 | parser.add_argument('--password')
22 |
23 | args = parser.parse_args()
24 |
25 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
26 | print('connecting to {0}'.format(client.baseurl))
27 |
28 | conference = config.get_conference(client)
29 | conference.open_submissions(due_date = datetime.datetime(2019, 4, 5, 23, 59), additional_fields = {
30 | "author_identity_visibility": {
31 | "order": 4,
32 | "value-checkbox": "Reveal author identities to reviewers",
33 | "required": False
34 | }
35 | })
36 |
37 | # doesn't seem to take the order information during init
38 | invite = client.get_invitation(id=conference.get_submission_id())
39 | invite.reply['content']['author_identity_visibility']['order'] = 4
40 | print(invite.reply['content'])
41 | client.post_invitation(invite)
42 |
43 | conference.set_program_chairs(emails=[])
44 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/venues/icaps-conference.org/ICAPS/2019/Workshop/VRDIP/python/config.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import openreview
4 |
5 |
6 | def get_conference(client):
7 |
8 | builder = openreview.conference.ConferenceBuilder(client)
9 |
10 | builder.set_conference_id('icaps-conference.org/ICAPS/2019/Workshop/VRDIP')
11 | builder.set_conference_name('Planning the Future: Economics and Value-Rational')
12 | builder.set_conference_short_name('ICAPS Workshop 2019 VRDIP')
13 | builder.set_homepage_header({
14 | 'title': 'Planning the Future: Economics and Value-Rational',
15 | 'subtitle': 'ICAPS 2019 Workshop',
16 | 'deadline': 'Submission Deadline: April 15, 2019',
17 | 'date': 'July 11, 2019',
18 | 'website': 'https://icaps19.icaps-conference.org/workshops/Planning-the-Future/index.html',
19 | 'location': 'Berkeley, CA, USA'
20 | })
21 | builder.set_double_blind(True)
22 | builder.set_submission_public(True)
23 | return builder.get_result()
24 |
25 |
--------------------------------------------------------------------------------
/venues/icaps-conference.org/ICAPS/2019/Workshop/WIPC/python/config.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import openreview
4 |
5 |
6 | def get_conference(client):
7 |
8 | builder = openreview.conference.ConferenceBuilder(client)
9 |
10 | builder.set_conference_id('icaps-conference.org/ICAPS/2019/Workshop/WIPC')
11 | builder.set_conference_name('Workshop on the International Planning Competition')
12 | builder.set_conference_short_name('ICAPS WIPC 2019')
13 | builder.set_homepage_header({
14 | 'title': 'Workshop on the International Planning Competition',
15 | 'subtitle': 'ICAPS Workshop',
16 | 'deadline': 'Submission Deadline: April 12th, midnight AoE',
17 | 'date': 'July 11-12, 2019',
18 | 'website': 'https://icaps19.icaps-conference.org/workshops/WIPC/index.html',
19 | 'location': 'Berkeley, CA, USA'
20 | })
21 | builder.set_double_blind(True)
22 | builder.set_override_homepage(True)
23 |
24 | return builder.get_result()
25 |
26 |
--------------------------------------------------------------------------------
/venues/icaps-conference.org/ICAPS/2019/Workshop/WIPC/python/init.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import argparse
4 | import openreview
5 | from openreview import tools
6 | from openreview import invitations
7 | import config
8 | import datetime
9 |
10 | """
11 | OPTIONAL SCRIPT ARGUMENTS
12 |
13 | baseurl - the URL of the OpenReview server to connect to (live site: https://openreview.net)
14 | username - the email address of the logging in user
15 | password - the user's password
16 | """
17 |
18 | parser = argparse.ArgumentParser()
19 | parser.add_argument('--baseurl', help="base URL")
20 | parser.add_argument('--username')
21 | parser.add_argument('--password')
22 |
23 | args = parser.parse_args()
24 |
25 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
26 | print('connecting to {0}'.format(client.baseurl))
27 |
28 | conference = config.get_conference(client)
29 | conference.set_program_chairs([
30 | #hidden
31 | ])
32 | conference.set_reviewers([
33 | #hideen
34 | ])
35 | conference.open_submissions(due_date = datetime.datetime(2019, 4, 13, 12, 0), remove_fields = ['TL;DR'], additional_fields = {
36 | 'pdf': {
37 | 'description': 'Upload a PDF file that ends with .pdf',
38 | 'required': False,
39 | 'value-regex': 'upload'
40 | },
41 | 'track': {
42 | 'description': 'Track options',
43 | 'value-radio': ['long (30 minutes)', 'short (15 minutes)', 'discussion topic (5 minutes)'],
44 | 'required':True
45 | }
46 | })
47 |
48 |
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/venues/icaps-conference.org/ICAPS/2019/Workshop/XAIP/python/config.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import openreview
4 |
5 |
6 | def get_conference(client):
7 |
8 | builder = openreview.conference.ConferenceBuilder(client)
9 |
10 | builder.set_conference_id('icaps-conference.org/ICAPS/2019/Workshop/XAIP')
11 | builder.set_conference_name('Explainable Artificial Intelligence Planning')
12 | builder.set_conference_short_name('ICAPS XAIP 2019')
13 | builder.set_homepage_header({
14 | 'title': 'Explainable Artificial Intelligence Planning',
15 | 'subtitle': 'ICAPS 2019 Workshop on Explainable AI Planning (XAIP)',
16 | 'deadline': 'Submission Deadline: April 15, 2019',
17 | 'date': 'July 11-15, 2019',
18 | 'website': 'https://icaps19.icaps-conference.org/workshops/XAIP/',
19 | 'location': 'Berkeley, CA, USA'
20 | })
21 | builder.set_double_blind(True)
22 | builder.set_submission_public(True)
23 | builder.set_override_homepage(True)
24 | return builder.get_result()
25 |
26 |
--------------------------------------------------------------------------------
/venues/icaps-conference.org/ICAPS/2019/Workshop/XAIP/python/init.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import argparse
4 | import openreview
5 | from openreview import tools
6 | from openreview import invitations
7 | import config
8 | import datetime
9 |
10 | """
11 | OPTIONAL SCRIPT ARGUMENTS
12 |
13 | baseurl - the URL of the OpenReview server to connect to (live site: https://openreview.net)
14 | username - the email address of the logging in user
15 | password - the user's password
16 | """
17 |
18 | parser = argparse.ArgumentParser()
19 | parser.add_argument('--baseurl', help="base URL")
20 | parser.add_argument('--username')
21 | parser.add_argument('--password')
22 |
23 | args = parser.parse_args()
24 |
25 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
26 | print('connecting to {0}'.format(client.baseurl))
27 |
28 | conference = config.get_conference(client)
29 | conference.open_submissions(due_date = datetime.datetime(2019, 4, 16, 12, 00), additional_fields = {
30 | "author_identity_visibility": {
31 | "order": 4,
32 | "value-checkbox": "Reveal author identities to reviewers",
33 | "required": False
34 | }
35 | })
36 |
37 | # doesn't seem to take the order information during init
38 | invite = client.get_invitation(id=conference.get_submission_id())
39 | invite.reply['content']['author_identity_visibility']['order'] = 4
40 | print(invite.reply['content'])
41 | client.post_invitation(invite)
42 |
43 |
44 |
--------------------------------------------------------------------------------
/venues/informatik.uni-rostock.de/Informatik_Rostock/Ubiquitous_Computing/2017/process/submissionProcess.template:
--------------------------------------------------------------------------------
1 | function () {
2 | var or3client = lib.or3client;
3 |
4 | var CONFERENCEPHRASE = "Recent Advances in Ubiquitous Computing";
5 |
6 | var author_mail = {
7 | "groups": note.content.authorids,
8 | "subject": "Your submission to "+ CONFERENCEPHRASE +" has been received: \"" + note.content.title + "\"",
9 | "message": "Your submission to "+ CONFERENCEPHRASE + " has been posted.\n\nTitle: " + note.content.title + "\n\nAbstract: " + note.content.abstract + "\n\nTo view your submission, click here: " + baseUrl+"/forum?id=" + note.forum
10 | };
11 |
12 | return or3client.or3request(or3client.mailUrl, author_mail, 'POST', token)
13 | .then(result => done())
14 | .catch(error => done(error));
15 |
16 | return true;
17 | };
18 |
--------------------------------------------------------------------------------
/venues/informatik.uni-rostock.de/Informatik_Rostock/Ubiquitous_Computing/2017/python/create-revision-invite.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import argparse
4 | import sys
5 | import os
6 | import openreview
7 | import config
8 |
9 | ## Argument handling
10 | parser = argparse.ArgumentParser()
11 | parser.add_argument('--baseurl', help="base url")
12 | parser.add_argument('--username')
13 | parser.add_argument('--password')
14 | args = parser.parse_args()
15 |
16 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
17 |
18 | submissions = client.get_notes(invitation=config.SUBMISSION)
19 |
20 | def create_revision_invitation(n):
21 | revision_invitation = openreview.Invitation(config.CONF + '/-/Paper{0}/Add/Revision'.format(n.number), **config.revision_params)
22 | revision_invitation.invitees = [config.CONF + '/Paper{0}/Authors'.format(n.number)]
23 | revision_invitation.reply = config.submission_reply
24 | revision_invitation.reply['referent'] = n.forum
25 | revision_invitation.reply['forum'] = n.forum
26 | return revision_invitation
27 |
28 | for n in submissions:
29 | print n.number
30 | client.post_invitation(create_revision_invitation(n))
31 |
--------------------------------------------------------------------------------
/venues/iscb.org/ISMB/2019/python/functions.py:
--------------------------------------------------------------------------------
1 | # functions get defined here
2 |
--------------------------------------------------------------------------------
/venues/learningtheory.org/COLT/2019/process/officialReviewProcess.js:
--------------------------------------------------------------------------------
1 | function(){
2 | var or3client = lib.or3client;
3 |
4 | var CONFERENCE_ID = 'learningtheory.org/COLT/2019/Conference';
5 | var PAPER_PROGRAM_COMMITTEE;
6 |
7 | var forumNote = or3client.or3request(or3client.notesUrl+'?id='+note.forum, {}, 'GET', token);
8 | var anonReviewerRegex = /^.*AnonReviewer(\d+)$/;
9 | forumNote.then(function(result) {
10 | var forum = result.notes[0];
11 | var note_number = forum.number;
12 | PAPER_PROGRAM_COMMITTEE = CONFERENCE_ID + '/Paper' + note_number + '/Program_Committee';
13 | })
14 | .then(result => {
15 | if(!(note.signatures[0].match(anonReviewerRegex))) {
16 | console.log('Program Committee member submitted a review');
17 | console.log('attempting to add to group ' + PAPER_PROGRAM_COMMITTEE + '/Submitted');
18 | return or3client.addGroupMember(PAPER_PROGRAM_COMMITTEE + '/Submitted', note.signatures[0], token);
19 | } else {
20 | console.log('AnonReviewer submitted a review')
21 | }
22 | })
23 | .then(result => {
24 | console.log('attempting to remove from group ' + PAPER_PROGRAM_COMMITTEE + '/Unubmitted');
25 | return or3client.removeGroupMember(PAPER_PROGRAM_COMMITTEE + '/Unsubmitted', note.signatures[0], token);
26 | })
27 | .then(result => done())
28 | .catch(error => done(error));
29 | return true;
30 | };
--------------------------------------------------------------------------------
/venues/learningtheory.org/COLT/2019/process/submissionProcess.js:
--------------------------------------------------------------------------------
1 | function() {
2 | var or3client = lib.or3client;
3 | console.log('submission process');
4 |
5 | var SHORT_PHRASE = 'COLT 2019';
6 |
7 | var authorMail = {
8 | groups: note.content.authorids,
9 | subject: 'Your submission to ' + SHORT_PHRASE + ' has been received: ' + note.content.title,
10 | message: 'Your submission to ' + SHORT_PHRASE + ' has been posted.\n\nTitle: ' + note.content.title + '\n\nAbstract: ' + note.content.abstract + '\n\nTo view your submission, click here: ' + baseUrl + '/forum?id=' + note.forum
11 | };
12 | or3client.or3request(or3client.mailUrl, authorMail, 'POST', token)
13 | .then(result => done())
14 | .catch(error => done(error));
15 | return true;
16 | };
17 |
--------------------------------------------------------------------------------
/venues/learningtheory.org/COLT/2019/python/config.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import openreview
4 |
5 | def get_conference(client):
6 |
7 | builder = openreview.conference.ConferenceBuilder(client)
8 | builder.set_conference_id('learningtheory.org/COLT/2019/Conference')
9 | builder.set_conference_name('Conference on Learning Theory')
10 | builder.set_conference_short_name('COLT 2019')
11 | builder.set_homepage_header({
12 | 'title': 'COLT 2019',
13 | 'subtitle': 'Conference on Learning Theory',
14 | 'deadline': 'Submission Deadline: 11:00pm Eastern Standard Time, February 1, 2019',
15 | 'date': 'June 25 - June 28, 2019',
16 | 'website': 'http://learningtheory.org/colt2019/',
17 | 'location': 'Phoenix, Arizona, United States'
18 | })
19 | builder.set_conference_area_chairs_name('Program_Committee')
20 | builder.set_double_blind(area_chairs_read_original = True)
21 | return builder.get_result()
22 |
--------------------------------------------------------------------------------
/venues/machineintelligence.cc/MIC/2018/Abstract/process/officialReviewProcess.js:
--------------------------------------------------------------------------------
1 | function(){
2 | var SHORT_PHRASE = 'MIC 2018 Abstract';
3 | var CONFERENCE_ID = 'machineintelligence.cc/MIC/2018 Abstract';
4 | var or3client = lib.or3client;
5 |
6 | // send email to author of paper submission
7 | var origNote = or3client.or3request(or3client.notesUrl+'?id='+note.forum, {}, 'GET', token);
8 | origNote.then(function(result) {
9 | var forum = result.notes[0];
10 | var note_number = forum.number;
11 |
12 | var author_mail = {
13 | groups: forum.content.authorids,
14 | subject: 'Review of your submission to ' + SHORT_PHRASE + ': "' + forum.content.title + '"',
15 | message: 'Your submission to ' + SHORT_PHRASE + ' has received an official review.\n\nTitle: ' + note.content.title + '\n\nReview: ' + note.content.review + '\n\nTo view the review, click here: ' + baseUrl+'/forum?id=' + note.forum
16 | };
17 |
18 | return or3client.or3request( or3client.mailUrl, author_mail, 'POST', token );
19 | })
20 | // do not allow reviewer to post another review for this paper
21 | .then(result => or3client.addInvitationNoninvitee(note.invitation, note.signatures[0], token))
22 | .then(result => done())
23 | .catch(error => done(error));
24 | return true;
25 | };
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/venues/machineintelligence.cc/MIC/2018/Conference/process/officialReviewProcess.js:
--------------------------------------------------------------------------------
1 | function(){
2 | var SHORT_PHRASE = 'MIC 2018 Conference';
3 | var CONFERENCE_ID = 'machineintelligence.cc/MIC/2018/Conference';
4 | var or3client = lib.or3client;
5 |
6 | // send email to author of paper submission
7 | var origNote = or3client.or3request(or3client.notesUrl+'?id='+note.forum, {}, 'GET', token);
8 | origNote.then(function(result) {
9 | var forum = result.notes[0];
10 | var note_number = forum.number;
11 |
12 | var author_mail = {
13 | groups: forum.content.authorids,
14 | subject: 'Review of your submission to ' + SHORT_PHRASE + ': "' + forum.content.title + '"',
15 | message: 'Your submission to ' + SHORT_PHRASE + ' has received an official review.\n\nTitle: ' + note.content.title + '\n\nReview: ' + note.content.review + '\n\nTo view the review, click here: ' + baseUrl+'/forum?id=' + note.forum
16 | };
17 |
18 | return or3client.or3request( or3client.mailUrl, author_mail, 'POST', token );
19 | })
20 | // do not allow reviewer to post another review for this paper
21 | .then(result => or3client.addInvitationNoninvitee(note.invitation, note.signatures[0], token))
22 | .then(result => done())
23 | .catch(error => done(error));
24 | return true;
25 | };
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/venues/machineintelligence.cc/MIC/2018/webfield/mic2018_webfield.js:
--------------------------------------------------------------------------------
1 | var GROUP_ID = 'machineintelligence.cc/MIC';
2 | var HEADER = {
3 | title: 'Machine Intelligence Conference 2018',
4 | description: 'Welcome to OpenReview for MIC 2018. Please select a track below.'
5 | };
6 | var VENUE_LINKS = [
7 | { url: '/group?id=machineintelligence.cc/MIC/2018/Conference', name: 'MIC 2018 Conference Track' },
8 | { url: '/group?id=machineintelligence.cc/MIC/2018/Abstract', name: 'MIC 2018 Abstract Track' }
9 | ];
10 |
11 | Webfield.ui.setup('#group-container', GROUP_ID);
12 |
13 | Webfield.ui.header(HEADER.title, HEADER.description, { underline: true });
14 |
15 | Webfield.ui.linksList(VENUE_LINKS);
16 |
17 | OpenBanner.welcome();
18 |
--------------------------------------------------------------------------------
/venues/reproducibility-challenge.github.io/Reproducibility_Challenge/NeurIPS/2019/process/claimProcess.py:
--------------------------------------------------------------------------------
1 | def process(client, note, invitation):
2 | conference_id = 'NeurIPS.cc/2019/Reproducibility_Challenge'
3 | # create and post claim_hold note
4 | hold_invite_id = invitation.id.replace('Claim', 'Claim_Hold')
5 | client.post_note(openreview.Note(
6 | id=None,
7 | original=None,
8 | invitation=hold_invite_id,
9 | forum=note.forum,
10 | signatures=[conference_id],
11 | writers=[conference_id],
12 | readers=['everyone'],
13 | content={"title": "Claimed by "+ note.content['institution']}
14 | ))
15 |
16 | # send confirmation email
17 | submission = client.get_note(note.forum)
18 | msg = 'Your claim to NeurIPS 2019 Reproducibility Challenge for paper {title} has been posted.'.format(
19 | title=submission.content['title'])
20 | client.send_mail("NeurIPS Reproducibility Claim", [note.tauthor], msg)
21 |
22 | claimants = client.get_group(conference_id+'/Claimants')
23 | claimants.members.append(note.tauthor)
24 | client.post_group(claimants)
25 |
--------------------------------------------------------------------------------
/venues/reproducibility-challenge.github.io/Reproducibility_Challenge/NeurIPS/2019/process/reportProcess.py:
--------------------------------------------------------------------------------
1 | def process(client, note, invitation):
2 | conference_id = 'NeurIPS.cc/2019/Reproducibility_Challenge'
3 |
4 | # send confirmation email
5 | msg = 'Your report submission to NeurIPS 2019 Reproducibility Challenge has been posted. \n\nTitle: {title}'.format(
6 | title=note.content['title'])
7 | client.send_mail("NeurIPS Reproducibility Challenge report received", note.content['authorids'], msg)
8 |
9 | authors = client.get_group(conference_id+'/Authors')
10 | authors.members.extend(note.content['authorids'])
11 | client.post_group(authors)
12 |
--------------------------------------------------------------------------------
/venues/reproducibility-challenge.github.io/Reproducibility_Challenge/NeurIPS/2019/webfield/landingWebfield.js:
--------------------------------------------------------------------------------
1 | var GROUP_ID = '';
2 | var HEADER = {
3 | title: '',
4 | description: ''
5 | };
6 | var VENUE_LINKS = [];
7 |
8 | Webfield.ui.setup('#group-container', GROUP_ID);
9 |
10 | Webfield.ui.header(HEADER.title, HEADER.description, { underline: true });
11 |
12 | Webfield.ui.linksList(VENUE_LINKS);
13 |
14 | OpenBanner.welcome();
15 |
--------------------------------------------------------------------------------
/venues/roboticsfoundation.org/RSS/2017/RCW_Workshop/process/commentProcess.js:
--------------------------------------------------------------------------------
1 | function(){
2 | const TRACK_NAME = <>;
3 | const CONFERENCE = 'roboticsfoundation.org/RSS/2017/RCW_Workshop';
4 | const TRACK = CONFERENCE+'/-_'+TRACK_NAME;
5 | const PAPERGRP = TRACK+'/Paper' + note.number;
6 | var CONFERENCE_NAME = 'RSS 2017 RCW Workshop -'+TRACK_NAME+' Track'
7 | var or3client = lib.or3client;
8 |
9 | console.log('the Comment Process is here');
10 | var origNote = or3client.or3request(or3client.notesUrl+'?id='+note.forum, {}, 'GET', token);
11 |
12 |
13 |
14 | origNote.then(function(result) {
15 | var forum = result.notes[0];
16 | var note_number = forum.number;
17 |
18 | var reviewers = [PAPERGRP + '/Reviewers'];
19 | var authors = forum.content.authorids;
20 |
21 | var author_mail = {
22 | "groups": authors,
23 | "subject": "Review of your submission to "+TRACK+": \"" + forum.content.title + "\"",
24 | "message": "Your submission to " + CONFERENCE_NAME + " has received a comment.\n\nTitle: " + note.content.title + "\n\nReview: " + note.content.comment + "\n\n To view the review, click here: " + baseUrl+"/forum?id=" + note.forum
25 | };
26 |
27 | var authorMailP = or3client.or3request( or3client.mailUrl, author_mail, 'POST', token );
28 |
29 | return authorMailP;
30 | })
31 | .then(result => or3client.addInvitationNoninvitee(note.invitation, note.signatures[0], token))
32 | .then(result => done())
33 | .catch(error => done(error));
34 | return true;
35 | };
36 |
--------------------------------------------------------------------------------
/venues/roboticsfoundation.org/RSS/2017/RCW_Workshop/python/rssdata.py:
--------------------------------------------------------------------------------
1 | import datetime
2 | import time
3 | """
4 | RSS Conference constants
5 | """
6 |
7 | ADMIN = "rss2017admin"
8 | CONFERENCE = "roboticsfoundation.org/RSS/2017/RCW_Workshop"
9 | COCHAIRS = CONFERENCE+"/Program_Co-Chairs"
10 | # the two tracks within the conference
11 | POSTER = CONFERENCE+"/-_Poster"
12 | PROCEEDINGS = CONFERENCE+"/-_Proceedings"
13 | POSTER_REVIEWERS = POSTER+"/Reviewers"
14 | PROCEEDINGS_REVIEWERS = PROCEEDINGS+"/Reviewers"
15 | # Due date June 18, 2017 at 7:59am here
16 | DATE_DUE = datetime.datetime(2017, 6, 18, 7, 59)
17 | TIMESTAMP_DUE = int(time.mktime(DATE_DUE.timetuple()))*1000
18 | # June 27, 2017, 11:59:59pm Anywhere on Earth time (UTC -12).
19 | # == June 28, 2017, 7:59am EST
20 | REVIEW_DUE = datetime.datetime(2017, 6, 28, 7, 59)
21 | REVIEW_DUE = int(time.mktime(REVIEW_DUE.timetuple()))*1000
22 |
23 |
--------------------------------------------------------------------------------
/venues/roboticsfoundation.org/RSS/2017/RCW_Workshop/webfield/rss2017_webfield.js:
--------------------------------------------------------------------------------
1 | var GROUP_ID = 'roboticsfoundation.org/RSS';
2 | var HEADER = {
3 | title: 'Robot Communication in the Wild: Meeting the Challenges of Real-world Systems',
4 | description: 'Welcome to OpenReview for RSS 2017 RCW Workshop. Please select a track below.'
5 | };
6 | var VENUE_LINKS = [
7 | { url: '/group?id=roboticsfoundation.org/RSS/2017/RCW_Workshop/-_Poster', name: 'RSS 2017 RCW - Poster Track' },
8 | { url: '/group?id=roboticsfoundation.org/RSS/2017/RCW_Workshop/-_Proceedings', name: 'RSS 2017 RCW - Proceedings Track' }
9 | ];
10 |
11 | Webfield.ui.setup('#group-container', GROUP_ID);
12 |
13 | Webfield.ui.header(HEADER.title, HEADER.description, { underline: true });
14 |
15 | Webfield.ui.linksList(VENUE_LINKS);
16 |
17 | OpenBanner.welcome();
18 |
--------------------------------------------------------------------------------
/venues/swsa.semanticweb.org/ISWC/2017/DeSemWeb/admin_notes.txt:
--------------------------------------------------------------------------------
1 | Notes for the administrator:
2 |
3 | Reviews are generated with create-invitations.py.
4 |
5 | the Program_Chairs group and the Admin group are members of all paper reviewer
6 | groups. This ensures that Program Chairs and Admins can post reviews if they
7 | need to.
8 |
9 | Each paper has a single Paper#/AnonReviewer group, on which all members have
10 | signatory permission. The assign-reviewer.py script adds a given user to
11 | both the Paper#/AnonReviewer and Paper#/Reviewers group.
12 |
13 | We are not using single AnonReviewer groups (as we have done in the past) as
14 | a workaround for some technical issues in the backend that we haven't yet
15 | resolved. The short version: Single AnonReviewer groups don't allow users to
16 | choose between their anonymous and public signatures, but aggregate
17 | AnonReviewer groups do allow it.
18 |
--------------------------------------------------------------------------------
/venues/swsa.semanticweb.org/ISWC/2017/DeSemWeb/process/submissionProcess.template:
--------------------------------------------------------------------------------
1 | function () {
2 | var or3client = lib.or3client;
3 |
4 | var CONFERENCEPHRASE = "DeSemWeb 2017";
5 |
6 | var author_mail = {
7 | "groups": note.content.authorids,
8 | "subject": "Your submission to "+ CONFERENCEPHRASE +" has been received: \"" + note.content.title + "\"",
9 | "message": "Your submission to "+ CONFERENCEPHRASE + " has been posted.\n\nTitle: " + note.content.title + "\n\nAbstract: " + note.content.abstract + "\n\nTo view your submission, click here: " + baseUrl+"/forum?id=" + note.forum
10 | };
11 |
12 | return or3client.or3request(or3client.mailUrl, author_mail, 'POST', token)
13 | .then(result => done())
14 | .catch(error => done(error));
15 |
16 | return true;
17 | };
18 |
--------------------------------------------------------------------------------
/venues/swsa.semanticweb.org/ISWC/2018/DeSemWeb/process/officialReviewProcess.js:
--------------------------------------------------------------------------------
1 | function(){
2 | var SHORT_PHRASE = 'DeSemWeb 2018';
3 | var or3client = lib.or3client;
4 |
5 | // send email to author of paper submission
6 | var origNote = or3client.or3request(or3client.notesUrl+'?id='+note.forum, {}, 'GET', token);
7 | origNote.then(function(result) {
8 | var forum = result.notes[0];
9 | var note_number = forum.number;
10 |
11 | var author_mail = {
12 | groups: forum.content.authorids,
13 | subject: 'Review of your submission to ' + SHORT_PHRASE + ': "' + forum.content.title + '"',
14 | message: 'Your submission to ' + SHORT_PHRASE + ' has received an official review.\n\nTitle: ' + note.content.title + '\n\nReview: ' + note.content.review + '\n\nTo view the review, click here: ' + baseUrl+'/forum?id=' + note.forum
15 | };
16 |
17 | var authorMailP = or3client.or3request( or3client.mailUrl, author_mail, 'POST', token );
18 |
19 | return Promise.all([
20 | authorMailP,
21 | ]);
22 | })
23 | // do not allow reviewer to post another review for this paper
24 | .then(result => or3client.addInvitationNoninvitee(note.invitation, note.signatures[0], token))
25 | .then(result => done())
26 | .catch(error => done(error));
27 | return true;
28 | };
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/venues/swsa.semanticweb.org/ISWC/2019/Workshop/DeSemWeb/python/config.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import openreview
4 |
5 |
6 | def get_conference(client):
7 |
8 | builder = openreview.conference.ConferenceBuilder(client)
9 |
10 | builder.set_conference_id('swsa.semanticweb.org/ISWC/2019/Workshop/DeSemWeb')
11 | builder.set_conference_name('Decentralizing the Semantic Web')
12 | builder.set_conference_short_name('DeSemWeb 2019')
13 | builder.set_homepage_header({
14 | 'title': 'Decentralizing the Semantic Web',
15 | 'subtitle': 'ISWC2019 workshop',
16 | 'deadline': 'Submission Deadline: 2019/7/24 11:59pm GMT',
17 | 'date': '26 Oct 2019',
18 | 'website': 'https://iswc2019.desemweb.org/',
19 | 'location': 'The University of Auckland, New Zealand'
20 | })
21 | builder.set_double_blind(False)
22 | builder.set_submission_public(True)
23 | #builder.set_override_homepage(True)
24 | return builder.get_result()
25 |
--------------------------------------------------------------------------------
/venues/swsa.semanticweb.org/ISWC/2019/Workshop/DeSemWeb/python/init.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import argparse
4 | import openreview
5 | from openreview import tools
6 | from openreview import invitations
7 | import config
8 | import datetime
9 |
10 | """
11 | OPTIONAL SCRIPT ARGUMENTS
12 |
13 | baseurl - the URL of the OpenReview server to connect to (live site: https://openreview.net)
14 | username - the email address of the logging in user
15 | password - the user's password
16 | """
17 |
18 | parser = argparse.ArgumentParser()
19 | parser.add_argument('--baseurl', help="base URL")
20 | parser.add_argument('--username')
21 | parser.add_argument('--password')
22 |
23 | args = parser.parse_args()
24 |
25 | client = openreview.Client(baseurl=args.baseurl, username=args.username, password=args.password)
26 | print('connecting to {0}'.format(client.baseurl))
27 |
28 | conference = config.get_conference(client)
29 | # midnight GMT 7/24
30 | conference.open_submissions(due_date = datetime.datetime(2019, 7, 25, 0, 0), remove_fields = ['TL;DR'])
31 |
32 | conference.set_program_chairs(emails = [])
--------------------------------------------------------------------------------
/venues/swsa.semanticweb.org/ISWC/ISWC-landing-webfield.js:
--------------------------------------------------------------------------------
1 | var GROUP_ID = 'swsa.semanticweb.org/ISWC';
2 | var HEADER = {
3 | title: 'Decentralizing the Semantic Web Workshop at the International Semantic Web Conference',
4 | description: ''
5 | };
6 | var VENUE_LINKS = [
7 | { url: '/group?id=swsa.semanticweb.org/ISWC/2018/DeSemWeb', name: 'DeSemWeb 2018' },
8 | { url: '/group?id=swsa.semanticweb.org/ISWC/2017/DeSemWeb', name: 'DeSemWeb 2017' }
9 | ];
10 |
11 | Webfield.ui.setup('#group-container', GROUP_ID);
12 |
13 | Webfield.ui.header(HEADER.title, HEADER.description, { underline: true });
14 |
15 | Webfield.ui.linksList(VENUE_LINKS);
16 |
17 | OpenBanner.welcome();
18 |
--------------------------------------------------------------------------------
/venues/vivoconference.org/VIVO/2019/Conference/python/config.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import openreview
4 |
5 | def get_conference(client):
6 |
7 | builder = openreview.conference.ConferenceBuilder(client)
8 |
9 | builder.set_conference_id('vivoconference.org/VIVO/2019/Conference')
10 | builder.set_conference_name('VIVO 2019 Conference')
11 | builder.set_conference_short_name('VIVO 2019 Conference')
12 | builder.set_homepage_header({
13 | 'title': 'VIVO 2019 Conference',
14 | 'deadline': 'Submission Deadline: 14th of April, 2019',
15 | 'date': 'September 4-6, 2019',
16 | 'website': 'http://vivoconference.org',
17 | 'location': 'Podgorica, Montenegro',
18 | 'instructions': 'Questions or Concerns
Please contact the OpenReview support team at info@openreview.net with any questions or concerns about the OpenReview platform.
Please contact the VIVO 2019 Program Chairs at conference@vivoweb.org with any questions or concerns about conference administration or policy.
We are aware that some email providers inadequately filter emails coming from openreview.net as spam so please check your spam folder regularly.
'
19 | })
20 | builder.set_conference_submission_name('Submission')
21 | builder.set_submission_public(True)
22 | return builder.get_result()
23 |
--------------------------------------------------------------------------------