#122: Improve documentation and conf tools #126

Merged
thomas merged 11 commits from dev-1.0-120 into develop-1.0 2023-11-08 17:40:02 +00:00
6 changed files with 65 additions and 33 deletions

3
.gitignore vendored
View File

@ -5,3 +5,6 @@ venv/
node_modules/
*.egg-info/
*.egg
db.sqlite3
instance/settings/settings.py

View File

@ -1,10 +1,9 @@
![](/logo.png)
Platform to manage a radio, schedules, website, and so on. We use the power of great tools like Django or Liquidsoap.
A platform to manage radio schedules, website content, and more. It uses the power of great tools like Django or Liquidsoap.
This project is distributed under GPL version 3. More information in the LICENSE file, except for some files whose license is indicated inside source code.
## Features
* **streams**: multiple random music streams when no program is played. We also can specify a time range and frequency for each;
* **diffusions**: generate diffusions time slot for programs that have schedule informations. Check for conflicts and rerun.
@ -15,7 +14,51 @@ This project is distributed under GPL version 3. More information in the LICENSE
* **cms**: content management system.
## Scripts
## Architecture and concepts
Aircox is divided in two main modules:
* `aircox`: basics of Aircox (programs, diffusions, sounds, etc. management); interface for managing a website with Aircox elements (playlists, timetable, players on the website);
* `aircox_streamer`: interact with application to generate audio stream (LiquidSoap);
## Development setup
Start installing a virtual environment :
```
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
pip install -r requirements_tests.txt
```
Then copy the default settings and initiate the database :
```
cp instance/settings/sample.py instance/settings/settings.py
python -c "from django.core.management.utils import get_random_secret_key; print('SECRET_KEY = \"%s\"' % get_random_secret_key())" >> instance/settings/settings.py
DJANGO_SETTINGS_MODULE=instance.settings.dev ./manage.py migrate
```
Finally test and run the instance using development settings, and point your browser to http://localhost:8000 :
```
DJANGO_SETTINGS_MODULE=instance.settings.dev pytest
DJANGO_SETTINGS_MODULE=instance.settings.dev ./manage.py runserver
```
Before requesting a merge, enable pre-commit :
```
pip install pre-commit
pre-commit install
```
## Installation
Running Aircox on production involves:
* Aircox modules and a running Django project;
* a supervisor for common tasks (sounds monitoring, stream control, etc.) -- `supervisord`;
* a wsgi and an HTTP server -- `gunicorn`, `nginx`;
* a database supported by Django (MySQL, SQLite, PostGresSQL);
### Scripts
Are included various configuration scripts that can be used to ease setup. They
assume that the project is present in `/srv/apps/aircox`:
@ -27,7 +70,6 @@ The scripts are written with a combination of `cron`, `supervisord`, `nginx`
and `gunicorn` in mind.
## Installation
### Dependencies
For python dependencies take a peek at the `requirements.txt` file, plus
dependencies specific to Django (e.g. for database: `mysqlclient` for MySql
@ -62,8 +104,8 @@ pip install -r requirements.txt
```
### Configuration
You must write a settings.py file in the `instance` directory (you can just
copy and paste `instance/sample_settings.py`. There still is configuration
You must write a settings.py file in the `instance/settings` directory (you can just
copy and paste `instance/settings/sample.py`. There still is configuration
required in this file, check it in for more info.

View File

@ -1,25 +0,0 @@
# General information
Aircox is a set of Django applications that aims to provide a radio management solution, and is
written in Python 3.5.
Running Aircox on production involves:
* Aircox modules and a running Django project;
* a supervisor for common tasks (sounds monitoring, stream control, etc.) -- `supervisord`;
* a wsgi and an HTTP server -- `gunicorn`, `nginx`;
* a database supported by Django (MySQL, SQLite, PostGresSQL);
# Architecture and concepts
Aircox is divided in three main modules:
* `programs`: basics of Aircox (programs, diffusions, sounds, etc. management);
* `controllers`: interact with application to generate audio stream (LiquidSoap);
* `cms`: create a website with Aircox elements (playlists, timetable, players on the website);
# Installation
# Configuration

View File

@ -7,6 +7,7 @@ try:
except ImportError:
pass
DEBUG = True
LOCALE_PATHS = ["aircox/locale", "aircox_streamer/locale"]
@ -15,7 +16,7 @@ LOGGING = {
"disable_existing_loggers": False,
"formatters": {
"timestamp": {
"format": "{asctime} {levelname} {message}",
"format": "{asctime} {module} {levelname} {message}",
"style": "{",
},
},
@ -26,6 +27,10 @@ LOGGING = {
},
},
"loggers": {
"root": {
"handlers": ["console"],
"level": os.getenv("DJANGO_LOG_LEVEL", "DEBUG"),
},
"aircox": {
"handlers": ["console"],
"level": os.getenv("DJANGO_LOG_LEVEL", "DEBUG"),
@ -40,3 +45,9 @@ LOGGING = {
},
},
}
CACHES = {
"default": {
"BACKEND": "django.core.cache.backends.locmem.LocMemCache",
}
}

View File

@ -10,6 +10,7 @@ For Django settings see:
https://docs.djangoproject.com/en/3.1/topics/settings/
https://docs.djangoproject.com/en/3.1/ref/settings/
"""
from django.utils import timezone
from zoneinfo import ZoneInfo
from .prod import *

View File

@ -17,5 +17,5 @@ dateutils~=0.6
mutagen~=1.45
Pillow~=9.0
psutil~=5.9
PyYAML==5.4
PyYAML==6.0.1
watchdog~=2.1