From 13925835507b12291a415a84ffac861086c624f8 Mon Sep 17 00:00:00 2001
From: medariox <dariovizz@hotmail.it>
Date: Tue, 8 Dec 2015 14:40:48 +0100
Subject: [PATCH] Fixes many subtitles related issues

---
 gui/slick/views/displayShow.mako           |  6 ++--
 gui/slick/views/manage_subtitleMissed.mako | 34 +++++++++++++++++-----
 sickbeard/subtitles.py                     |  6 ++--
 3 files changed, 34 insertions(+), 12 deletions(-)

diff --git a/gui/slick/views/displayShow.mako b/gui/slick/views/displayShow.mako
index 8e78f7332..9b7515d7f 100644
--- a/gui/slick/views/displayShow.mako
+++ b/gui/slick/views/displayShow.mako
@@ -519,8 +519,10 @@
                         <a class="epSearch" id="${str(show.indexerid)}x${str(epResult["season"])}x${str(epResult["episode"])}" name="${str(show.indexerid)}x${str(epResult["season"])}x${str(epResult["episode"])}" href="searchEpisode?show=${show.indexerid}&amp;season=${epResult["season"]}&amp;episode=${epResult["episode"]}"><img src="${srRoot}/images/search16.png" width="16" height="16" alt="search" title="Manual Search" /></a>
                     % endif
                 % endif
-                % if sickbeard.USE_SUBTITLES and show.subtitles and epResult["location"] and (len(epResult["subtitles"]) == 0 or subtitles.needs_subtitles(epResult['subtitles'])):
-                    <a class="epSubtitlesSearch" href="searchEpisodeSubtitles?show=${show.indexerid}&amp;season=${epResult["season"]}&amp;episode=${epResult["episode"]}"><img src="${srRoot}/images/closed_captioning.png" height="16" alt="search subtitles" title="Search Subtitles" /></a>
+                % if sickbeard.USE_SUBTITLES and show.subtitles and epResult["location"]:
+                    % if (sickbeard.SUBTITLES_MULTI and subtitles.needs_subtitles(epResult["subtitles"])) or (not sickbeard.SUBTITLES_MULTI and len(subtitles.wanted_languages()) > 0 and "und" not in epResult["subtitles"] and list(subtitles.wanted_languages())[0] not in epResult["subtitles"]):
+                        <a class="epSubtitlesSearch" href="searchEpisodeSubtitles?show=${show.indexerid}&amp;season=${epResult["season"]}&amp;episode=${epResult["episode"]}"><img src="${srRoot}/images/closed_captioning.png" height="16" alt="search subtitles" title="Search Subtitles" /></a>
+                    % endif
                 % endif
             </td>
         </tr>
diff --git a/gui/slick/views/manage_subtitleMissed.mako b/gui/slick/views/manage_subtitleMissed.mako
index 25d844288..cd9d2d241 100644
--- a/gui/slick/views/manage_subtitleMissed.mako
+++ b/gui/slick/views/manage_subtitleMissed.mako
@@ -22,13 +22,25 @@
         % endif
 
         <form action="${srRoot}/manage/subtitleMissed" method="get">
-            Manage episodes without <select name="whichSubs" class="form-control form-control-inline input-sm">
-            <option value="all">All</option>
-            % for sub_code in subtitles.wanted_languages():
-                <option value="${sub_code}">${subtitles.name_from_code(sub_code)}</option>
-            % endfor
+            % if sickbeard.SUBTITLES_MULTI:
+                Manage episodes without <select name="whichSubs" class="form-control form-control-inline input-sm">
+                <option value="all">All</option>
+                % for sub_code in subtitles.wanted_languages():
+                    <option value="${sub_code}">${subtitles.name_from_code(sub_code)}</option>
+                % endfor
+            % else:
+                Manage episodes without <select name="whichSubs" class="form-control form-control-inline input-sm">
+                % if not subtitles.wanted_languages():
+                    <option value="all">All</option>
+                % else:
+                    % for index, sub_code in enumerate(subtitles.wanted_languages()):
+                        % if index == 0:
+                            <option value="und">${subtitles.name_from_code(sub_code)}</option>
+                        % endif
+                    % endfor
+                % endif
             </select>
-
+            % endif
             <input class="btn" type="submit" value="Manage" />
         </form>
 
@@ -36,7 +48,15 @@
         ##Strange that this is used by js but is an input outside of any form?
         <input type="hidden" id="selectSubLang" name="selectSubLang" value="${whichSubs}" />
         <form action="${srRoot}/manage/downloadSubtitleMissed" method="post">
-            <h2>Episodes without ${subsLanguage} subtitles.</h2>
+            % if sickbeard.SUBTITLES_MULTI:
+                <h2>Episodes without ${subsLanguage} subtitles.</h2>
+            % else:
+                % for index, sub_code in enumerate(subtitles.wanted_languages()):
+                    % if index == 0:
+                        <h2>Episodes without ${subtitles.name_from_code(sub_code)} (undefined) subtitles.</h2>
+                    % endif
+                % endfor
+            % endif
             <br>
             Download missed subtitles for selected episodes <input class="btn btn-inline" type="submit" value="Go" />
             <div>
diff --git a/sickbeard/subtitles.py b/sickbeard/subtitles.py
index d568aa6d0..d0ab532c4 100644
--- a/sickbeard/subtitles.py
+++ b/sickbeard/subtitles.py
@@ -123,13 +123,13 @@ def subtitle_code_filter():
 
 
 def needs_subtitles(subtitles):
-    if isinstance(subtitles, basestring):
+    if isinstance(subtitles, basestring) and sickbeard.SUBTITLES_MULTI:
         subtitles = {subtitle.strip() for subtitle in subtitles.split(',')}
 
     if sickbeard.SUBTITLES_MULTI:
         return len(wanted_languages().difference(subtitles)) > 0
-    else:
-        return len(subtitles) == 0
+    elif 'und' not in subtitles:
+        return True
 
 
 # Hack around this for now.
-- 
GitLab