From 8d003cceedca44e42f5ee061851a208b639681c1 Mon Sep 17 00:00:00 2001 From: JackDandy Date: Thu, 8 Nov 2018 21:12:01 +0000 Subject: [PATCH] Fix add filter to data used for alternative scene episode numbers. Change don't enable "Scene numbering" for shows without alternative scene episode numbers. Change label/summary of editShow/Search/"Scene numbering" to "Editable episode numbers" to improve clarity for its use. Change improve summary of addShow/Finally/"Scene numbering". Change improve displayShow tooltips for editable episode number fields. --- CHANGES.md | 11 ++++++++++- gui/slick/interfaces/default/editShow.tmpl | 6 +++--- gui/slick/interfaces/default/inc_addShowOptions.tmpl | 4 ++-- gui/slick/interfaces/default/inc_displayShow.tmpl | 4 ++-- gui/slick/js/newShow.js | 2 +- sickbeard/scene_numbering.py | 16 +++++++++++++++- sickbeard/show_queue.py | 19 ++++++++++++++++--- sickbeard/webserve.py | 3 ++- 8 files changed, 51 insertions(+), 14 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 101d9f9..ca3b2d2 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,4 +1,13 @@ -### 0.17.12 (2018-10-23 19:50:00 UTC) +### 0.17.13 (2018-11-08 21:12:00 UTC) + +* Fix add filter to data used for alternative scene episode numbers +* Change don't enable "Scene numbering" for shows without alternative scene episode numbers +* Change label/summary of editShow/Search/"Scene numbering" to "Editable episode numbers" to improve clarity for its use +* Change improve summary of addShow/Finally/"Scene numbering" +* Change improve displayShow tooltips for editable episode number fields + + +### 0.17.12 (2018-10-23 19:50:00 UTC) * Change add text search as default for old newznab without supportedParams caps parameter diff --git a/gui/slick/interfaces/default/editShow.tmpl b/gui/slick/interfaces/default/editShow.tmpl index 83b1b91..57a301b 100644 --- a/gui/slick/interfaces/default/editShow.tmpl +++ b/gui/slick/interfaces/default/editShow.tmpl @@ -168,10 +168,10 @@
@@ -181,7 +181,7 @@ Use DVD titles and numbers -

#echo ('enable to use DVD title and episode ordering', 'disable to use TV network title, number and aired order')[$show.dvdorder]#.  +

#echo ('enable use of DVD title and episode ordering', 'disable use of TV network title, number and aired order')[$show.dvdorder]#.  After changing this setting, a "force full update" is essential, and existing episodes should be manually renamed or replaced with #echo ('DVD', 'network')[$show.dvdorder]# numbered releases

diff --git a/gui/slick/interfaces/default/inc_addShowOptions.tmpl b/gui/slick/interfaces/default/inc_addShowOptions.tmpl index aeedc67..b4f9d4a 100644 --- a/gui/slick/interfaces/default/inc_addShowOptions.tmpl +++ b/gui/slick/interfaces/default/inc_addShowOptions.tmpl @@ -95,12 +95,12 @@ -
+ diff --git a/gui/slick/interfaces/default/inc_displayShow.tmpl b/gui/slick/interfaces/default/inc_displayShow.tmpl index 80e383d..ef46eda 100644 --- a/gui/slick/interfaces/default/inc_displayShow.tmpl +++ b/gui/slick/interfaces/default/inc_displayShow.tmpl @@ -56,7 +56,7 @@ diff --git a/gui/slick/js/newShow.js b/gui/slick/js/newShow.js index 437e5f9..9b9c334 100644 --- a/gui/slick/js/newShow.js +++ b/gui/slick/js/newShow.js @@ -305,7 +305,7 @@ $(document).ready(function () { if (elRadio.length) { show_name = elRadio.val().split('|')[idxWhichTitle]; elScene[0].checked = 0 <= show_scene_maps.indexOf(parseInt(elRadio.val().split('|')[idxWhichShowID], 10)); - $('#scene-maps-found').css('display', elScene.is(':checked') ? 'inline' : 'None'); + $('#scene-maps-found').css('display', elScene.is(':checked') ? 'block' : 'None'); } // if we provided a show in the hidden field, use that else if (elInput.length && elInput.val().length) { diff --git a/sickbeard/scene_numbering.py b/sickbeard/scene_numbering.py index 448a9d6..b112a3f 100644 --- a/sickbeard/scene_numbering.py +++ b/sickbeard/scene_numbering.py @@ -410,6 +410,20 @@ def get_scene_numbering_for_show(indexer_id, indexer): return _get_numbering_for_show('scene_numbering', indexer, indexer_id) +def has_xem_scene_mapping(indexer_id, indexer): + """ + Test if a scene mapping exists for a show at XEM + + :param indexer_id: + :type indexer_id: int + :param indexer: + :type indexer: int + :return: True if scene mapping exists, False if not + :rtype: Bool + """ + return bool(get_xem_numbering_for_show(indexer_id, indexer)) + + def get_xem_numbering_for_show(indexer_id, indexer): """ Returns a dict of (season, episode) : (scene_season, scene_episode) mappings @@ -562,7 +576,7 @@ def xem_refresh(indexer_id, indexer, force=False): if 'success' in parsed_json['result']: cl = [] - for entry in parsed_json['data']: + for entry in filter(lambda x: 'scene' in x, parsed_json['data']): # use scene2 for doubles scene = 'scene%s' % ('', '_2')['scene_2' in entry] cl.append([ diff --git a/sickbeard/show_queue.py b/sickbeard/show_queue.py index c284f6a..90ed45d 100644 --- a/sickbeard/show_queue.py +++ b/sickbeard/show_queue.py @@ -482,9 +482,22 @@ class QueueItemAdd(ShowQueueItem): # Load XEM data to DB for show sickbeard.scene_numbering.xem_refresh(self.show.indexerid, self.show.indexer, force=True) - # check if show has XEM mapping and if user disabled scene numbering during add show, output availability to log - if not self.scene and self.show.indexerid in sickbeard.scene_exceptions.xem_ids_list[self.show.indexer]: - logger.log('Alternative scene episode numbers were disabled during add show. Edit show to enable them for searching.') + if self.show.scene: + # enable/disable scene flag based on if show has an explicit _scene_ mapping at XEM + self.show.scene = sickbeard.scene_numbering.has_xem_scene_mapping( + self.show.indexerid, self.show.indexer) + # if "scene" numbering is disabled during add show, output availability to log + if None is not self.scene and not self.show.scene and \ + self.show.indexerid in sickbeard.scene_exceptions.xem_ids_list[self.show.indexer]: + logger.log('No scene number mappings found at TheXEM. Therefore, episode scene numbering disabled, ' + 'edit show and enable it to manually add custom numbers for search and media processing.') + try: + self.show.saveToDB() + except Exception as e: + logger.log('Error saving the show to the database: %s' % ex(e), logger.ERROR) + logger.log(traceback.format_exc(), logger.ERROR) + self._finishEarly() + raise # update internal name cache name_cache.buildNameCache(self.show) diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py index 901095d..429e441 100644 --- a/sickbeard/webserve.py +++ b/sickbeard/webserve.py @@ -2227,7 +2227,8 @@ class Home(MainHandler): with showObj.lock: t.show = showObj - t.show_has_scene_map = showObj.indexerid in sickbeard.scene_exceptions.xem_ids_list[showObj.indexer] + t.show_has_scene_map = sickbeard.scene_numbering.has_xem_scene_mapping( + showObj.indexerid, showObj.indexer) # noinspection PyTypeChecker self.fanart_tmpl(t)