Merge remote-tracking branch 'origin/nosql' into nosql-qbitorrent

This commit is contained in:
jkaberg committed 2014-03-16 12:38:12 +01:00
commit 07db34beb9
9 files changed
+66 -37

No files matched your search

+4
View File
@@ -51,6 +51,7 @@ class Core(Plugin):
addEvent('app.api_url', self.createApiUrl) addEvent('app.api_url', self.createApiUrl)
addEvent('app.version', self.version) addEvent('app.version', self.version)
addEvent('app.load', self.checkDataDir) addEvent('app.load', self.checkDataDir)
addEvent('app.load', self.cleanUpFolders)
addEvent('setting.save.core.password', self.md5Password) addEvent('setting.save.core.password', self.md5Password)
addEvent('setting.save.core.api_key', self.checkApikey) addEvent('setting.save.core.api_key', self.checkApikey)
@@ -75,6 +76,9 @@ class Core(Plugin):
return True return True
def cleanUpFolders(self):
self.deleteEmptyFolder(Env.get('app_dir'), show_error = False)
def available(self, **kwargs): def available(self, **kwargs):
return { return {
'success': True 'success': True
+6 -5
View File
@@ -142,6 +142,10 @@ class Updater(Plugin):
'success': success 'success': success
} }
def doShutdown(self):
self.updater.deletePyc(show_logs = False)
return super(Updater, self).doShutdown()
class BaseUpdater(Plugin): class BaseUpdater(Plugin):
@@ -176,7 +180,7 @@ class BaseUpdater(Plugin):
def check(self): def check(self):
pass pass
def deletePyc(self, only_excess = True): def deletePyc(self, only_excess = True, show_logs = True):
for root, dirs, files in scandir.walk(ss(Env.get('app_dir'))): for root, dirs, files in scandir.walk(ss(Env.get('app_dir'))):
@@ -186,7 +190,7 @@ class BaseUpdater(Plugin):
for excess_pyc_file in excess_pyc_files: for excess_pyc_file in excess_pyc_files:
full_path = os.path.join(root, excess_pyc_file) full_path = os.path.join(root, excess_pyc_file)
log.debug('Removing old PYC file: %s', full_path) if show_logs: log.debug('Removing old PYC file: %s', full_path)
try: try:
os.remove(full_path) os.remove(full_path)
except: except:
@@ -212,9 +216,6 @@ class GitUpdater(BaseUpdater):
log.info('Updating to latest version') log.info('Updating to latest version')
self.repo.pull() self.repo.pull()
# Delete leftover .pyc files
self.deletePyc()
return True return True
except: except:
log.error('Failed updating via GIT: %s', traceback.format_exc()) log.error('Failed updating via GIT: %s', traceback.format_exc())
+1 -1
View File
@@ -162,7 +162,7 @@ class Downloader(Provider):
(d_manual and manual or d_manual is False) and \ (d_manual and manual or d_manual is False) and \
(not data or self.isCorrectProtocol(data.get('protocol'))) (not data or self.isCorrectProtocol(data.get('protocol')))
def _test(self): def _test(self, **kwargs):
t = self.test() t = self.test()
if isinstance(t, tuple): if isinstance(t, tuple):
return {'success': t[0], 'msg': t[1]} return {'success': t[0], 'msg': t[1]}
@@ -200,7 +200,7 @@ class YarrProvider(Provider):
self._search(media, quality, results) self._search(media, quality, results)
# Search possible titles # Search possible titles
else: else:
media_title = fireEvent('library.query', media['library'], single = True) media_title = fireEvent('library.query', media, single = True)
for title in possibleTitles(media_title): for title in possibleTitles(media_title):
self._searchOnTitle(title, media, quality, results) self._searchOnTitle(title, media, quality, results)
@@ -130,7 +130,7 @@ class Base(NZBProvider, RSS):
hosts = self.getHosts() hosts = self.getHosts()
for host in hosts: for host in hosts:
result = super(Newznab, self).belongsTo(url, host = host['host'], provider = provider) result = super(Base, self).belongsTo(url, host = host['host'], provider = provider)
if result: if result:
return result return result
+1 -3
View File
@@ -14,8 +14,6 @@ import six
log = CPLog(__name__) log = CPLog(__name__)
autoload = 'MovieBase'
class MovieBase(MovieTypeBase): class MovieBase(MovieTypeBase):
@@ -106,7 +104,7 @@ class MovieBase(MovieTypeBase):
'identifier': params.get('identifier'), 'identifier': params.get('identifier'),
'status': status if status else 'active', 'status': status if status else 'active',
'profile_id': params.get('profile_id', default_profile.get('_id')), 'profile_id': params.get('profile_id', default_profile.get('_id')),
'category_id': cat_id if cat_id is not None and len(cat_id) > 0 else None, 'category_id': cat_id if cat_id is not None and len(cat_id) > 0 and cat_id != '-1' else None,
} }
# Update movie info # Update movie info
+29
View File
@@ -0,0 +1,29 @@
from couchpotato.core.event import addEvent
from couchpotato.core.logger import CPLog
from couchpotato.core.media._base.library.base import LibraryBase
log = CPLog(__name__)
autoload = 'MovieLibraryPlugin'
class MovieLibraryPlugin(LibraryBase):
def __init__(self):
addEvent('library.query', self.query)
def query(self, media, first = True, include_year = True, **kwargs):
if media.get('type') != 'movie':
return
titles = media['info'].get('titles', [])
# Add year identifier to titles
if include_year:
titles = [title + (' %s' % str(media['info']['year'])) for title in titles]
if first:
return titles[0] if titles else None
return titles
+21 -5
View File
@@ -17,6 +17,7 @@ from couchpotato.environment import Env
import requests import requests
from requests.packages.urllib3 import Timeout from requests.packages.urllib3 import Timeout
from requests.packages.urllib3.exceptions import MaxRetryError from requests.packages.urllib3.exceptions import MaxRetryError
from scandir import scandir
from tornado import template from tornado import template
from tornado.web import StaticFileHandler from tornado.web import StaticFileHandler
@@ -63,16 +64,11 @@ class Plugin(object):
def databaseSetup(self): def databaseSetup(self):
db = get_db()
for index_name in self._database: for index_name in self._database:
klass = self._database[index_name] klass = self._database[index_name]
fireEvent('database.setup_index', index_name, klass) fireEvent('database.setup_index', index_name, klass)
def afterDatabaseSetup(self):
print self._database_indexes
def conf(self, attr, value = None, default = None, section = None): def conf(self, attr, value = None, default = None, section = None):
class_name = self.getName().lower().split(':')[0].lower() class_name = self.getName().lower().split(':')[0].lower()
return Env.setting(attr, section = section if section else class_name, value = value, default = default) return Env.setting(attr, section = section if section else class_name, value = value, default = default)
@@ -146,6 +142,26 @@ class Plugin(object):
return False return False
def deleteEmptyFolder(self, folder, show_error = True):
folder = sp(folder)
for root, dirs, files in scandir.walk(folder):
for dir_name in dirs:
full_path = os.path.join(root, dir_name)
if len(os.listdir(full_path)) == 0:
try:
os.rmdir(full_path)
except:
if show_error:
log.error('Couldn\'t remove empty directory %s: %s', (full_path, traceback.format_exc()))
try:
os.rmdir(folder)
except:
if show_error:
log.error('Couldn\'t remove empty directory %s: %s', (folder, traceback.format_exc()))
# http request # http request
def urlopen(self, url, timeout = 30, data = None, headers = None, files = None, show_error = True): def urlopen(self, url, timeout = 30, data = None, headers = None, files = None, show_error = True):
url = urllib2.quote(ss(url), safe = "%/:=&?~#+!$,;'@()*[]") url = urllib2.quote(ss(url), safe = "%/:=&?~#+!$,;'@()*[]")
+2 -21
View File
@@ -256,7 +256,7 @@ class Renamer(Plugin):
destination = to_folder destination = to_folder
category_label = '' category_label = ''
if media.get('category_id'): if media.get('category_id') and media.get('category_id') != '-1':
try: try:
category = db.get('id', media['category_id']) category = db.get('id', media['category_id'])
category_label = category['label'] category_label = category['label']
@@ -823,25 +823,6 @@ Remove it if you want it to be renamed (again, or at least let it try again)
return string return string
def deleteEmptyFolder(self, folder, show_error = True):
folder = sp(folder)
loge = log.error if show_error else log.debug
for root, dirs, files in scandir.walk(folder):
for dir_name in dirs:
full_path = os.path.join(root, dir_name)
if len(os.listdir(full_path)) == 0:
try:
os.rmdir(full_path)
except:
loge('Couldn\'t remove empty directory %s: %s', (full_path, traceback.format_exc()))
try:
os.rmdir(folder)
except:
loge('Couldn\'t remove empty directory %s: %s', (folder, traceback.format_exc()))
def checkSnatched(self, fire_scan = True): def checkSnatched(self, fire_scan = True):
if self.checking_snatched: if self.checking_snatched:
@@ -1055,7 +1036,7 @@ Remove it if you want it to be renamed (again, or at least let it try again)
if release_download and release_download.get('id'): if release_download and release_download.get('id'):
try: try:
rls = db.get('release_download', '%s_%s' % (release_download.get('downloader'), release_download.get('id')), with_doc = True)['doc'] rls = db.get('release_download', '%s-%s' % (release_download.get('downloader'), release_download.get('id')), with_doc = True)['doc']
except: except:
log.error('Download ID %s from downloader %s not found in releases', (release_download.get('id'), release_download.get('downloader'))) log.error('Download ID %s from downloader %s not found in releases', (release_download.get('id'), release_download.get('downloader')))