diff --git a/gui/slick/interfaces/default/cache.tmpl b/gui/slick/interfaces/default/cache.tmpl
index 30c20f71..83aa6128 100644
--- a/gui/slick/interfaces/default/cache.tmpl
+++ b/gui/slick/interfaces/default/cache.tmpl
@@ -63,10 +63,9 @@
-#for $provider in $cacheResults:
- #for $hItem in $provider[1]:
+#for $hItem in $cacheResults:
- $provider[0] |
+ $hItem['provider'] |
$hItem['name'] |
$hItem['season'] |
$hItem['episodes'] |
@@ -77,7 +76,6 @@
$hItem['release_group'] |
$hItem['version'] |
- #end for
#end for
diff --git a/sickbeard/databases/cache_db.py b/sickbeard/databases/cache_db.py
index 37f60cf7..b3b5c0b8 100644
--- a/sickbeard/databases/cache_db.py
+++ b/sickbeard/databases/cache_db.py
@@ -100,3 +100,27 @@ class AddNetworkConversions(AddSceneExceptionsRefresh):
' tvrage_country TEXT)')
self.connection.action('CREATE INDEX tvrage_idx on network_conversions (tvrage_network, tvrage_country)')
+
+
+class ConsolidateProviders(AddNetworkConversions):
+ def test(self):
+ return self.checkDBVersion() > 1
+
+ def execute(self):
+
+ db.backup_database('cache.db', self.checkDBVersion())
+ if self.hasTable('provider_cache'):
+ self.connection.action('DROP TABLE provider_cache')
+
+ self.connection.action('CREATE TABLE provider_cache (provider TEXT ,name TEXT, season NUMERIC, episodes TEXT,'
+ ' indexerid NUMERIC, url TEXT UNIQUE, time NUMERIC, quality TEXT, release_group TEXT, '
+ 'version NUMERIC)')
+
+ keep_tables = set(['lastUpdate', 'lastSearch', 'db_version', 'scene_exceptions', 'scene_names',
+ 'network_timezones', 'scene_exceptions_refresh', 'network_conversions', 'provider_cache'])
+ current_tables = set(self.listTables())
+ remove_tables = list(current_tables - keep_tables)
+ for table in remove_tables:
+ self.connection.action('DROP TABLE %s' % table)
+
+ self.incDBVersion()
\ No newline at end of file
diff --git a/sickbeard/databases/mainDB.py b/sickbeard/databases/mainDB.py
index 9be4f28a..01d947b7 100644
--- a/sickbeard/databases/mainDB.py
+++ b/sickbeard/databases/mainDB.py
@@ -145,12 +145,6 @@ class MainSanityCheck(db.DBSanityCheck):
logger.log(u'No UNAIRED episodes, check passed')
-def backup_database(version):
- logger.log(u'Backing up database before upgrade')
- if not helpers.backupVersionedFile(db.dbFilename(), version):
- logger.log_error_and_exit(u'Database backup failed, abort upgrading database')
- else:
- logger.log(u'Proceeding with upgrade')
# ======================
# = Main DB Migrations =
@@ -161,7 +155,7 @@ def backup_database(version):
# 0 -> 31
class InitialSchema(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
if not self.hasTable('tv_shows') and not self.hasTable('db_version'):
queries = [
@@ -209,7 +203,7 @@ class InitialSchema(db.SchemaUpgrade):
class AddSizeAndSceneNameFields(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
if not self.hasColumn('tv_episodes', 'file_size'):
self.addColumn('tv_episodes', 'file_size')
@@ -320,7 +314,7 @@ class AddSizeAndSceneNameFields(db.SchemaUpgrade):
# 10 -> 11
class RenameSeasonFolders(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
# rename the column
self.connection.action('ALTER TABLE tv_shows RENAME TO tmp_tv_shows')
@@ -404,7 +398,7 @@ class Add1080pAndRawHDQualities(db.SchemaUpgrade):
return result
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
# update the default quality so we dont grab the wrong qualities after migration
sickbeard.QUALITY_DEFAULT = self._update_composite_qualities(sickbeard.QUALITY_DEFAULT)
@@ -481,7 +475,7 @@ class AddShowidTvdbidIndex(db.SchemaUpgrade):
# Adding index on tvdb_id (tv_shows) and showid (tv_episodes) to speed up searches/queries
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
logger.log(u'Checking for duplicate shows before adding unique index.')
MainSanityCheck(self.connection).fix_duplicate_shows('tvdb_id')
@@ -500,7 +494,7 @@ class AddShowidTvdbidIndex(db.SchemaUpgrade):
class AddLastUpdateTVDB(db.SchemaUpgrade):
# Adding column last_update_tvdb to tv_shows for controlling nightly updates
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
if not self.hasColumn('tv_shows', 'last_update_tvdb'):
logger.log(u'Adding column last_update_tvdb to tv_shows')
@@ -513,7 +507,7 @@ class AddLastUpdateTVDB(db.SchemaUpgrade):
# 14 -> 15
class AddDBIncreaseTo15(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
logger.log(u'Bumping database version to v%s' % self.checkDBVersion())
self.incDBVersion()
@@ -523,7 +517,7 @@ class AddDBIncreaseTo15(db.SchemaUpgrade):
# 15 -> 16
class AddIMDbInfo(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
logger.log(u'Creating IMDb table imdb_info')
self.connection.action(
@@ -540,7 +534,7 @@ class AddIMDbInfo(db.SchemaUpgrade):
# 16 -> 17
class AddProperNamingSupport(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
if not self.hasColumn('tv_shows', 'imdb_id')\
and self.hasColumn('tv_shows', 'rls_require_words')\
@@ -559,7 +553,7 @@ class AddProperNamingSupport(db.SchemaUpgrade):
# 17 -> 18
class AddEmailSubscriptionTable(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
if not self.hasColumn('tv_episodes', 'is_proper')\
and self.hasColumn('tv_shows', 'rls_require_words')\
@@ -579,7 +573,7 @@ class AddEmailSubscriptionTable(db.SchemaUpgrade):
# 18 -> 19
class AddProperSearch(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
if not self.hasColumn('tv_shows', 'notify_list')\
and self.hasColumn('tv_shows', 'rls_require_words')\
@@ -600,7 +594,7 @@ class AddProperSearch(db.SchemaUpgrade):
# 19 -> 20
class AddDvdOrderOption(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
if not self.hasColumn('tv_shows', 'dvdorder'):
logger.log(u'Adding column dvdorder to tv_shows')
@@ -613,7 +607,7 @@ class AddDvdOrderOption(db.SchemaUpgrade):
# 20 -> 21
class AddSubtitlesSupport(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
if not self.hasColumn('tv_shows', 'subtitles'):
logger.log(u'Adding subtitles to tv_shows and tv_episodes')
@@ -629,7 +623,7 @@ class AddSubtitlesSupport(db.SchemaUpgrade):
# 21 -> 22
class ConvertTVShowsToIndexerScheme(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
logger.log(u'Converting TV Shows table to Indexer Scheme...')
@@ -656,7 +650,7 @@ class ConvertTVShowsToIndexerScheme(db.SchemaUpgrade):
# 22 -> 23
class ConvertTVEpisodesToIndexerScheme(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
logger.log(u'Converting TV Episodes table to Indexer Scheme...')
@@ -686,7 +680,7 @@ class ConvertTVEpisodesToIndexerScheme(db.SchemaUpgrade):
# 23 -> 24
class ConvertIMDBInfoToIndexerScheme(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
logger.log(u'Converting IMDB Info table to Indexer Scheme...')
@@ -708,7 +702,7 @@ class ConvertIMDBInfoToIndexerScheme(db.SchemaUpgrade):
# 24 -> 25
class ConvertInfoToIndexerScheme(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
logger.log(u'Converting Info table to Indexer Scheme...')
@@ -730,7 +724,7 @@ class ConvertInfoToIndexerScheme(db.SchemaUpgrade):
# 25 -> 26
class AddArchiveFirstMatchOption(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
if not self.hasColumn('tv_shows', 'archive_firstmatch'):
logger.log(u'Adding column archive_firstmatch to tv_shows')
@@ -744,7 +738,7 @@ class AddArchiveFirstMatchOption(db.SchemaUpgrade):
class AddSceneNumbering(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
if self.hasTable('scene_numbering'):
self.connection.action('DROP TABLE scene_numbering')
@@ -760,7 +754,7 @@ class AddSceneNumbering(db.SchemaUpgrade):
# 27 -> 28
class ConvertIndexerToInteger(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
cl = []
logger.log(u'Converting Indexer to Integer ...', logger.MESSAGE)
@@ -786,7 +780,7 @@ class AddRequireAndIgnoreWords(db.SchemaUpgrade):
self.incDBVersion()
return self.checkDBVersion()
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
if not self.hasColumn('tv_shows', 'rls_require_words'):
logger.log(u'Adding column rls_require_words to tv_shows')
@@ -803,7 +797,7 @@ class AddRequireAndIgnoreWords(db.SchemaUpgrade):
# 29 -> 30
class AddSportsOption(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
if not self.hasColumn('tv_shows', 'sports'):
logger.log(u'Adding column sports to tv_shows')
@@ -828,7 +822,7 @@ class AddSportsOption(db.SchemaUpgrade):
# 30 -> 31
class AddSceneNumberingToTvEpisodes(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
logger.log(u'Adding columns scene_season and scene_episode to tvepisodes')
self.addColumn('tv_episodes', 'scene_season', 'NUMERIC', 'NULL')
@@ -841,7 +835,7 @@ class AddSceneNumberingToTvEpisodes(db.SchemaUpgrade):
# 31 -> 32
class AddAnimeTVShow(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
logger.log(u'Adding column anime to tv_episodes')
self.addColumn('tv_shows', 'anime', 'NUMERIC', '0')
@@ -853,7 +847,7 @@ class AddAnimeTVShow(db.SchemaUpgrade):
# 32 -> 33
class AddAbsoluteNumbering(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
logger.log(u'Adding column absolute_number to tv_episodes')
self.addColumn('tv_episodes', 'absolute_number', 'NUMERIC', '0')
@@ -865,7 +859,7 @@ class AddAbsoluteNumbering(db.SchemaUpgrade):
# 33 -> 34
class AddSceneAbsoluteNumbering(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
logger.log(u'Adding columns absolute_number and scene_absolute_number to scene_numbering')
self.addColumn('scene_numbering', 'absolute_number', 'NUMERIC', '0')
@@ -878,7 +872,7 @@ class AddSceneAbsoluteNumbering(db.SchemaUpgrade):
# 34 -> 35
class AddAnimeBlacklistWhitelist(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
cl = []
cl.append(['CREATE TABLE blacklist (show_id INTEGER, range TEXT, keyword TEXT)'])
@@ -893,7 +887,7 @@ class AddAnimeBlacklistWhitelist(db.SchemaUpgrade):
# 35 -> 36
class AddSceneAbsoluteNumbering2(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
logger.log(u'Adding column scene_absolute_number to tv_episodes')
self.addColumn('tv_episodes', 'scene_absolute_number', 'NUMERIC', '0')
@@ -905,7 +899,7 @@ class AddSceneAbsoluteNumbering2(db.SchemaUpgrade):
# 36 -> 37
class AddXemRefresh(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
logger.log(u'Creating table xem_refresh')
self.connection.action(
@@ -918,7 +912,7 @@ class AddXemRefresh(db.SchemaUpgrade):
# 37 -> 38
class AddSceneToTvShows(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
logger.log(u'Adding column scene to tv_shows')
self.addColumn('tv_shows', 'scene', 'NUMERIC', '0')
@@ -930,7 +924,7 @@ class AddSceneToTvShows(db.SchemaUpgrade):
# 38 -> 39
class AddIndexerMapping(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
if self.hasTable('indexer_mapping'):
self.connection.action('DROP TABLE indexer_mapping')
@@ -946,7 +940,7 @@ class AddIndexerMapping(db.SchemaUpgrade):
# 39 -> 40
class AddVersionToTvEpisodes(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
logger.log(u'Adding columns release_group and version to tv_episodes')
self.addColumn('tv_episodes', 'release_group', 'TEXT', '')
@@ -962,7 +956,7 @@ class AddVersionToTvEpisodes(db.SchemaUpgrade):
# 40 -> 10000
class BumpDatabaseVersion(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
logger.log(u'Bumping database version')
@@ -973,7 +967,7 @@ class BumpDatabaseVersion(db.SchemaUpgrade):
# 41 -> 10001
class Migrate41(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
logger.log(u'Bumping database version')
@@ -984,7 +978,7 @@ class Migrate41(db.SchemaUpgrade):
# 5816 - 5818 -> 15
class MigrateUpstream(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
logger.log(u'Migrate SickBeard DB v%s into v15' % str(self.checkDBVersion()).replace('58', ''))
@@ -995,7 +989,7 @@ class MigrateUpstream(db.SchemaUpgrade):
# 10000 -> 20000
class SickGearDatabaseVersion(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
logger.log(u'Bumping database version to new SickGear standards')
@@ -1006,7 +1000,7 @@ class SickGearDatabaseVersion(db.SchemaUpgrade):
# 10001 -> 10000
class RemoveDefaultEpStatusFromTvShows(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
logger.log(u'Dropping column default_ep_status from tv_shows')
self.dropColumn('tv_shows', 'default_ep_status')
@@ -1018,7 +1012,7 @@ class RemoveDefaultEpStatusFromTvShows(db.SchemaUpgrade):
# 20000 -> 20001
class DBIncreaseTo20001(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
logger.log(u'Bumping database version to force a backup before new database code')
@@ -1032,7 +1026,7 @@ class DBIncreaseTo20001(db.SchemaUpgrade):
# 20001 -> 20002
class AddTvShowOverview(db.SchemaUpgrade):
def execute(self):
- backup_database(self.checkDBVersion())
+ db.backup_database('sickbeard.db', self.checkDBVersion())
logger.log(u'Adding column overview to tv_shows')
self.addColumn('tv_shows', 'overview', 'TEXT', '')
diff --git a/sickbeard/db.py b/sickbeard/db.py
index c34ca221..1b9fe29a 100644
--- a/sickbeard/db.py
+++ b/sickbeard/db.py
@@ -236,9 +236,9 @@ def prettyName(class_name):
return ' '.join([x.group() for x in re.finditer('([A-Z])([a-z0-9]+)', class_name)])
-def restoreDatabase(version):
+def restoreDatabase(filename, version):
logger.log(u'Restoring database before trying upgrade again')
- if not sickbeard.helpers.restoreVersionedFile(dbFilename(suffix='v%s' % version), version):
+ if not sickbeard.helpers.restoreVersionedFile(dbFilename(filename=filename, suffix='v%s' % version), version):
logger.log_error_and_exit(u'Database restore failed, abort upgrading database')
return False
else:
@@ -257,7 +257,6 @@ def _processUpgrade(connection, upgradeClass):
try:
instance.execute()
except:
- restored = False
result = connection.select('SELECT db_version FROM db_version')
if result:
version = int(result[0]['db_version'])
@@ -265,14 +264,11 @@ def _processUpgrade(connection, upgradeClass):
# close db before attempting restore
connection.close()
- if restoreDatabase(version):
- # initialize the main SB database
- upgradeDatabase(DBConnection(), sickbeard.mainDB.InitialSchema)
- restored = True
+ if restoreDatabase(connection.filename, version):
+ logger.log_error_and_exit(u'Successfully restored database version: %s' % version)
+ else:
+ logger.log_error_and_exit(u'Failed to restore database version: %s' % version)
- if not restored:
- print 'Error in %s: %s ' % (upgradeClass.__name__, ex(e))
- raise
logger.log('%s upgrade completed' % upgradeClass.__name__, logger.DEBUG)
else:
logger.log('%s upgrade not required' % upgradeClass.__name__, logger.DEBUG)
@@ -369,6 +365,13 @@ class SchemaUpgrade(object):
self.connection.action('UPDATE db_version SET db_version = ?', [new_version])
return new_version
+ def listTables(self):
+ tables = []
+ sql_result = self.connection.select('SELECT name FROM sqlite_master where type = "table"')
+ for table in sql_result:
+ tables.append(table[0])
+ return tables
+
def MigrationCode(myDB):
schema = {
@@ -442,8 +445,15 @@ def MigrationCode(myDB):
myDB.close()
logger.log(u'Failed to update database with error: %s attempting recovery...' % ex(e), logger.ERROR)
- if restoreDatabase(db_version):
+ if restoreDatabase(myDB.filename, db_version):
# initialize the main SB database
logger.log_error_and_exit(u'Successfully restored database version: %s' % db_version)
else:
- logger.log_error_and_exit(u'Failed to restore database version: %s' % db_version)
\ No newline at end of file
+ logger.log_error_and_exit(u'Failed to restore database version: %s' % db_version)
+
+def backup_database(filename, version):
+ logger.log(u'Backing up database before upgrade')
+ if not sickbeard.helpers.backupVersionedFile(dbFilename(filename), version):
+ logger.log_error_and_exit(u'Database backup failed, abort upgrading database')
+ else:
+ logger.log(u'Proceeding with upgrade')
\ No newline at end of file
diff --git a/sickbeard/tvcache.py b/sickbeard/tvcache.py
index 4fb70105..e1ebe1f1 100644
--- a/sickbeard/tvcache.py
+++ b/sickbeard/tvcache.py
@@ -38,36 +38,6 @@ class CacheDBConnection(db.DBConnection):
def __init__(self, providerName):
db.DBConnection.__init__(self, 'cache.db')
- # Create the table if it's not already there
- try:
- if not self.hasTable(providerName):
- self.action(
- 'CREATE TABLE [' + providerName + '] (name TEXT, season NUMERIC, episodes TEXT, indexerid NUMERIC, url TEXT, time NUMERIC, quality TEXT, release_group TEXT)')
- self.action(
- 'CREATE UNIQUE INDEX IF NOT EXISTS [idx_' + providerName + '_url] ON [' + providerName + '] (url)')
- elif not self.hasIndex(providerName, 'idx_%s_url' % providerName):
- sqlResults = self.select(
- 'SELECT url, COUNT(url) as count FROM [' + providerName + '] GROUP BY url HAVING count > 1')
-
- for cur_dupe in sqlResults:
- self.action('DELETE FROM [' + providerName + '] WHERE url = ?', [cur_dupe['url']])
-
- self.action(
- 'CREATE UNIQUE INDEX IF NOT EXISTS [idx_' + providerName + '_url] ON [' + providerName + '] (url)')
-
-
- # add release_group column to table if missing
- if not self.hasColumn(providerName, 'release_group'):
- self.addColumn(providerName, 'release_group', 'TEXT', '')
-
- # add version column to table if missing
- if not self.hasColumn(providerName, 'version'):
- self.addColumn(providerName, 'version', 'NUMERIC', '-1')
-
- except Exception, e:
- if str(e) != 'table [' + providerName + '] already exists':
- raise
-
# Create the table if it's not already there
try:
if not self.hasTable('lastUpdate'):
@@ -90,7 +60,7 @@ class TVCache():
def _clearCache(self):
if self.shouldClearCache():
myDB = self._getDB()
- myDB.action('DELETE FROM [' + self.providerID + '] WHERE 1')
+ myDB.action('DELETE FROM provider_cache WHERE provider = ?', [self.providerID])
def _get_title_and_url(self, item):
# override this in the provider if recent search has a different data layout to backlog searches
@@ -273,8 +243,8 @@ class TVCache():
logger.log(u'Added RSS item: [' + name + '] to cache: [' + self.providerID + ']', logger.DEBUG)
return [
- 'INSERT OR IGNORE INTO [' + self.providerID + '] (name, season, episodes, indexerid, url, time, quality, release_group, version) VALUES (?,?,?,?,?,?,?,?,?)',
- [name, season, episodeText, parse_result.show.indexerid, url, curTimestamp, quality, release_group, version]]
+ 'INSERT OR IGNORE INTO provider_cache (provider, name, season, episodes, indexerid, url, time, quality, release_group, version) VALUES (?,?,?,?,?,?,?,?,?,?)',
+ [self.providerID, name, season, episodeText, parse_result.show.indexerid, url, curTimestamp, quality, release_group, version]]
def searchCache(self, episode, manualSearch=False):
@@ -286,12 +256,12 @@ class TVCache():
def listPropers(self, date=None, delimiter='.'):
myDB = self._getDB()
- sql = "SELECT * FROM [" + self.providerID + "] WHERE name LIKE '%.PROPER.%' OR name LIKE '%.REPACK.%'"
+ sql = "SELECT * FROM provider_cache WHERE name LIKE '%.PROPER.%' OR name LIKE '%.REPACK.%' AND provider = ?"
if date != None:
sql += ' AND time >= ' + str(int(time.mktime(date.timetuple())))
- return filter(lambda x: x['indexerid'] != 0, myDB.select(sql))
+ return filter(lambda x: x['indexerid'] != 0, myDB.select(sql, [self.providerID]))
def findNeededEpisodes(self, episode, manualSearch=False):
@@ -301,14 +271,14 @@ class TVCache():
myDB = self._getDB()
if type(episode) != list:
sqlResults = myDB.select(
- 'SELECT * FROM [' + self.providerID + '] WHERE indexerid = ? AND season = ? AND episodes LIKE ?',
- [episode.show.indexerid, episode.season, '%|' + str(episode.episode) + '|%'])
+ 'SELECT * FROM provider_cache WHERE provider = ? AND indexerid = ? AND season = ? AND episodes LIKE ?',
+ [self.providerID, episode.show.indexerid, episode.season, '%|' + str(episode.episode) + '|%'])
else:
for epObj in episode:
cl.append([
- 'SELECT * FROM [' + self.providerID + '] WHERE indexerid = ? AND season = ? AND episodes LIKE ? '
+ 'SELECT * FROM provider_cache WHERE provider = ? AND indexerid = ? AND season = ? AND episodes LIKE ? '
'AND quality IN (' + ','.join([str(x) for x in epObj.wantedQuality]) + ')',
- [epObj.show.indexerid, epObj.season, '%|' + str(epObj.episode) + '|%']])
+ [self.providerID, epObj.show.indexerid, epObj.season, '%|' + str(epObj.episode) + '|%']])
sqlResults = myDB.mass_action(cl)
if sqlResults:
sqlResults = list(itertools.chain(*sqlResults))
diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py
index 7d87d3ad..c8a05d5f 100644
--- a/sickbeard/webserve.py
+++ b/sickbeard/webserve.py
@@ -4745,15 +4745,13 @@ class ApiBuilder(MainHandler):
class Cache(MainHandler):
def index(self):
myDB = db.DBConnection('cache.db')
- results = []
- for provider in sickbeard.providers.sortedProviderList():
- try:
- sqlResults = myDB.select('SELECT * FROM %s' % provider.cache.providerID)
- except:
- continue
- results.append((provider.name, sqlResults))
+ sql_results = myDB.select('SELECT * FROM provider_cache')
+ if not sql_results:
+ sql_results = []
+
+
t = PageTemplate(headers=self.request.headers, file='cache.tmpl')
- t.cacheResults = results
+ t.cacheResults = sql_results
return t.respond()