From f31f1f1a176cfb07da06fef840045c69912bce23 Mon Sep 17 00:00:00 2001 From: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com> Date: Fri, 19 Mar 2021 21:02:55 -0700 Subject: [PATCH] Fix default cron value in database newsletters table --- plexpy/__init__.py | 40 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/plexpy/__init__.py b/plexpy/__init__.py index 705df445..fff7b492 100644 --- a/plexpy/__init__.py +++ b/plexpy/__init__.py @@ -755,10 +755,10 @@ def dbcheck(): # newsletters table :: This table keeps record of the newsletter settings c_db.execute( 'CREATE TABLE IF NOT EXISTS newsletters (id INTEGER PRIMARY KEY AUTOINCREMENT, ' - 'agent_id INTEGER, agent_name TEXT, agent_label TEXT, id_name TEXT NOT NULL DEFAULT "", ' + 'agent_id INTEGER, agent_name TEXT, agent_label TEXT, id_name TEXT NOT NULL, ' 'friendly_name TEXT, newsletter_config TEXT, email_config TEXT, ' 'subject TEXT, body TEXT, message TEXT, ' - 'cron TEXT NOT NULL DEFAULT "0 0 * * 0", active INTEGER DEFAULT 0)' + 'cron TEXT NOT NULL DEFAULT \'0 0 * * 0\', active INTEGER DEFAULT 0)' ) # newsletter_log table :: This is a table which logs newsletters sent @@ -1950,9 +1950,43 @@ def dbcheck(): except sqlite3.OperationalError: logger.debug("Altering database. Updating database table newsletters.") c_db.execute( - 'ALTER TABLE newsletters ADD COLUMN id_name TEXT NOT NULL DEFAULT ""' + 'ALTER TABLE newsletters ADD COLUMN id_name TEXT NOT NULL' ) + # Upgrade newsletters table from earlier versions + try: + result = c_db.execute('SELECT SQL FROM sqlite_master WHERE type="table" AND name="newsletters"').fetchone() + if '"cron"\tTEXT NOT NULL DEFAULT "0 0 * * 0"' in result[0]: + logger.debug("Altering database. Updating default cron value in newsletters table.") + c_db.execute( + 'CREATE TABLE newsletters_temp (id INTEGER PRIMARY KEY AUTOINCREMENT, ' + 'agent_id INTEGER, agent_name TEXT, agent_label TEXT, id_name TEXT NOT NULL, ' + 'friendly_name TEXT, newsletter_config TEXT, email_config TEXT, ' + 'subject TEXT, body TEXT, message TEXT, ' + 'cron TEXT NOT NULL DEFAULT \'0 0 * * 0\', active INTEGER DEFAULT 0)' + ) + c_db.execute( + 'INSERT INTO newsletters_temp (id, agent_id, agent_name, agent_label, id_name, ' + 'friendly_name, newsletter_config, email_config, subject, body, message, cron, active) ' + 'SELECT id, agent_id, agent_name, agent_label, id_name, ' + 'friendly_name, newsletter_config, email_config, subject, body, message, cron, active ' + 'FROM newsletters' + ) + c_db.execute( + 'DROP TABLE newsletters' + ) + c_db.execute( + 'ALTER TABLE newsletters_temp RENAME TO newsletters' + ) + except sqlite3.OperationalError: + logger.warn("Unable to update default cron value in newsletters table.") + try: + c_db.execute( + 'DROP TABLE newsletters_temp' + ) + except: + pass + # Upgrade library_sections table from earlier versions (remove UNIQUE constraint on section_id) try: result = c_db.execute('SELECT SQL FROM sqlite_master WHERE type="table" AND name="library_sections"').fetchone()