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