Skip to content
Snippets Groups Projects

AURA Steering: Program Scheduler

AURA Steering is the scheduling module, where the actual program schedule of the whole station is stored as well as all infos regarding single shows and emissions.

It also acts as an OpenID Connect provider for dashboard and tank.

Installation

Follow the instructions to deploy AURA Web from the Docker Compose Installation

If you just want to try steering locally, use the provided compose setup and be sure to add:

AURA_PROTO=http

to the .env file.

A better development setup for steering, that pulls the docker images for dashboard and tank from Docker Hub, builds the image for steering locally and exposes the ports can be achieved with docker-compose.steering.yml by adding this lines to the end of the .env file:

STEERING_VERSION=latest
TANK_VERSION=unstable
DASHBOARD_VERSION=unstable
DASHBOARD_CLOCK_VERSION=unstable
COMPOSE_FILE=docker-compose.yml:docker-compose.steering.yml

Testing

If you want to run the test suite, you can run pytest in the container:

$ docker compose run steering pytest

venv

Warning: This is not the recommended way: it uses SQLite instead of Postgres and will be deprecated soon

If you really don't want to use Docker, you can install steering using a virtual environment.

Create and activate a virtual environment:

$ python3.9 -m venv venv
$ source venv/bin/activate

Install the required dependencies:

(venv) $ pip install --upgrade pip
(venv) $ pip install -r requirements.txt

Then, you can set up the database:

(venv) $ ./manage.py migrate

And load the fixtures:

(venv) $ ./manage.py loaddata fixtures/*/*.json

Or, if you prefer, you can just create a superuser after setting up the database:

(venv) $ manage.py createsuperuser

The only required fixtures are the recurrence rules, these are needed to create schedules:

$ docker compose run django ./manage.py loaddata fixtures/program/rrule.json

Then, you can create a RSA Key and the clients for dashboard and tank:

(venv) $ ./manage.py creatersakey
(venv) $ ./manage.py create_oidc_client dashboard public -r "id_token token" -u http://localhost:8080/oidc_callback.html -u http://localhost:8080/oidc_callback_silentRenew.html -p http://localhost:8080/
(venv) $ ./manage.py create_oidc_client tank confidential -r "code" -u http://localhost:8040/auth/oidc/callback

Finally, you can start the development server:

(venv) $ ./manage.py runserver

Data Model

A visualization of the data model can be generated using the Graph Models Django Extensions

The following command will generate an image out of the models:

(venv) $ docker compose steering run ./manage.py graph_models --pydot -g -o steering_data_model.png program profile