mirror of
https://github.com/jellyfin/jellyfin-kodi.git
synced 2025-05-25 01:11:39 +00:00
Refractor some decorators
This commit is contained in:
parent
803081f65a
commit
3ec71e89d6
7 changed files with 101 additions and 106 deletions
|
@ -38,6 +38,7 @@ def progress(message=None):
|
|||
if item:
|
||||
args = (item,) + args
|
||||
|
||||
LOG.debug({'self': self, 'dialog': dialog, 'args': args, 'kwargs': kwargs})
|
||||
result = func(self, dialog=dialog, *args, **kwargs)
|
||||
dialog.close()
|
||||
|
||||
|
@ -81,99 +82,93 @@ def silent_catch(errors=(Exception,)):
|
|||
return decorator
|
||||
|
||||
|
||||
def stop(default=None):
|
||||
def stop(func):
|
||||
|
||||
''' Wrapper to catch exceptions and return using catch
|
||||
'''
|
||||
def decorator(func):
|
||||
def wrapper(*args, **kwargs):
|
||||
def wrapper(*args, **kwargs):
|
||||
|
||||
try:
|
||||
if should_stop(): # ??? TODO: Fixme
|
||||
raise Exception
|
||||
try:
|
||||
if should_stop(): # ??? TODO: Fixme
|
||||
raise Exception
|
||||
|
||||
except Exception as error:
|
||||
LOG.exception(error)
|
||||
except Exception as error:
|
||||
LOG.exception(error)
|
||||
|
||||
if default is not None:
|
||||
return default
|
||||
raise LibraryException("StopCalled")
|
||||
|
||||
raise LibraryException("StopCalled")
|
||||
LOG.debug({'args': args, 'kwargs': kwargs})
|
||||
return func(*args, **kwargs)
|
||||
|
||||
return func(*args, **kwargs)
|
||||
|
||||
return wrapper
|
||||
return decorator
|
||||
return wrapper
|
||||
|
||||
|
||||
def jellyfin_item():
|
||||
def jellyfin_item(func):
|
||||
|
||||
''' Wrapper to retrieve the jellyfin_db item.
|
||||
'''
|
||||
def decorator(func):
|
||||
def wrapper(self, item, *args, **kwargs):
|
||||
e_item = self.jellyfin_db.get_item_by_id(item['Id'] if type(item) == dict else item)
|
||||
def wrapper(self, item, *args, **kwargs):
|
||||
e_item = self.jellyfin_db.get_item_by_id(item['Id'] if type(item) == dict else item)
|
||||
|
||||
return func(self, item, e_item=e_item, *args, **kwargs)
|
||||
LOG.debug({'self': self, 'item': item, 'e_item': e_item, 'args': args, 'kwargs': kwargs})
|
||||
return func(self, item, e_item=e_item, *args, **kwargs)
|
||||
|
||||
return wrapper
|
||||
return decorator
|
||||
return wrapper
|
||||
|
||||
|
||||
def library_check():
|
||||
def library_check(func):
|
||||
|
||||
''' Wrapper to retrieve the library
|
||||
'''
|
||||
def decorator(func):
|
||||
def wrapper(self, item, *args, **kwargs):
|
||||
def wrapper(self, item, *args, **kwargs):
|
||||
|
||||
''' TODO: Rethink this one... songs and albums cannot be found by library. expensive.
|
||||
'''
|
||||
from database import get_sync
|
||||
''' TODO: Rethink this one... songs and albums cannot be found by library. expensive.
|
||||
'''
|
||||
from database import get_sync
|
||||
|
||||
if kwargs.get('library') is None:
|
||||
sync = get_sync()
|
||||
if kwargs.get('library') is None:
|
||||
sync = get_sync()
|
||||
|
||||
if 'e_item' in kwargs:
|
||||
try:
|
||||
view_id = kwargs['e_item'][6]
|
||||
view_name = self.jellyfin_db.get_view_name(view_id)
|
||||
view = {'Name': view_name, 'Id': view_id}
|
||||
except Exception:
|
||||
view = None
|
||||
if 'e_item' in kwargs:
|
||||
try:
|
||||
view_id = kwargs['e_item'][6]
|
||||
view_name = self.jellyfin_db.get_view_name(view_id)
|
||||
view = {'Name': view_name, 'Id': view_id}
|
||||
except Exception:
|
||||
view = None
|
||||
|
||||
if view is None:
|
||||
ancestors = self.server.jellyfin.get_ancestors(item['Id'])
|
||||
if view is None:
|
||||
ancestors = self.server.jellyfin.get_ancestors(item['Id'])
|
||||
|
||||
if not ancestors:
|
||||
if item['Type'] == 'MusicArtist':
|
||||
if not ancestors:
|
||||
if item['Type'] == 'MusicArtist':
|
||||
|
||||
try:
|
||||
views = self.jellyfin_db.get_views_by_media('music')[0]
|
||||
except Exception as error:
|
||||
LOG.exception(error)
|
||||
return
|
||||
|
||||
view = {'Id': views[0], 'Name': views[1]}
|
||||
else: # Grab the first music library
|
||||
try:
|
||||
views = self.jellyfin_db.get_views_by_media('music')[0]
|
||||
except Exception as error:
|
||||
LOG.exception(error)
|
||||
return
|
||||
else:
|
||||
for ancestor in ancestors:
|
||||
if ancestor['Type'] == 'CollectionFolder':
|
||||
|
||||
view = self.jellyfin_db.get_view_name(ancestor['Id'])
|
||||
view = {'Id': None, 'Name': None} if view is None else {'Name': ancestor['Name'], 'Id': ancestor['Id']}
|
||||
|
||||
break
|
||||
|
||||
if view['Id'] not in [x.replace('Mixed:', "") for x in sync['Whitelist'] + sync['Libraries']]:
|
||||
LOG.info("Library %s is not synced. Skip update.", view['Id'])
|
||||
|
||||
view = {'Id': views[0], 'Name': views[1]}
|
||||
else: # Grab the first music library
|
||||
return
|
||||
else:
|
||||
for ancestor in ancestors:
|
||||
if ancestor['Type'] == 'CollectionFolder':
|
||||
|
||||
kwargs['library'] = view
|
||||
view = self.jellyfin_db.get_view_name(ancestor['Id'])
|
||||
view = {'Id': None, 'Name': None} if view is None else {'Name': ancestor['Name'], 'Id': ancestor['Id']}
|
||||
|
||||
return func(self, item, *args, **kwargs)
|
||||
break
|
||||
|
||||
return wrapper
|
||||
return decorator
|
||||
if view['Id'] not in [x.replace('Mixed:', "") for x in sync['Whitelist'] + sync['Libraries']]:
|
||||
LOG.info("Library %s is not synced. Skip update.", view['Id'])
|
||||
|
||||
return
|
||||
|
||||
kwargs['library'] = view
|
||||
|
||||
LOG.debug({'self': self, 'item': item, 'args': args, 'kwargs': kwargs})
|
||||
return func(self, item, *args, **kwargs)
|
||||
|
||||
return wrapper
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue