Broadway on Demand
Developer Setup (Docker Compose)
- Copy
dev/dev_config.py
to repo root as config.py
- Run
docker compose up
. Server runs at localhost:3000
by default. This can be changed in the docker compose file.
- To log in, navigate to http://localhost:3000/on-demand/login/. You can login as any user. In the test database there are three users:
- student (student of the test course)
- non-admin (a staff, but not an admin of the test course)
- admin (staff and admin of the test course)
Developer setup (Local)
- Install and start MongoDB Server. To ensure that MongoDB is running, run
mongo
.
- Clone the repository and
cd
into the repository root.
- Make a copy of the sample config file:
cp sample_config.py config.py
.
- Set
DEV_MODE = True
in config.py
.
- (recommended) Create and activate a Python 3 virtualenv:
python3 -m virtualenv venv && source venv/bin/activate
- You may need to install
virtualenv
with pip3 install virtualenv
.
- Install dependencies:
pip install -r requirements.txt
.
- Run the development server:
FLASK_APP=src FLASK_ENV=development flask run
. The server will run at localhost:5000
by default.
- To add test data to the database, unzip and restore the given dump:
unzip test_data.zip && mongorestore test_data && rm -rf test_data
- To log in, navigate to http://localhost:5000/on-demand/login/. You can login as any user. In the test database there are three users:
- student (student of the test course)
- non-admin (a staff, but not an admin of the test course)
- admin (staff and admin of the test course)
How to update test database
If you change the structure of database and you want to update the distributed test_data.zip, use the following command:
mongodump --db broadway_on_demand --out=test_data && zip -r test_data.zip test_data && rm -r test_data
New Course Setup
Steps
- Ask on-demand managers to add your course to the on-demand database with at least one admin.
- Admins are able to modify roster and add assignments from the user interface.
- Generate a token and add it to both broadway-on-demand and broadway's database for your course.
- Create docker images for grading a single student
- On-demand will pass in the student's netid as
STUDENT_ID
and the timestamp as DUE_DATE
to the all grader processes.
- The
DUE_DATE
is in the string format YYYY-MM-DD hh:mm
in UTC time zone.
- Add an assignment with the UI
- Assignment ID will be displayed and can not be changed once set.
- Max Runs along with Quota Type determine how many runs student get per day or total. Note that staff members always have one run for all assignments.
- Configuration is a json config provided to broadway. Refer to broadway's Wiki. (The assignment config shouldn't have
STUDENT_ID
or DUE_DATE
because those will be provided).
- Test out the assignment by going to student view and start a grading run for yourself.
- Make sure you are added as a student to the course in order to do this.
Important Notes
- broadway-on-demand assumes that a student's netid is the same as the studne'ts repository name. It uses that to get a student's latest commit.