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