diff --git a/program/migrations/0102_radiosettings_fallback_pools.py b/program/migrations/0102_radiosettings_fallback_pools.py new file mode 100644 index 0000000000000000000000000000000000000000..b017d3ba840f1d32fe8ba1dceca0c08bb9547d65 --- /dev/null +++ b/program/migrations/0102_radiosettings_fallback_pools.py @@ -0,0 +1,24 @@ +# Generated by Django 4.2.13 on 2024-06-25 19:31 + +import program.models +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("program", "0101_alter_radiosettings_host_image_aspect_ratio_and_more"), + ] + + operations = [ + migrations.AddField( + model_name="radiosettings", + name="fallback_pools", + field=models.JSONField( + blank=True, + default=dict, + help_text="JSON key/value pairs", + validators=[program.models.validate_fallback_pools], + ), + ), + ] diff --git a/program/models.py b/program/models.py index 45a0fc205c70ce93518456d39908f061293ddb21..b96ffbd9685e800e93b6171ab5f87cd04cbf3488 100644 --- a/program/models.py +++ b/program/models.py @@ -603,6 +603,20 @@ def validate_line_in_channels(value): raise DjangoValidationError(e.args[0]) +def validate_fallback_pools(value): + schema = { + "type": "object", + "patternProperties": { + "^.*$": {"type": "string"}, + }, + } + + try: + jsonschema.validate(value, schema) + except jsonschema.exceptions.ValidationError as e: + raise DjangoValidationError(e.args[0]) + + class RadioSettings(models.Model): cba_api_key = models.CharField(blank=True, max_length=64, verbose_name="CBA API key") cba_domains = models.JSONField( @@ -613,6 +627,12 @@ class RadioSettings(models.Model): verbose_name="CBA domains", ) fallback_default_pool = models.CharField(blank=True, max_length=32) + fallback_pools = models.JSONField( + blank=True, + default=dict, + help_text="JSON key/value pairs", + validators=[validate_fallback_pools], + ) fallback_show = models.ForeignKey( Show, blank=True, null=True, on_delete=models.CASCADE, related_name="+" )