From 759a825b37a03a224dcadea4448ff2dccde93529 Mon Sep 17 00:00:00 2001 From: Dustyn Gibson <dustyn.gibson@gmail.com> Date: Sun, 7 Jun 2015 08:31:55 -0700 Subject: [PATCH] Fix for potential bad episode airdates preventing SR from starting. --- gui/slick/interfaces/default/home.tmpl | 2 +- sickbeard/databases/mainDB.py | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/gui/slick/interfaces/default/home.tmpl b/gui/slick/interfaces/default/home.tmpl index ae4a05fc..840b37cb 100644 --- a/gui/slick/interfaces/default/home.tmpl +++ b/gui/slick/interfaces/default/home.tmpl @@ -30,7 +30,7 @@ #set $sql_statement += ' OR (status IN ' + status_quality + ') OR (status IN ' + status_download + '))) AS ep_total, ' #set $sql_statement += ' (SELECT airdate FROM tv_episodes WHERE showid=tv_eps.showid AND airdate >= ' + $today + ' AND (status = ' + str($UNAIRED) + ' OR status = ' + str($WANTED) + ') ORDER BY airdate ASC LIMIT 1) AS ep_airs_next, ' -#set $sql_statement += ' (SELECT airdate FROM tv_episodes WHERE showid=tv_eps.showid AND airdate <> 1 AND status <> ' + str($UNAIRED) + ' ORDER BY airdate DESC LIMIT 1) AS ep_airs_prev ' +#set $sql_statement += ' (SELECT airdate FROM tv_episodes WHERE showid=tv_eps.showid AND airdate > 1 AND status <> ' + str($UNAIRED) + ' ORDER BY airdate DESC LIMIT 1) AS ep_airs_prev ' #set $sql_statement += ' FROM tv_episodes tv_eps GROUP BY showid' #set $sql_result = $myDB.select($sql_statement) diff --git a/sickbeard/databases/mainDB.py b/sickbeard/databases/mainDB.py index c73ae306..2c9aefbc 100644 --- a/sickbeard/databases/mainDB.py +++ b/sickbeard/databases/mainDB.py @@ -38,6 +38,7 @@ class MainSanityCheck(db.DBSanityCheck): self.fix_unaired_episodes() self.fix_tvrage_show_statues() self.fix_episode_statuses() + self.fix_invalid_airdates() def fix_duplicate_shows(self, column='indexer_id'): @@ -176,6 +177,20 @@ class MainSanityCheck(db.DBSanityCheck): else: logger.log(u"No MALFORMED episode statuses, check passed", logger.DEBUG) + def fix_invalid_airdates(self): + + sqlResults = self.connection.select( + "SELECT episode_id, showid FROM tv_episodes WHERE airdate >= ? OR airdate < 1", + [datetime.date.max.toordinal()]) + + for bad_airdate in sqlResults: + logger.log(u"Bad episode airdate detected! episode_id: " + str(bad_airdate["episode_id"]) + " showid: " + str( + bad_airdate["showid"]), logger.DEBUG) + logger.log(u"Fixing bad episode airdate for episode_id: " + str(bad_airdate["episode_id"])) + self.connection.action("UPDATE tv_episodes SET airdate = '1' WHERE episode_id = ?", [bad_airdate["episode_id"]]) + + else: + logger.log(u"No bad episode airdates, check passed", logger.DEBUG) def backupDatabase(version): logger.log(u"Backing up database before upgrade") -- GitLab