From 6c59ff588b5418d10cc9cc16f1e82377a9e9ea74 Mon Sep 17 00:00:00 2001 From: Jonas L Date: Sat, 6 Aug 2022 19:18:40 +0200 Subject: [PATCH] feat: move off_air_meta stream setting to pref table (#2023) --- .../migrations/0037_3_0_0_alpha_14_1.py | 44 +++++++++++++++++++ .../legacy/migrations/__init__.py | 2 +- .../legacy/migrations/sql/data.sql | 2 +- .../controllers/PreferenceController.php | 2 +- legacy/application/forms/StreamSetting.php | 2 +- legacy/application/models/Preference.php | 10 +++++ legacy/application/models/StreamSetting.php | 12 +---- 7 files changed, 59 insertions(+), 15 deletions(-) create mode 100644 api/libretime_api/legacy/migrations/0037_3_0_0_alpha_14_1.py diff --git a/api/libretime_api/legacy/migrations/0037_3_0_0_alpha_14_1.py b/api/libretime_api/legacy/migrations/0037_3_0_0_alpha_14_1.py new file mode 100644 index 000000000..08d0b9f82 --- /dev/null +++ b/api/libretime_api/legacy/migrations/0037_3_0_0_alpha_14_1.py @@ -0,0 +1,44 @@ +# pylint: disable=invalid-name + +from django.db import migrations + +from ._migrations import legacy_migration_factory + +UP = """ +insert into cc_pref ("keystr", "valstr") +select + "keyname" as "keystr", + coalesce("value", 'LibreTime - offline') as "valstr" +from cc_stream_setting +where "keyname" = 'off_air_meta'; + +delete from cc_stream_setting +where "keyname" = 'off_air_meta'; +""" + +DOWN = """ +insert into cc_stream_setting ("keyname", "value", "type") +select + "keystr" as "keyname", + coalesce("valstr", 'LibreTime - offline') as "value", + 'string' as "type" +from cc_pref +where "keystr" = 'off_air_meta'; + +delete from cc_pref +where "keystr" = 'off_air_meta'; +""" + + +class Migration(migrations.Migration): + dependencies = [ + ("legacy", "0036_3_0_0_alpha_13_10"), + ] + operations = [ + migrations.RunPython( + code=legacy_migration_factory( + target="3.0.0-alpha.14.1", + sql=UP, + ) + ) + ] diff --git a/api/libretime_api/legacy/migrations/__init__.py b/api/libretime_api/legacy/migrations/__init__.py index 57437ffc4..a0fe2c890 100644 --- a/api/libretime_api/legacy/migrations/__init__.py +++ b/api/libretime_api/legacy/migrations/__init__.py @@ -1 +1 @@ -LEGACY_SCHEMA_VERSION = "3.0.0-alpha.13.10" +LEGACY_SCHEMA_VERSION = "3.0.0-alpha.14.1" diff --git a/api/libretime_api/legacy/migrations/sql/data.sql b/api/libretime_api/legacy/migrations/sql/data.sql index cd3189299..bda3be2af 100644 --- a/api/libretime_api/legacy/migrations/sql/data.sql +++ b/api/libretime_api/legacy/migrations/sql/data.sql @@ -8,6 +8,7 @@ INSERT INTO cc_live_log ("state", "start_time") VALUES ('S', now() at time zone INSERT INTO cc_pref ("keystr", "valstr") VALUES ('import_timestamp', '0'); INSERT INTO cc_pref ("keystr", "valstr") VALUES ('timezone', 'UTC'); INSERT INTO cc_pref ("keystr", "valstr") VALUES ('default_stream_mount_point', 'main'); +INSERT INTO cc_pref ("keystr", "valstr") VALUES ('off_air_meta', 'LibreTime - offline'); INSERT INTO cc_pref ("keystr", "valstr") VALUES ('enable_replay_gain', 1); INSERT INTO cc_pref ("keystr", "valstr") VALUES ('locale', 'en_US'); INSERT INTO cc_pref ("keystr", "valstr") VALUES ('max_bitrate', '320'); @@ -24,7 +25,6 @@ INSERT INTO cc_subjs ("login", "type", "pass") VALUES ('admin', 'A', md5('admin' INSERT INTO cc_pref ("subjid", "keystr", "valstr") VALUES (1, 'user_locale', 'en_US'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('icecast_vorbis_metadata', 'false', 'boolean'); -INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('off_air_meta', 'LibreTime - offline', 'string'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('output_sound_device_type', 'ALSA', 'string'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('output_sound_device', 'false', 'boolean'); diff --git a/legacy/application/controllers/PreferenceController.php b/legacy/application/controllers/PreferenceController.php index 6c22592e1..83103afa8 100644 --- a/legacy/application/controllers/PreferenceController.php +++ b/legacy/application/controllers/PreferenceController.php @@ -292,7 +292,7 @@ class PreferenceController extends Zend_Controller_Action Application_Model_StreamSetting::setDjLiveStreamPort($values['show_source_port']); Application_Model_StreamSetting::setDjLiveStreamMountPoint($values['show_source_mount']); - Application_Model_StreamSetting::setOffAirMeta($values['offAirMeta']); + Application_Model_Preference::setOffAirMeta($values['offAirMeta']); // store stream update timestamp Application_Model_Preference::SetStreamUpdateTimestamp(); diff --git a/legacy/application/forms/StreamSetting.php b/legacy/application/forms/StreamSetting.php index ec55c681c..44979f0b3 100644 --- a/legacy/application/forms/StreamSetting.php +++ b/legacy/application/forms/StreamSetting.php @@ -65,7 +65,7 @@ class Application_Form_StreamSetting extends Zend_Form $offAirMeta = new Zend_Form_Element_Text('offAirMeta'); $offAirMeta->setLabel(_('Off Air Metadata')) - ->setValue(Application_Model_StreamSetting::getOffAirMeta()) + ->setValue(Application_Model_Preference::getOffAirMeta()) ->setDecorators(['ViewHelper']); $this->addElement($offAirMeta); diff --git a/legacy/application/models/Preference.php b/legacy/application/models/Preference.php index eb9145a99..046095d8a 100644 --- a/legacy/application/models/Preference.php +++ b/legacy/application/models/Preference.php @@ -350,6 +350,16 @@ class Application_Model_Preference return self::getValue('stream_label_format'); } + public static function getOffAirMeta() + { + return self::getValue('off_air_meta'); + } + + public static function setOffAirMeta($offAirMeta) + { + self::setValue('off_air_meta', $offAirMeta); + } + public static function GetStationName() { return self::getValue('station_name'); diff --git a/legacy/application/models/StreamSetting.php b/legacy/application/models/StreamSetting.php index 0b828ceda..7dbbf5580 100644 --- a/legacy/application/models/StreamSetting.php +++ b/legacy/application/models/StreamSetting.php @@ -207,7 +207,7 @@ class Application_Model_StreamSetting $settings['master_live_stream_mp'] = self::getMasterLiveStreamMountPoint(); $settings['dj_live_stream_port'] = self::getDjLiveStreamPort(); $settings['dj_live_stream_mp'] = self::getDjLiveStreamMountPoint(); - $settings['off_air_meta'] = self::getOffAirMeta(); + $settings['off_air_meta'] = Application_Model_Preference::getOffAirMeta(); $settings['icecast_vorbis_metadata'] = self::getIcecastVorbisMetadata(); $settings['output_sound_device'] = self::getOutputSoundDevice(); $settings['output_sound_device_type'] = self::getOutputSoundDeviceType(); @@ -507,16 +507,6 @@ class Application_Model_StreamSetting self::setValue($stream . '_admin_pass', $v, 'string'); } - public static function getOffAirMeta() - { - return self::getValue('off_air_meta'); - } - - public static function setOffAirMeta($offAirMeta) - { - self::setValue('off_air_meta', $offAirMeta, 'string'); - } - public static function GetAllListenerStatErrors() { $sql = 'SELECT * FROM cc_stream_setting WHERE keyname like :p1';