A script for efficiently scheduling judges to review papers and poster presentations for the 2021 New Jersey Junior Science & Humanities Symposium at Rutgers University.
Built with pure Python and <3.
- Download Python (recommended v3.9, at least v3.7+) from here.
 - Download the repository as a ZIP file by clicking here.
 - Extract the contents of the ZIP file into a folder on your computer.
 
- Ensure that all of the student records are on the same sheet (combine them onto the same sheet if necessary).
 - Ensure that there is nothing else in the sheet (remove any notes/comments after the last row of student data).
 - Ensure that the column names match the column names described under 
class StudentColumnNamesinconfig.py.Helpful tip: You can view
config.pyby opening it using Notepad or a similar text editor. - From Google Sheets or Excel, download the file with a 
.csvextension.- On Google Sheets, this can be done by clicking 
File>Download>Comma-separated values (.csv, current sheet). - Name this file 
student_data.csvand place it in theinputfolder. 
 - On Google Sheets, this can be done by clicking 
 
- Ensure that all of the judge records are on the same sheet (combine them onto the same sheet if necessary).
 - Ensure that there is nothing else in the sheet (remove any notes/comments after the last row of judge data).
 - Ensure that all of the actual data is consistent with any formatting that may have been applied.
- For example, if a single time slot in a cell detailing a judge's availability is struck through (like 
9:00 am - 10:00 am), it will still be interpreted as a valid time. To fix this, simply delete the time slot from the cell. - Any data that should not be considered must be deleted from the sheet.
 
 - For example, if a single time slot in a cell detailing a judge's availability is struck through (like 
 - Ensure that the column names match the column names described under 
class JudgeColumnNamesinconfig.py. - From Google Sheets or Excel, download the file with a 
.csvextension.- On Google Sheets, this can be done by clicking 
File>Download>Comma-separated values (.csv, current sheet). - Name this file 
judge_data.csvand place it in theinputfolder. 
 - On Google Sheets, this can be done by clicking 
 
- On Windows only: Execute 
run.batin the folder containing the program (from Windows File Explorer, you can do this by opening the file from the folder directly). - On Windows or Mac/Linux: open a terminal in the folder containing the program and run the program with the command 
py main.pyorpython main.py, respectively. 
The program will generate five output CSV files:
judges.csv: each row holds all of the scheduling info that the named judge needs to see, including:- The judge's first and last name, email, and phone number,
 - that judge's poster presentation assignments (if they signed up to judge poster presentations),
 - that judge's paper assignments (if they signed up to review papers).
 
paper_judges.csv: each row represents the assignment of a paper to a judge, including:- The assigned-to judge's first and last name, email, and phone number,
 - the submission number of the student whose paper was assigned,
 - a link to the PDF of the student's paper.
 
poster_judges.csv: each row represents the assignment of a poster presentation to a judge, including:- The assigned-to judge's first and last name, email, and phone number,
 - the submission number of the student whose poster was assigned,
 - the date and time of the poster presentation,
 - a link to the PDF of the student's poster.
 
presentation_schedule.csv: each row represents a presentation occurring at the given date and time, including:- The date and time in question,
 - a student presenting at this time,
 - that student's judge's first and last name, email, and phone number.
 
students.csv: each row holds all of the scheduling info that the named student needs to see, including:- The student's submission number,
 - whether they are submitting a paper and oral presentation or not,
 - whether they are submitting a poster or not,
 - the student's submission category,
 - the student's paper judges' names (if the student is submitting a paper and oral presentation),
 - the student's poster judge's name (if the student is submitting a poster),
 - the student's poster presentation date and time (if the student is submitting a poster).
 
If for some reason the program runs into an error, a text file with the error message will be generated in the output folder and no CSV files will be generated.
This project was developed in equal part by Anitej Biradar (@anitejb) and @mmatlin.
Copyright (c) 2021 Anitej Biradar (@anitejb) and @mmatlin. Released under the MIT License. See LICENSE for details.