mirror of
https://github.com/SickGear/SickGear.git
synced 2025-01-05 17:43:37 +00:00
Add "Status of removed episodes" to apply (or not) a preferred status to episodes whose files are detected as removed.
"Archived" can now be set so that removed episodes still count toward download completion statistics. See setting on page config/Post Processing/File Handling. Remove redundant "Skip remove detection" from the config/Post Processing/File Handling page Change combos on this page to be all consistent. Improve vertical alignment of the label text before drop down combos. Change to highlight the current selected item in combos. Fix some inconsistent CSS line spacing.
This commit is contained in:
parent
f491ae8492
commit
09f5e0622d
8 changed files with 86 additions and 35 deletions
|
@ -51,6 +51,11 @@
|
|||
* Add automatic compression of old log files
|
||||
* Remove whitespace and semi-colon redundancy from CSS shedding 4.5kb
|
||||
* Change overhaul menu and button icons
|
||||
* Add "Status of removed episodes" to apply (or not) a preferred status to episodes whose files are detected as removed.
|
||||
"Archived" can now be set so that removed episodes still count toward download completion stats. See setting on page
|
||||
config/Post Processing/File Handling
|
||||
* Remove redundant "Skip remove detection" from the config/Post Processing/File Handling page
|
||||
* Change to highlight the current selected item in combos on page config/Post Processing
|
||||
|
||||
[develop changelog]
|
||||
* Fix traceback error when using the menu item Manage/Update Kodi
|
||||
|
|
|
@ -1201,6 +1201,7 @@ browser.css
|
|||
/* =======================================================================
|
||||
formWizard
|
||||
========================================================================== */
|
||||
|
||||
.step,
|
||||
legend.legendStep{
|
||||
color:#fff
|
||||
|
|
|
@ -127,6 +127,7 @@ inc_top.tmpl
|
|||
color:#140F06;
|
||||
text-decoration:none
|
||||
}
|
||||
|
||||
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited{
|
||||
color:#222;
|
||||
text-decoration:none
|
||||
|
@ -1150,6 +1151,7 @@ browser.css
|
|||
/* =======================================================================
|
||||
formWizard
|
||||
========================================================================== */
|
||||
|
||||
.step,
|
||||
legend.legendStep{
|
||||
color:#57442b
|
||||
|
|
|
@ -276,6 +276,7 @@ inc_top.tmpl
|
|||
color:#140F06;
|
||||
text-decoration:none
|
||||
}
|
||||
|
||||
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited{
|
||||
color:#222;
|
||||
text-decoration:none
|
||||
|
@ -510,14 +511,17 @@ inc_bottom.tmpl
|
|||
/* =======================================================================
|
||||
inc_rootDirs.tmpl
|
||||
========================================================================== */
|
||||
|
||||
.rootdir-selectbox,
|
||||
.rootdir-selectbox #rootDirs,
|
||||
.rootdir-controls{
|
||||
width:430px
|
||||
}
|
||||
|
||||
.rootdir-selectbox{
|
||||
padding:0 0 5px
|
||||
}
|
||||
|
||||
.rootdir-controls{
|
||||
text-align:center
|
||||
}
|
||||
|
@ -549,12 +553,12 @@ home.tmpl
|
|||
}
|
||||
|
||||
#HomeLayout{margin-top:-35px}
|
||||
#HomeLayout.not-poster{height:75px }
|
||||
#HomeLayout.not-poster{height:75px}
|
||||
#HomeLayout div.not-poster{position:relative;top:38px}
|
||||
#HomeLayout span.not-poster{margin-top:-30px }
|
||||
#HomeLayout span.not-poster{margin-top:-30px}
|
||||
#HomeLayout.poster{margin-top:-35px}
|
||||
#HomeLayout span.poster{margin-bottom:10px }
|
||||
#search_show_name{margin-top:0 }
|
||||
#HomeLayout span.poster{margin-bottom:10px}
|
||||
#search_show_name{margin-top:0}
|
||||
|
||||
.ui-progressbar{
|
||||
height:20px;
|
||||
|
@ -666,12 +670,15 @@ home.tmpl
|
|||
border-left:0;
|
||||
border-right:0
|
||||
}
|
||||
|
||||
.ui-progressbar .ui-progressbar-value{
|
||||
height:20px
|
||||
}
|
||||
|
||||
.ui-progressbar .progress-20{
|
||||
border:none
|
||||
}
|
||||
|
||||
.show .progress-20,
|
||||
.show .progress-40,
|
||||
.show .progress-60,
|
||||
|
@ -816,7 +823,7 @@ home_addShows.tmpl
|
|||
margin-left:auto
|
||||
}
|
||||
|
||||
#addShowPortal a{
|
||||
#addShowPortal a{
|
||||
padding:0 20px;
|
||||
width:360px;
|
||||
float:left;
|
||||
|
@ -872,6 +879,7 @@ div.buttontext p{
|
|||
/* =======================================================================
|
||||
home_newShow.tmpl
|
||||
========================================================================== */
|
||||
|
||||
#addShowForm,
|
||||
#newShowPortal,
|
||||
fieldset.sectionwrap,
|
||||
|
@ -1221,21 +1229,27 @@ ul.tags li a{
|
|||
background-color:#eae2c8;
|
||||
color:#666
|
||||
}
|
||||
|
||||
.unaired{
|
||||
background-color:#f5f1e4
|
||||
}
|
||||
|
||||
.skipped{
|
||||
background-color:#bedeed
|
||||
}
|
||||
|
||||
.good{
|
||||
background-color:#c3e3c8
|
||||
}
|
||||
|
||||
.qual{
|
||||
background-color:#ffda8a
|
||||
}
|
||||
|
||||
.wanted{
|
||||
background-color:#ffb0b0
|
||||
}
|
||||
|
||||
.snatched{
|
||||
background-color:#ebc1ea
|
||||
}
|
||||
|
@ -1300,6 +1314,7 @@ span.snatched b{
|
|||
empty-cells:show;
|
||||
color:#000
|
||||
}
|
||||
|
||||
.sickbeardTable.display_show{
|
||||
clear:both
|
||||
}
|
||||
|
@ -1400,12 +1415,14 @@ td.col-search{
|
|||
width:150px;
|
||||
vertical-align:top
|
||||
}
|
||||
|
||||
.options-on-right{
|
||||
width:180px;
|
||||
float:right;
|
||||
vertical-align:middle;
|
||||
height:100%
|
||||
}
|
||||
|
||||
.options-on-right .showLegendRight{
|
||||
padding-right:6px;
|
||||
padding-bottom:1px
|
||||
|
@ -1666,12 +1683,15 @@ h2.day, h2.network{
|
|||
.day-of-week .text .episode .number{
|
||||
font-weight:900
|
||||
}
|
||||
|
||||
.day-of-week .text .episode .season{
|
||||
margin-right:2px
|
||||
}
|
||||
|
||||
.day-of-week .text .episode .number{
|
||||
margin-left:2px
|
||||
}
|
||||
|
||||
.day-of-week .episode-blank{
|
||||
width:250px;
|
||||
height:32px;
|
||||
|
@ -1719,11 +1739,13 @@ h2.day, h2.network{
|
|||
.on-air1{
|
||||
text-align:right
|
||||
}
|
||||
|
||||
.on-air0{
|
||||
background-color:#dfd !important;
|
||||
filter:alpha(opacity=75);
|
||||
opacity:.75
|
||||
}
|
||||
|
||||
.on-air1{
|
||||
color:#295730 !important;
|
||||
border-left:1px solid #295730 !important;
|
||||
|
@ -1775,9 +1797,11 @@ h2.day, h2.network{
|
|||
.carousel-control .glyphicon-chevron-left{
|
||||
margin-left:-10px
|
||||
}
|
||||
|
||||
.carousel-control .glyphicon-chevron-right{
|
||||
margin-right:-10px
|
||||
}
|
||||
|
||||
.carousel-control .glyphicon-chevron-left,
|
||||
.carousel-control .glyphicon-chevron-right{
|
||||
width:20px;
|
||||
|
@ -1883,6 +1907,10 @@ config*.tmpl
|
|||
padding-left:20px
|
||||
}
|
||||
|
||||
#config span.component-title.input{
|
||||
line-height:24px
|
||||
}
|
||||
|
||||
.stepDiv span.component-title.input{
|
||||
line-height:30px
|
||||
}
|
||||
|
@ -1912,6 +1940,7 @@ config*.tmpl
|
|||
#config label.space-right{
|
||||
margin-right:20px
|
||||
}
|
||||
|
||||
#config .metadataDiv{
|
||||
display:none
|
||||
}
|
||||
|
@ -1922,7 +1951,12 @@ config*.tmpl
|
|||
}
|
||||
|
||||
select .selected{
|
||||
font-weight:700
|
||||
font-weight:700;
|
||||
color:#888
|
||||
}
|
||||
|
||||
select .selected:before{
|
||||
content:"> "
|
||||
}
|
||||
|
||||
.jumbo{
|
||||
|
@ -1935,6 +1969,7 @@ select .selected{
|
|||
font-size:13px !important;
|
||||
margin-bottom:10px
|
||||
}
|
||||
|
||||
#editShow .field-pair #customQuality h4{
|
||||
margin-bottom:1px
|
||||
}
|
||||
|
@ -2044,15 +2079,19 @@ select .selected{
|
|||
.icon16-github{
|
||||
background-position:0 0
|
||||
}
|
||||
|
||||
.icon16-mirc{
|
||||
background-position:-26px 0
|
||||
}
|
||||
|
||||
.icon16-sg{
|
||||
background-position:-52px 0
|
||||
}
|
||||
|
||||
.icon16-web{
|
||||
background-position:-78px 0
|
||||
}
|
||||
|
||||
.icon16-win{
|
||||
background-position:-104px 0
|
||||
}
|
||||
|
@ -3180,6 +3219,7 @@ div.formpaginate .prev, div.formpaginate .next{
|
|||
.stepDiv{
|
||||
padding:15px
|
||||
}
|
||||
|
||||
.stepDiv.parent-folder{
|
||||
padding:15px 0 0;
|
||||
width:430px;
|
||||
|
@ -3277,6 +3317,7 @@ thead.tablesorter-stickyHeader{
|
|||
.tablesorter .filtered{
|
||||
display:none
|
||||
}
|
||||
|
||||
.tablesorter input.tablesorter-filter{
|
||||
width:98%;
|
||||
height:auto;
|
||||
|
@ -3332,7 +3373,7 @@ ul.token-input-list{
|
|||
padding:0 0 1px 0;
|
||||
background-color:#fff;
|
||||
list-style-type:none;
|
||||
/* clear:left;*/
|
||||
/* clear:left; */
|
||||
border-top-left-radius:3px;
|
||||
border-top-right-radius:3px;
|
||||
border-bottom-left-radius:3px;
|
||||
|
@ -3347,7 +3388,7 @@ ul.token-input-list li input{
|
|||
border:0;
|
||||
padding:3px 4px;
|
||||
background-color:white
|
||||
/* -webkit-appearance:caret;*/
|
||||
/* -webkit-appearance:caret; */
|
||||
}
|
||||
|
||||
li.token-input-token{
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
<h1 class="title">$title</h1>
|
||||
#end if
|
||||
#set $checked = 'checked="checked"'
|
||||
#set $selected = 'selected="selected"'
|
||||
#set $selected = 'selected="selected" class="selected"'
|
||||
|
||||
<div id="config" class="pp">
|
||||
<div id="config-content">
|
||||
|
@ -64,16 +64,12 @@
|
|||
|
||||
<div class="field-pair">
|
||||
<label for="process_method">
|
||||
<span class="component-title">Process episode method</span>
|
||||
<span class="component-title input">Process episode method</span>
|
||||
<span class="component-desc">
|
||||
<select name="process_method" id="process_method" class="form-control input-sm">
|
||||
#set $process_method_text = {'copy': "Copy", 'move': "Move", 'hardlink': "Hard Link", 'symlink' : "Symbolic Link"}
|
||||
#set $process_method_text = {'copy': 'Copy', 'move': 'Move', 'hardlink': 'Hard Link', 'symlink' : 'Symbolic Link'}
|
||||
#for $curAction in ('copy', 'move', 'hardlink', 'symlink'):
|
||||
#if $sickbeard.PROCESS_METHOD == $curAction:
|
||||
#set $process_method = $selected
|
||||
#else
|
||||
#set $process_method = ''
|
||||
#end if
|
||||
#set $process_method = ('', $selected)[$sickbeard.PROCESS_METHOD == $curAction]
|
||||
<option value="$curAction" $process_method>$process_method_text[$curAction]</option>
|
||||
#end for
|
||||
</select>
|
||||
|
@ -182,11 +178,17 @@
|
|||
|
||||
<div class="field-pair">
|
||||
<label for="skip_removed_files">
|
||||
<span class="component-title">Skip remove detection</span>
|
||||
<span class="component-title input">Status of removed episodes</span>
|
||||
<span class="component-desc">
|
||||
<input type="checkbox" name="skip_removed_files" id="skip_removed_files" #if $sickbeard.SKIP_REMOVED_FILES == True then $checked else ''#>
|
||||
<p>skip detection of removed files so the episode is not set to ignored<br />
|
||||
<b>note:</b> this may mean SickGear misses renames as well</p>
|
||||
<select name="skip_removed_files" id="skip_removed_files" class="form-control form-control-inline input-sm">
|
||||
|
||||
#set $opt_selected = ($sickbeard.SKIP_REMOVED_FILES, $IGNORED)[not $sickbeard.SKIP_REMOVED_FILES]
|
||||
#for $cur_status in [1, $SKIPPED, $ARCHIVED, $IGNORED]:
|
||||
#set $opt_text = ('Will Be Untouched', 'Set ' + $statusStrings[$cur_status] + ('', ' (default)')[$IGNORED == $cur_status])[1 != $cur_status]
|
||||
<option value="$cur_status"#echo ('', ' ' + $selected)[$cur_status == $opt_selected]#>$opt_text</option>
|
||||
#end for
|
||||
</select>
|
||||
<span><strong><em>untouched</em></strong> may mean SickGear also misses renames</span>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
|
@ -307,7 +309,7 @@
|
|||
|
||||
<div class="field-pair">
|
||||
<label for="name_presets">
|
||||
<span class="component-title">Name pattern</span>
|
||||
<span class="component-title input">Name pattern</span>
|
||||
<span class="component-desc">
|
||||
<select id="name_presets" class="form-control input-sm">
|
||||
#set is_custom = True
|
||||
|
@ -458,11 +460,11 @@
|
|||
|
||||
<div class="field-pair">
|
||||
<label for="naming_multi_ep">
|
||||
<span class="component-title">Multi episode style</span>
|
||||
<span class="component-title input">Multi episode style</span>
|
||||
<span class="component-desc">
|
||||
<select id="naming_multi_ep" name="naming_multi_ep" class="form-control input-sm">
|
||||
#for $cur_multi_ep in sorted($multiEpStrings.items(), key=lambda x: x[1]):
|
||||
<option value="$cur_multi_ep[0]" #if $sickbeard.NAMING_MULTI_EP == $cur_multi_ep[0] then 'selected="selected" class="selected"' else ''#>$cur_multi_ep[1]</option>
|
||||
<option value="$cur_multi_ep[0]" #if $sickbeard.NAMING_MULTI_EP == $cur_multi_ep[0] then $selected else ''#>$cur_multi_ep[1]</option>
|
||||
#end for
|
||||
</select>
|
||||
</span>
|
||||
|
@ -528,7 +530,7 @@
|
|||
<fieldset class="component-group-list">
|
||||
<div class="field-pair right">
|
||||
<label for="name_abd_presets">
|
||||
<span class="component-title">Air-by-date name pattern</span>
|
||||
<span class="component-title input">Air-by-date name pattern</span>
|
||||
<span class="component-desc">
|
||||
<select id="name_abd_presets" class="form-control input-sm">
|
||||
#set is_abd_custom = True
|
||||
|
@ -726,7 +728,7 @@
|
|||
<fieldset class="component-group-list">
|
||||
<div class="field-pair right">
|
||||
<label for="name_sports_presets">
|
||||
<span class="component-title">Sports name pattern</span>
|
||||
<span class="component-title input">Sports name pattern</span>
|
||||
<span class="component-desc">
|
||||
<select id="name_sports_presets" class="form-control input-sm">
|
||||
#set is_sports_custom = True
|
||||
|
@ -929,7 +931,7 @@
|
|||
<fieldset class="component-group-list">
|
||||
<div class="field-pair right">
|
||||
<label for="name_anime_presets">
|
||||
<span class="component-title">Anime name pattern</span>
|
||||
<span class="component-title input">Anime name pattern</span>
|
||||
<span class="component-desc">
|
||||
<select id="name_anime_presets" class="form-control input-sm">
|
||||
#set is_anime_custom = True
|
||||
|
@ -1079,11 +1081,11 @@
|
|||
|
||||
<div class="field-pair">
|
||||
<label for="naming_anime_multi_ep">
|
||||
<span class="component-title">Multi episode style</span>
|
||||
<span class="component-title input">Multi episode style</span>
|
||||
<span class="component-desc">
|
||||
<select id="naming_anime_multi_ep" name="naming_anime_multi_ep" class="form-control input-sm">
|
||||
#for $cur_multi_ep in sorted($multiEpStrings.items(), key=lambda x: x[1]):
|
||||
<option value="$cur_multi_ep[0]" #if $sickbeard.NAMING_ANIME_MULTI_EP == $cur_multi_ep[0] then 'selected="selected" class="selected"' else ''#>$cur_multi_ep[1]</option>
|
||||
<option value="$cur_multi_ep[0]" #if $sickbeard.NAMING_ANIME_MULTI_EP == $cur_multi_ep[0] then $selected else ''#>$cur_multi_ep[1]</option>
|
||||
#end for
|
||||
</select>
|
||||
</span>
|
||||
|
@ -1179,7 +1181,7 @@
|
|||
<fieldset class="component-group-list">
|
||||
<div class="field-pair">
|
||||
<label>
|
||||
<span class="component-title">Metadata target</span>
|
||||
<span class="component-title input">Metadata target</span>
|
||||
<span class="component-desc">
|
||||
#set $m_dict = $metadata.get_metadata_generator_dict()
|
||||
<select id="metadataType" class="form-control input-sm">
|
||||
|
|
|
@ -704,7 +704,7 @@ def initialize(consoleLogging=True):
|
|||
|
||||
RECENTSEARCH_STARTUP = bool(check_setting_int(CFG, 'General', 'recentsearch_startup', 0))
|
||||
BACKLOG_STARTUP = bool(check_setting_int(CFG, 'General', 'backlog_startup', 0))
|
||||
SKIP_REMOVED_FILES = bool(check_setting_int(CFG, 'General', 'skip_removed_files', 0))
|
||||
SKIP_REMOVED_FILES = check_setting_int(CFG, 'General', 'skip_removed_files', 0)
|
||||
|
||||
USENET_RETENTION = check_setting_int(CFG, 'General', 'usenet_retention', 500)
|
||||
|
||||
|
|
|
@ -1101,14 +1101,14 @@ class TVShow(object):
|
|||
os.path.normpath(self.location)):
|
||||
|
||||
# check if downloaded files still exist, update our data if this has changed
|
||||
if not sickbeard.SKIP_REMOVED_FILES:
|
||||
if 1 != sickbeard.SKIP_REMOVED_FILES:
|
||||
with curEp.lock:
|
||||
# if it used to have a file associated with it and it doesn't anymore then set it to IGNORED
|
||||
if curEp.location and curEp.status in Quality.DOWNLOADED:
|
||||
logger.log(str(self.indexerid) + u": Location for " + str(season) + "x" + str(
|
||||
episode) + " doesn't exist, removing it and changing our status to IGNORED",
|
||||
curEp.status = (sickbeard.SKIP_REMOVED_FILES, IGNORED)[not sickbeard.SKIP_REMOVED_FILES]
|
||||
logger.log(u'%s: File no longer at location for s%02de%02d, episode removed and status changed to %s'
|
||||
% (str(self.indexerid), season, episode, statusStrings[curEp.status]),
|
||||
logger.DEBUG)
|
||||
curEp.status = IGNORED
|
||||
curEp.subtitles = list()
|
||||
curEp.subtitles_searchcount = 0
|
||||
curEp.subtitles_lastsearch = str(datetime.datetime.min)
|
||||
|
|
|
@ -3623,7 +3623,7 @@ class ConfigPostProcessing(Config):
|
|||
sickbeard.NAMING_STRIP_YEAR = config.checkbox_to_value(naming_strip_year)
|
||||
sickbeard.USE_FAILED_DOWNLOADS = config.checkbox_to_value(use_failed_downloads)
|
||||
sickbeard.DELETE_FAILED = config.checkbox_to_value(delete_failed)
|
||||
sickbeard.SKIP_REMOVED_FILES = config.checkbox_to_value(skip_removed_files)
|
||||
sickbeard.SKIP_REMOVED_FILES = config.minimax(skip_removed_files, IGNORED, 1, IGNORED)
|
||||
sickbeard.NFO_RENAME = config.checkbox_to_value(nfo_rename)
|
||||
|
||||
sickbeard.METADATA_XBMC = xbmc_data
|
||||
|
|
Loading…
Reference in a new issue