SickGear/gui/slick/interfaces/default/editShow.tmpl

460 lines
23 KiB
Cheetah

#import sickgear
#import lib.adba as adba
#from sickgear import (anime, common, helpers, scene_exceptions)
#from sickgear.helpers import anon_url, generate_word_str
#from lib import exceptions_helper as exceptions
#from sickgear.tv import TVidProdid
<% def sg_var(varname, default=False): return getattr(sickgear, varname, default) %>#slurp#
<% def sg_str(varname, default=''): return getattr(sickgear, varname, default) %>#slurp#
##
#set global $title = 'Edit ' + getattr($show_obj, 'unique_name', $show_obj.name)
#set global $header = $show_obj.name
#set global $sbPath = '..'
#set global $topmenu = 'home'
#set $css = $getVar('css', 'reg')
#set $has_art = $getVar('has_art', None)
#set $restart = 'Restart SickGear for new features on this page'
#set $show_message = ($show_message, $restart)[None is $has_art]
#set global $page_body_attr = 'edit-show" class="' + $css
##
#import os.path
#from _23 import quote_plus
#from six import iteritems
#include $os.path.join($sg_str('PROG_DIR'), 'gui/slick/interfaces/default/inc_top.tmpl')
<script>
var config = {showLang: '$show_obj.lang', showIsAnime: #echo ('!1','!0')[$show_obj.is_anime]#, expandIds: #echo ('!1','!0')[$expand_ids]#}
</script>
<script type="text/javascript" src="$sbRoot/js/qualityChooser.js?v=$sbPID"></script>
<script type="text/javascript" src="$sbRoot/js/editShow.js?v=$sbPID"></script>
<script type="text/javascript" src="$sbRoot/js/livepanel.js?v=$sbPID"></script>
<script src="$sbRoot/js/lib/select2.full.min.js"></script>
<link href="$sbRoot/css/lib/select2.css" rel="stylesheet">
<style>
.select2-container{height:32px; font-size:12px; margin-right:6px}
.select2-container .select2-selection--single{height:30px}
.select2-results__group{color: #eee; background-color: rgb(51,51,51)}
.select2-results__options .select2-results__option{color: #222; background-color: #ddd}
.select2-results__options .select2-results__option .ended{color: #888}
.select2-container--default .select2-results > .select2-results__options{max-height: 300px}
#select2-infosrc-lang-select-results .select2-results__option,
#select2-infosrc-lang-select-results .select2-results__group{padding-top: 2px !important; padding-bottom:2px !important}
#select2-infosrc-lang-select-results .select2-results__option--highlighted.select2-results__option--selectable .ended{color:white}
#select2-infosrc-lang-select-results .select2-results__option--selected,
#select2-infosrc-lang-select-results .select2-results__option--selected span{color:rgb(143, 21, 21) !important}
#select2-infosrc-lang-select-results span.flag{width:100%; height:100%; display:block}
</style>
#if $varExists('header')
<h1 class="header"><span class="grey-text">Edit&nbsp;</span>$header</h1>
#else
<h1 class="title">$title</h1>
#end if
##
#set $html_checked = ' checked="checked"'
#set $html_disabled = ' disabled="disabled"'
<div id="background-container">
#if $has_art
<ul>
#for $k, ($image, $rating) in enumerate($fanart)
<li class="#echo ' '.join((x for x in ({10:'group', 20:'fave', 30:'avoid'}.get($rating, ''), ('', 'background first-load')[$start_image == $k]) if x)) #" style="background-image:url($sbRoot/show-poster/?tvid_prodid=$show_obj.tvid_prodid&which=fanart_$image)"></li>
#end for
</ul>
#end if
</div>
#if $show_message
<div class="alert alert-info">
$show_message
</div>
#end if
<div id="config">
<div id="config-content" class="linefix container">
<form action="edit-show" method="post" id="edit_show" style="width:894px">
<input type="hidden" name="tvid" id="tvid" value="$show_obj.tvid">
<input type="hidden" name="prodid" id="prodid" value="$show_obj.prodid">
<input type="hidden" name="tvid_prodid" id="tvid_prodid" value="$show_obj.tvid_prodid">
$xsrf_form_html
<div id="config-components">
<ul>
<li><a href="#core-component-group1">Common</a></li>
<li><a href="#core-component-group2">Search</a></li>
<li><a href="#core-component-group3">Other</a></li>
</ul>
<div id="core-component-group1" class="component-group">
<div class="field-pair">
<label for="paused">
<span class="component-title">Pause searching releases</span>
<span class="component-desc">
<input type="checkbox" name="paused" id="paused"#echo ('', $html_checked)[$show_obj.paused]#>
<p>for <b class="boldest grey-text">$show_obj.name</b></p>
</span>
</label>
</div>
<div class="field-pair#if $sg_str('SHOWLIST_TAGVIEW') != 'custom'# hidden#end if#">
<label for="tag">
<span class="component-title">Group show under</span>
<span class="component-desc">
<select name="tag" id="tag" class="form-control form-control-inline input-sm">
#for $tag in $sg_var('SHOW_TAGS', []):
<option value="$tag" #if $tag == $show_obj.tag then 'selected="selected"' else ''#>$tag#echo ('', ' (default)')['Show List' == $tag]#</option>
#end for
</select>
<span>on the "Show List" page</span>
</span>
</label>
</div>
<div class="field-pair">
<span class="label-container">
<span class="component-title">Alternative release name(s)</span>
<span class="component-desc">
<input type="text" id="SceneName" class="form-control form-control-inline input-sm input200" placeholder="Enter one title here, then 'Add'">
<select id="SceneNameSeason" class="form-control form-control-inline input-sm input100" style="float:left">
<option value="-1">Series</option>
#for $season in $seasonResults:
<option value="$season[0]">Season $season[0]</option>
#end for
</select>
<input class="btn btn-inline" type="button" value="Add" id="addSceneName">
<p style="float:left"><span class="add-tip">Enter one.. </span>e.g. Show, Show (2016), or The Show (US)</p>
<p class="clear-left note">searching and post-processing require the alternatives if "Show not found" errors are in the logs</p>
</span>
<span id="SceneException" class="component-desc" style="display:none">
<h5 class="grey-text" style="margin-bottom:5px">Alternative a.k.a scene exceptions list (multi-selectable)</h5>
<select id="exceptions_list" name="exceptions_list" multiple="multiple" class="input350" style="min-height:90px; float:left" >
#for $cur_exception_season in $show_obj.exceptions:
#for $cur_exception in $show_obj.exceptions[$cur_exception_season]:
<option value="$cur_exception_season|$cur_exception">S#echo ('%02d' % $cur_exception_season, '*')[$cur_exception_season == -1]#: $cur_exception</option>
#end for
#end for
</select>
<span><p class="note">S* = Any series. The original name is used along with this case insensitive list, except where season is specified</p></span>
<div style="margin-top:6px">
<input id="removeSceneName" value="Remove" class="btn pull-left" type="button">
</div>
</span>
<span class="component-desc" style="clear:both;padding-top:10px">
<input id="export-alts" value="Export" class="btn btn-inline" type="button"><p style="float:left">alternative names and/or numbers</p>
</span>
</span>
</div>
<div class="field-pair">
<label for="rls_ignore_words">
<span class="component-title">Ignore result with any word</span>
<span class="component-desc">
<input type="text" name="rls_ignore_words" id="rls_ignore_words" value="$generate_word_str($show_obj.rls_ignore_words - $sickgear.IGNORE_WORDS, $show_obj.rls_ignore_words_regex)" class="form-control form-control-inline input-sm input350">
<p>e.g. [[regex:]word1, word2, ..., word_n, regex_n]</p>
<p class="note">ignore search result <em class="grey-text">if its title contains any</em> of these comma separated words or regular expressions</p>
</span>
</label>
</div>
#if $sickgear.IGNORE_WORDS:
<div class="field-pair">
<label for="rls_global_exclude_ignore">
<span class="component-title">Exclude global ignore word (multi select list)</span>
<span class="component-desc">
<select id="rls_global_exclude_ignore" name="rls_global_exclude_ignore" multiple="multiple" class="form-control form-control-inline input-sm input350">
#set $options = ''
#set $selected = ' selected=\"selected\"'
#set $num_selected = 0
#for $gw in sorted($sickgear.IGNORE_WORDS, key=$str.lower):
#set $sel_html = ''
#if $gw in $show_obj.rls_global_exclude_ignore
#set $sel_html = $selected
#set $num_selected += 1
#end if
#set $options += "<option value=\"%s\"%s>%s</option>" % ($gw, $sel_html, $gw)
#end for
<option value=".*"#if $num_selected then '' else $selected#># Use all ignore word(s) (default) #</option>
$options
</select>
</span>
</label>
</div>
#end if
<div class="field-pair">
<label for="rls_require_words">
<span class="component-title">Require at least one word</span>
<span class="component-desc">
<input type="text" name="rls_require_words" id="rls_require_words" value="$generate_word_str($show_obj.rls_require_words - $sickgear.REQUIRE_WORDS, $show_obj.rls_require_words_regex)" class="form-control form-control-inline input-sm input350">
<p>e.g. [[regex:]word1, word2, ..., word_n, regex_n]</p>
<p class="note">ignore search result <em class="grey-text">unless its title contains one</em> of these comma separated words or regular expressions</p>
</span>
</label>
</div>
#if $sickgear.REQUIRE_WORDS:
<div class="field-pair">
<label for="rls_global_exclude_require">
<span class="component-title">Exclude global require word (multi select list)</span>
<span class="component-desc">
<select id="rls_global_exclude_require" name="rls_global_exclude_require" multiple="multiple" class="form-control form-control-inline input-sm input350">
#set $options = ''
#set $selected = ' selected=\"selected\"'
#set $num_selected = 0
#for $gw in sorted($sickgear.REQUIRE_WORDS, key=$str.lower):
#set $sel_html = ''
#if $gw in $show_obj.rls_global_exclude_require
#set $sel_html = $selected
#set $num_selected += 1
#end if
#set $options += "<option value=\"%s\"%s>%s</option>" % ($gw, $sel_html, $gw)
#end for
<option value=".*"#if $num_selected then '' else $selected#># Use all require word(s) (default) #</option>
$options
</select>
</span>
</label>
</div>
#end if
<div class="field-pair">
#set $qualities = $common.Quality.split_quality(int($show_obj.quality))
#set global $any_qualities = $qualities[0]
#set global $best_qualities = $qualities[1]
#include $os.path.join($sg_str('PROG_DIR'), 'gui/slick/interfaces/default/inc_qualityChooser.tmpl')
</div>
</div><!-- /component-group1 //-->
<div id="core-component-group2" class="component-group">
<div class="field-pair">
<label for="air_by_date">
<span class="component-title">Air by date release names</span>
<span class="component-desc">
<input type="checkbox" name="air_by_date" id="air_by_date"#echo ('', $html_checked)[$show_obj.air_by_date]#>
<p>#echo ('enable if releases contain dates', 'disable for episodic releases')[$show_obj.air_by_date]#, example: <em class="grey-text">Show.#echo ('03.02.2010', 'S02E03')[$show_obj.air_by_date]#</em></p>
</span>
</label>
</div>
<div class="field-pair">
<label for="scene">
<span class="component-title">Editable episode numbers</span>
<span class="component-desc">
<input type="checkbox" name="scene" id="scene"#echo ('', $html_checked)[$show_obj.scene]#>
<p>enable editable #if $show_has_scene_map then '(<em class="grey-text">and alternative scene release</em>) ' else ''# episode numbers for search and media processing</p>
</span>
</label>
</div>
<div class="field-pair">
<label for="dvdorder">
<span class="component-title">Use DVD titles and numbers</span>
<span class="component-desc">
<input type="checkbox" name="dvdorder" id="dvdorder"#echo ('', $html_checked)[$show_obj.dvdorder]#>
<p>#echo ('enable use of DVD title and episode ordering', 'disable use of TV network title, number and aired order')[$show_obj.dvdorder]#.&nbsp;
After changing this setting, a "force full update" is essential, and existing episodes should be manually renamed or replaced with #echo ('DVD', 'network')[$show_obj.dvdorder]# numbered releases</p>
</span>
</label>
</div>
<div class="field-pair">
<label for="infosrc-lang-select">
<span class="component-title">Info language</span>
<span class="component-desc">
<select name="tvinfo_lang" id="infosrc-lang-select" class="form-control form-control-inline input-sm"></select>
<span>fetch show information in this language</span>
</span>
</label>
</div>
<div class="field-pair">
<label for="sports">
<span class="component-title">Show is sports</span>
<span class="component-desc">
<input type="checkbox" name="sports" id="sports"#echo ('', $html_checked)[$show_obj.sports]#>
<p>treat this show as a sporting or MMA event</p>
</span>
</label>
</div>
<div class="field-pair">
<label for="anime">
<span class="component-title">Show is anime</span>
<span class="component-desc">
<input type="checkbox" name="anime" id="anime"#echo ('', $html_checked)[$show_obj.is_anime]#>
<p>releases for this show are named like ... <em class="grey-text">Show.265</em> instead of <em class="grey-text">Show.S02E03</em></p>
#if not $show_obj.is_anime#<span id="anime-options" style="display:none">Update Show then edit again to view additional options here</span>#end if#
</span>
</label>
</div>
#if $show_obj.is_anime
#import sickgear.anime
#include $os.path.join($sg_str('PROG_DIR'), 'gui/slick/interfaces/default/inc_anigrouplists.tmpl')
<script type="text/javascript" src="$sbRoot/js/anigrouplists.js?v=$sbPID"></script>
#end if
</div><!-- /component-group2 //-->
<div id="core-component-group3" class="component-group">
<div class="field-pair">
<label for="prune">
<span class="component-title">Keep up to</span>
<span class="component-desc">
<input type="text" name="prune" id="prune" value="#echo $show_obj.prune and $show_obj.prune or ''#" class="form-control form-control-inline input-sm input75" style="width:50px">
<p>most recent downloads (blank for all)</p>
</span>
</label>
</div>
<div class="field-pair">
<label for="location">
<span class="component-title">Location for files</span>
<span class="component-desc">
<input type="text" name="location" id="location" value="$show_obj._location" class="form-control form-control-inline input-sm input350">
</span>
</label>
</div>
<div class="field-pair">
<label for="flatten_folders">
<span class="component-title">Flat folder hierarchy</span>
<span class="component-desc">
<input type="checkbox" name="flatten_folders" id="flatten_folders"#echo ('', $html_checked)[$show_obj.flatten_folders and not $sg_var('NAMING_FORCE_FOLDERS')]##echo ('', $html_disabled)[$sg_var('NAMING_FORCE_FOLDERS')]#>
<p>prevent creating season folders to group files</p>
</span>
</label>
</div>
<div class="field-pair">
<label for="subtitles">
<span class="component-title">Subtitles</span>
<span class="component-desc">
<input type="checkbox" name="subs" id="subtitles"#echo ('', $html_checked)[$show_obj.subtitles and $sg_var('USE_SUBTITLES')]##echo ($html_disabled, '')[$sg_var('USE_SUBTITLES')]#>
<p#if not $sg_var('USE_SUBTITLES')# class="grey-text"><del#end if#>download episode subtitles for this show#if not $sg_var('USE_SUBTITLES')#</del> ... (<span class="red-text">note: first <a href="$sbRoot/config/subtitles/">enable the subtitle system here</a></span>)#end if#</p>
</span>
</label>
</div>
<div class="field-pair">
<label for="reset_fanart">
<span class="component-title">Reset fanart ratings</span>
<span class="component-desc">
#if $num_ratings
<input type="checkbox" name="reset_fanart" id="reset_fanart">
<p>delete <span class="grey-text">$num_ratings</span> fanart rating$helpers.maybe_plural($num_ratings) for "<span class="grey-text">$show_obj.name</span>"</p>
#else
<p>no fanart ratings to delete for "<span class="grey-text">$show_obj.name</span>"</p>
#end if
<p>
<span class="grey-text">fanart usage:&nbsp;</span>maximum $sg_var('FANART_LIMIT', 3) fanart images downloaded per show, <a href="$sbRoot/config/general/#core-component-group2">change limit</a><br />
<span class="grey-text">fanart keys:&nbsp;</span>hold down Ctrl+Alt (mac: Command+Option) and then press any of... left or right to change image, and<br />
's' to change and save ratings where 'a'/down = avoid, 'f' = fave, 'g'/up = group (repeat keypress to toggle rating)
with the livepanel not in 's'ave mode; up = change view mode, down = toggle translucency
</span>
</label>
</div>
<div class="field-pair">
<label for="idmapping">
<span class="component-title">Related show IDs</span>
<span class="component-desc">
<label for="idmapping">
<input id="idmapping" type="checkbox">
<span>TV info source IDs (advanced use only)</span>
</label>
</span>
</label>
</div>
#set $dev = True
#set $dev = None
<div id="idmapping-options" style="display:#if $dev#--#end if#none">
#set $is_main_settable = False | $unlock_main_id
#for $tvid, $src_name in iteritems($sickgear.TVInfoAPI().all_sources)
#set $is_main_settable |= ($dev or
($tvid != $show_obj.tvid and $show_obj.ids[$tvid].get('id', 0) > 0 and
$tvid in $sickgear.TVInfoAPI().sources and not $sickgear.TVInfoAPI($tvid).config.get('defunct') and
$sickgear.TVInfoAPI($tvid).config.get('active')))
#if $is_main_settable
#break
#end if
#end for
#set $search_name = quote_plus($sickgear.indexermapper.clean_show_name($show_obj.name))
#for $tvid, $src_name in iteritems($sickgear.TVInfoAPI().all_sources)
#set $ok_tvid = $show_obj.ids[$tvid].get('id', 0) > 0
#set $maybe_main = ($tvid != $show_obj.tvid and
$tvid in $sickgear.TVInfoAPI().sources and not $sickgear.TVInfoAPI($tvid).config.get('defunct') and
$sickgear.TVInfoAPI($tvid).config.get('active'))
#set $settable_main = ($dev or ($ok_tvid and $maybe_main))
<div class="field-pair" style="padding:0">
<span class="component-title">
#if $tvid in $show_obj.ids
#set $src_search_url = sickgear.TVInfoAPI($tvid).config.get('finder')
#set $use_search_url = $src_search_url
#set $data_link = 'data-'
#if $ok_tvid and $sickgear.indexermapper.MapStatus.NOT_FOUND != $show_obj.ids[$tvid]['status']
#set $data_link = ''
#set $use_search_url = False
#end if
<a id="src-mid-$tvid" class="service" style="margin-right:6px" data-search="#if $use_search_url#y#else#n#end if#" #if $src_search_url#data-search-href="$anon_url($src_search_url % $search_name)" data-search-onclick="window.open(this.href, '_blank'); return !1;" data-search-title="Search for show at $src_name" #end if##if $use_search_url#href="$anon_url($src_search_url % $search_name)" onclick="window.open(this.href, '_blank'); return !1;" title="Search for show at $src_name" #end if#$(data_link)href="$anon_url(sickgear.TVInfoAPI($tvid).config['show_url'] % ($show_obj.ids[$tvid]['id'], $srcid)[$expand_ids and ($tvid == $tvsrc)])" $(data_link)onclick="window.open(this.href, '_blank'); return !1;" $(data_link)title="View $src_name info in new tab"><img alt="$src_name" height="16" width="16" src="$sbRoot/images/$sickgear.TVInfoAPI($tvid).config['icon']" /></a>
#end if
$src_name
</span>
<span class="component-desc">
#set $current_showid = $show_obj.ids.get($tvid, {'id': 0}).get('id')
<input type="text" data-maybe-main="#echo ('0', '1')[bool($maybe_main)]#" name="mid-$tvid" id="#echo ('mid-%s' % $tvid, 'source-id')[$tvid == $show_obj.tvid]#" value="#echo ($current_showid, $srcid)[$expand_ids and ($tvid == $tvsrc)]#" class="form-control form-control-inline input-sm#if $tvid == $show_obj.tvid and $unlock_main_id# warning" title="Abandoned main ID#end if#" #echo ('', $html_disabled)[$tvid == $show_obj.tvid and not $unlock_main_id]#>
#if $tvid == $show_obj.tvid
<label for="the-main">
#if $is_main_settable
<input type="radio" name="set-main" id="the-main" checked data-tvid="$tvid" data-prodid="$show_obj.ids[$tvid].get('id', 0)">
#end if
<p#if $is_main_settable# style="padding-left:19px"#end if#>#if $unlock_main_id#main id may have changed, <a href="$sbRoot/add-shows/find/?show_to_add=$show_obj.tvid|||$showname_enc&use_show_name=True&action=Find&return_to=$sbRoot%2Fhome%2Fedit-show%3Ftvid_prodid%3D${TVidProdid({$tvid: $current_showid})}%26tvsrc%3D%25s%26srcid%3D%25s%23core-component-group3">search replacement here</a>#else#locked main, can't be edited#end if#</p>
</label>
#else
<label for="lockid-$tvid">
<input type="checkbox" name="lockid-$tvid" id="lockid-$tvid"#echo ('', $html_checked)[$show_obj.ids.get($tvid, {'status': $sickgear.indexermapper.MapStatus.NONE}).get('status') == $sickgear.indexermapper.MapStatus.NO_AUTOMATIC_CHANGE]#>
<p style="padding-left:19px;margin-right:24px">lock this ID</p>
</label>
#if $settable_main
<label for="set-main-$tvid">
<input type="radio" name="set-main" id="set-main-$tvid" data-tvid="$tvid" data-prodid="$show_obj.ids[$tvid].get('id', 0)">set main
</label>
#end if
#end if
</span>
</div>
#end for
<div class="field-pair" style="padding-top:0">
<span id="panel-save-get" class="component-desc show">
<p>invalid values can break finding episode and TV info</p>
<input type="button" value="Save Changes" id="save-mapping" class="btn btn-inline">
<p style="float:left;margin-right:6px">or</p>
<input type="button" value="Get Defaults" id="reset-mapping" class="btn btn-inline">
<p>for unlocked IDs</p>
</span>
<span id="save-wait" class="component-desc hide">
<span><img src="$sbRoot/images/loading16#echo ('', '-dark')['dark' == $sg_str('THEME_NAME', 'dark')]#.gif" style="margin-right:6px">Saving...</span>
</span>
</div>
</div>
</div><!-- /component-group3 //-->
</div>
<div style="margin-top:15px">
<input type="submit" id="submit" value="Update Show" class="btn btn-primary" />
<a href="$sbRoot/home/view-show?tvid_prodid=$show_obj.tvid_prodid" class="btn btn-primary" style="margin-left:10px">Cancel Edit</a>
</div>
</form>
</div>
</div>
#include $os.path.join($sg_str('PROG_DIR'), 'gui/slick/interfaces/default/inc_bottom.tmpl')