# -*- coding: utf-8 -*- from __future__ import division, absolute_import, print_function, unicode_literals ################################################################################################# from kodi_six import xbmcgui from helper import LazyLogger from .utils import should_stop from .exceptions import LibraryException from .translate import translate ################################################################################################# LOG = LazyLogger(__name__) ################################################################################################# def progress(message=None): ''' Will start and close the progress dialog. ''' def decorator(func): def wrapper(self, item=None, *args, **kwargs): dialog = xbmcgui.DialogProgressBG() if item and type(item) == dict: dialog.create(translate('addon_name'), "%s %s" % (translate('gathering'), item['Name'])) LOG.info("Processing %s: %s", item['Name'], item['Id']) else: dialog.create(translate('addon_name'), message) LOG.info("Processing %s", message) if item: args = (item,) + args result = func(self, dialog=dialog, *args, **kwargs) dialog.close() return result return wrapper return decorator def stop(func): ''' Wrapper to catch exceptions and return using catch ''' def wrapper(*args, **kwargs): try: if should_stop(): # ??? TODO: Fixme raise Exception except Exception as error: LOG.exception(error) raise LibraryException("StopCalled") return func(*args, **kwargs) return wrapper def jellyfin_item(func): ''' Wrapper to retrieve the jellyfin_db 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) return wrapper