Skip to content

Latest commit

 

History

History
112 lines (73 loc) · 2.66 KB

README.md

File metadata and controls

112 lines (73 loc) · 2.66 KB

fkweb

Unit tests Build fkweb

Backend API for the Norwegian public access TV channel Frikanalen.

Configuration

The backend is configured using environment variables.

  • ALLOWED_HOSTS - comma-separated list of permitted domains
  • DATABASE_USER - postgres username
  • DATABASE_NAME - postgres db name
  • DATABASE_PASS - postgres password
  • SMTP_SERVER - smtp server for outgoing email

Installation

Docker

This package builds on push as frikanalen/django-backend. To build a local copy:

docker build -t frikanalen/django-backend . 

Then you can run it thus:

docker run -p 8080:8080 frikanalen/django-backend 

Local development

Initializing dev environment

sudo apt install python3-virtualenv python3-pip
python3 -m venv env
source env/bin/activate
pip install -r requirements-dev.txt

Initializing database

# Spin up PostgreSQL in Docker; web interface now at localhost:8082
docker-compose up -d
# Initialize the database
./manage.py migrate
# Load necessary fixtures (eg. content categories) into the database:
./manage.py loaddata frikanalen

EITHER Load the testing users and organizations:

./manage.py loaddata test-users

OR Create a new admin user:

./manage.py createsuperuser

Start the webserver:

./manage.py runserver

Point your browser to http://127.0.0.1:8000/admin and log in.

Management commands

In addition to the HTTP API, the following commands are executed periodically as Kubernetes cron jobs in our cluster:

./manage.py fill_next_weeks_agenda

This job will fill the next week's schedule with videos as defined by the WeeklySlot model. This will generally be entries like "Fill Mondays 12-13 with the latest videos from NUUG".

./manage.py fill_agenda_with_jukebox

This job will fill the remaining unpopulated areas with videos as randomly selected from the set of all videos marked with is_filler=True.

Test data

As a convenience a test data file has been supplied, eg. for integration testing.

It contains the following organizations:

  • dev-org1
  • dev-org2

Additionally, the following users:

For more advanced things you'd want to check our infrastructure Ansible setup.