[EPIC] Basic radio station administration
[EPIC] Create global settings page for radio st... (#219)
Parent:This is a replacement of the previous "Settings" link in the Dashboard footer.
The link to this section should only be visible and accessible to admin and programme coordinator roles.
Proposal
Button in sidebar
- Instead of the link in the footer, there should be a button in the sidebar navigation
- The button should be labeled "
Administration
", to give enough contrast to the "Show Settings
". In the docs we currently refer to this area as Radio Station Administration, so short Administration - This button only links to
/steering/admin
. That's it :-)
Roles & Permissions
- This button is visible to
superusers
- This button is visible to users which have the permission string e.g.
radio station administration - read
. This Permissions is assigned to Programme Managers by default - All elements of the radio station administration are read-only for users which have the
radio station administration - read
permission. This Permissions is assigned to Programme Managers by default
Database storage of settings
Possible options to store settings in Steering:
-
Chosen by team: Custom entity
Radio
with a column for each config setting. This is also the basis for the future requirement of [EPIC] Modify data model for multi-tenant SaaS ... (#239). - Custom entity using key/value pairs with JSON content: (compare) Team Feedback: Cannot be validated that easy
- Dynamic configuration extensions for Django:
Click to expand
Requirement | Constance | Extra Settings | Dynamic Preferences |
---|---|---|---|
Django Admin Integration | x | x | x |
JSON fields or custom fieldset | x | x | x * |
Per user/site/app data** | - | tbc |
x |
Caching | x | x | x |
Mature (3 years+) | x | x | x |
Maintained (last 3 months) | x | x | x |
Community (300+ stars) | 1600 | 448 | 331 |
settings.py integration*** |
- | x | - |
- (*) Custom preference types can be sub-classed.
- (**) Future requirement for [EPIC] Modify data model for multi-tenant SaaS ... (#239).
- (***) Nice to have.
Fields to be stored
-
General settings
- Radio station name (
String
), required for dashboard-clock#30 - Radio station website URL (
URL
), required for #278 - Radio station logo (
Image
), required for dashboard-clock#30
- Radio station name (
-
Fallback show settings
- Relation to Station Fallback Show (
Show
), required forsteering
,engine
,engine-core
,dashboard
,play
and radio website
- Relation to Station Fallback Show (
-
CBA settings
- CBA API Key (
Short String
), required for dashboard#176, play#38, required for radio website andplay
CBA integration; depending on the approach also #11, but likely a different CBA API Key (public vs. internal) - CBA Domains (
[String]
as JSON), required for radio website andplay
CBA integration
- CBA API Key (
-
Playout settings
- Channels (
{ Integer : String }
as JSON): required for #242; default values can be:
- Channels (
{
"1": "Live Studio",
"2": "Pre-production Studio"
}
-
Image settings
-
Images (Clarify which & how many different resolutions we need to provide?) - Required for dashboard#107 and steering#168
- Host Avatar
- Aspect Ratio (
String
orRange
), default1:1
- Resolutions (
[String]
)
- Aspect Ratio (
- Show Logo
- Aspect Ratio (
String
orRange
), default1:1
- Resolutions (
[String]
)
- Aspect Ratio (
- Show Image
- Aspect Ratio (
String
orRange
), default16:9
- Resolutions (
[String]
) These settings should be accessible by the API. They will act as a basis for current and future implementations, and be extended per need.
- Aspect Ratio (
- Host Avatar
-
These settings are consumed by Dashboard, Studio Clock, Website (and some future Progressive Web App or native App).
API
The radio station settings are exposed via the API endpoint /steering/api/v1/settings
. The API is read-only.
Dependency
Sub Tasks
Edited by David Trattnig