diff --git a/CHANGES.md b/CHANGES.md index 87dcbf0..22e5065 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,4 +1,22 @@ -### 0.13.15 (2018-01-26 10:30:00 UTC) +### 0.14.0 (2018-02-01 02:30:00 UTC) + +* Change improve core scheduler logic +* Change improve media process to parse anime format 'Show Name 123 - 001 - Ep 1 name' +* Add free space stat (if obtainable) of parent folder(s) to footer +* Add option "Display disk free" to general config/interface page (default enabled) +* Add a provider error table to page Manage/Media Search +* Add failure handling, skip provider for x hour(s) depending on count of failures +* Add detection of Too Many Requests (Supporting providers UC and BTN) +* Add footer icon button to switch time layouts +* Add performance gains for proper search by integrating it into recent search +* Add the once per day proper finder time to footer, this process catches any propers missed during recent searches +* Add ability to differentiate webdl/rip sources so overwriting propers is always done from the same source (e.g. AMZN) +* Change layout of quality custom to improve clarity +* Change tweak text of SD DVD to include BD/BR +* Change TBy prov add UHD cat + + +### 0.13.15 (2018-01-26 10:30:00 UTC) * Fix save on config general diff --git a/SickBeard.py b/SickBeard.py index 0a2d3f8..ded3d2f 100755 --- a/SickBeard.py +++ b/SickBeard.py @@ -76,6 +76,7 @@ from sickbeard.exceptions import ex from lib.configobj import ConfigObj throwaway = datetime.datetime.strptime('20110101', '%Y%m%d') +rollback_loaded = None signal.signal(signal.SIGINT, sickbeard.sig_handler) signal.signal(signal.SIGTERM, sickbeard.sig_handler) @@ -153,6 +154,19 @@ class SickGear(object): return '\n'.join(help_msg) + @staticmethod + def execute_rollback(mo, max_v): + global rollback_loaded + try: + if None is rollback_loaded: + rollback_loaded = db.get_rollback_module() + if None is not rollback_loaded: + rollback_loaded.__dict__[mo]().run(max_v) + else: + print(u'ERROR: Could not download Rollback Module.') + except (StandardError, Exception): + pass + def start(self): # do some preliminary stuff sickbeard.MY_FULLNAME = os.path.normpath(os.path.abspath(__file__)) @@ -324,14 +338,28 @@ class SickGear(object): print('Stack Size %s not set: %s' % (stack_size, e.message)) # check all db versions - for d, min_v, max_v, mo in [ - ('failed.db', sickbeard.failed_db.MIN_DB_VERSION, sickbeard.failed_db.MAX_DB_VERSION, 'FailedDb'), - ('cache.db', sickbeard.cache_db.MIN_DB_VERSION, sickbeard.cache_db.MAX_DB_VERSION, 'CacheDb'), - ('sickbeard.db', sickbeard.mainDB.MIN_DB_VERSION, sickbeard.mainDB.MAX_DB_VERSION, 'MainDb') + for d, min_v, max_v, base_v, mo in [ + ('failed.db', sickbeard.failed_db.MIN_DB_VERSION, sickbeard.failed_db.MAX_DB_VERSION, sickbeard.failed_db.TEST_BASE_VERSION, 'FailedDb'), + ('cache.db', sickbeard.cache_db.MIN_DB_VERSION, sickbeard.cache_db.MAX_DB_VERSION, sickbeard.cache_db.TEST_BASE_VERSION, 'CacheDb'), + ('sickbeard.db', sickbeard.mainDB.MIN_DB_VERSION, sickbeard.mainDB.MAX_DB_VERSION, sickbeard.mainDB.TEST_BASE_VERSION, 'MainDb') ]: cur_db_version = db.DBConnection(d).checkDBVersion() - if cur_db_version > 0: + # handling of standalone TEST db versions + if cur_db_version >= 100000 and cur_db_version != max_v: + print('Your [%s] database version (%s) is a test db version and doesn\'t match SickGear required ' + 'version (%s), downgrading to production db' % (d, cur_db_version, max_v)) + self.execute_rollback(mo, max_v) + cur_db_version = db.DBConnection(d).checkDBVersion() + if cur_db_version >= 100000: + print(u'Rollback to production failed.') + sys.exit(u'If you have used other forks, your database may be unusable due to their changes') + if 100000 <= max_v and None is not base_v: + max_v = base_v # set max_v to the needed base production db for test_db + print(u'Rollback to production of [%s] successful.' % d) + + # handling of production db versions + if 0 < cur_db_version < 100000: if cur_db_version < min_v: print(u'Your [%s] database version (%s) is too old to migrate from with this version of SickGear' % (d, cur_db_version)) @@ -341,19 +369,16 @@ class SickGear(object): print(u'Your [%s] database version (%s) has been incremented past' u' what this version of SickGear supports. Trying to rollback now. Please wait...' % (d, cur_db_version)) - try: - rollback_loaded = db.get_rollback_module() - if None is not rollback_loaded: - rollback_loaded.__dict__[mo]().run(max_v) - else: - print(u'ERROR: Could not download Rollback Module.') - except (StandardError, Exception): - pass + self.execute_rollback(mo, max_v) if db.DBConnection(d).checkDBVersion() > max_v: print(u'Rollback failed.') sys.exit(u'If you have used other forks, your database may be unusable due to their changes') print(u'Rollback of [%s] successful.' % d) + # free memory + global rollback_loaded + rollback_loaded = None + # Initialize the config and our threads sickbeard.initialize(console_logging=self.console_logging) diff --git a/gui/slick/css/dark.css b/gui/slick/css/dark.css index 0f7d7ee..6fd24a6 100644 --- a/gui/slick/css/dark.css +++ b/gui/slick/css/dark.css @@ -336,6 +336,7 @@ home_newShow.tmpl color:#707070 } +.btn-inverse.dark-bg, #addRootDirTable td label .filepath, .grey-text{color:#999} .highlight-text{color:#fff} @@ -762,6 +763,60 @@ a.whitelink{ } +/* TABLE BACKGROUND color */ +.provider-failures.hover-highlight td:before, +.provider-failures.focus-highlight td:before{ + background:#222 +} + +/* ODD ZEBRA STRIPE color (needs zebra widget) */ +.provider-failures.hover-highlight .odd td:before, +.provider-failures.hover-highlight .odd th:before, +.provider-failures.focus-highlight .odd td:before, +.provider-failures.focus-highlight .odd th:before{ + background:#333 +} +/* EVEN ZEBRA STRIPE color (needs zebra widget) */ +.provider-failures.hover-highlight .even td:before, +.provider-failures.hover-highlight .even th:before, +.provider-failures.focus-highlight .even td:before, +.provider-failures.focus-highlight .even th:before{ + background-color:#2e2e2e +} + +/* HOVER ROW highlight colors */ +.provider-failures.hover-highlight tbody > tr:hover > td, /* override tablesorter theme row hover */ +.provider-failures.hover-highlight tbody > tr.odd:hover > td, +.provider-failures.hover-highlight tbody > tr.even:hover > td{ + background-color:#282828 +} +/* HOVER COLUMN highlight colors */ +.provider-failures.hover-highlight tbody tr th:hover::after, +.provider-failures.hover-highlight tbody tr td:hover::after{ + background-color:#282828 +} + +/* FOCUS ROW highlight color (touch devices) */ +.provider-failures.focus-highlight td:focus::before, +.provider-failures.focus-highlight th:focus::before{ + background-color:#181818 +} +/* FOCUS COLUMN highlight color (touch devices) */ +.provider-failures.focus-highlight td:focus::after, +.provider-failures.focus-highlight th:focus::after{ + background-color:#181818 +} +/* FOCUS CELL highlight color */ +.provider-failures.focus-highlight th:focus, +.provider-failures.focus-highlight td:focus, +.provider-failures.focus-highlight .odd th:focus, +.provider-failures.focus-highlight .odd td:focus, +.provider-failures.focus-highlight .even th:focus, +.provider-failures.focus-highlight .even td:focus{ + background-color:#181818; + color:#ddd +} + /* ======================================================================= 404.tmpl ========================================================================== */ @@ -1374,7 +1429,7 @@ div.formpaginate .prev, div.formpaginate .next{ background:#2265a1 } -#customQualityWrapper .tip-text p{ +#custom-quality-wrapper .tip-text p{ color:#999 } diff --git a/gui/slick/css/light.css b/gui/slick/css/light.css index f060f85..4952ae3 100644 --- a/gui/slick/css/light.css +++ b/gui/slick/css/light.css @@ -29,6 +29,7 @@ pre .prelight-num{ background-image:url("../images/glyphicons-halflings-white.png") } +.dark-bg .icon-glyph, .icon-white{ background-image:url("../images/glyphicons-halflings.png") } @@ -351,6 +352,7 @@ home_newShow.tmpl color:#909090 } +.btn-inverse.dark-bg, #addRootDirTable td label .filepath, .grey-text{color:#666} .highlight-text{color:#000} @@ -742,6 +744,60 @@ a.whitelink{ color:#000 } +/* TABLE BACKGROUND color */ +.provider-failures.hover-highlight td:before, +.provider-failures.focus-highlight td:before{ + background:#fff +} + +/* ODD ZEBRA STRIPE color (needs zebra widget) */ +.provider-failures.hover-highlight .odd th:before, +.provider-failures.hover-highlight .odd td:before, +.provider-failures.focus-highlight .odd th:before, +.provider-failures.focus-highlight .odd td:before{ + background:#f5f1e4 +} +/* EVEN ZEBRA STRIPE color (needs zebra widget) */ +.provider-failures.hover-highlight .even th:before, +.provider-failures.hover-highlight .even td:before, +.provider-failures.focus-highlight .even th:before, +.provider-failures.focus-highlight .even td:before{ + background-color:#dfdacf; +} + +/* HOVER ROW highlight colors */ +.provider-failures.hover-highlight tbody > tr:hover > td, /* override tablesorter theme row hover */ +.provider-failures.hover-highlight tbody > tr.odd:hover > td, +.provider-failures.hover-highlight tbody > tr.even:hover > td{ + background-color:#f4f3c2 +} +/* HOVER COLUMN highlight colors */ +.provider-failures.hover-highlight tbody tr th:hover::after, +.provider-failures.hover-highlight tbody tr td:hover::after{ + background-color:#f4f3c2 +} + +/* FOCUS ROW highlight color (touch devices) */ +.provider-failures.focus-highlight th:focus::before, +.provider-failures.focus-highlight td:focus::before{ + background-color:#dfdead +} +/* FOCUS COLUMN highlight color (touch devices) */ +.provider-failures.focus-highlight th:focus::after, +.provider-failures.focus-highlight td:focus::after{ + background-color:#dfdead +} +/* FOCUS CELL highlight color */ +.provider-failures.focus-highlight th:focus, +.provider-failures.focus-highlight td:focus, +.provider-failures.focus-highlight .odd th:focus, +.provider-failures.focus-highlight .odd td:focus, +.provider-failures.focus-highlight .even th:focus, +.provider-failures.focus-highlight .even td:focus{ + background-color:#dfdead; + color:#222 +} + /* ======================================================================= 404.tmpl ========================================================================== */ @@ -1335,7 +1391,7 @@ div.formpaginate .prev, div.formpaginate .next{ background:#57442b } -#customQualityWrapper .tip-text p{ +#custom-quality-wrapper .tip-text p{ color:#666 } @@ -1381,8 +1437,8 @@ tablesorter.css } thead.tablesorter-stickyHeader{ - border-top:2px solid #fff; - border-bottom:2px solid #fff + border-top:2px solid #ddd; + border-bottom:2px solid #ddd } /* Zebra Widget - row alternating colors */ @@ -1404,7 +1460,7 @@ thead.tablesorter-stickyHeader{ } .tablesorter tfoot tr{ - color:#fff; + color:#ddd; text-align:center; text-shadow:-1px -1px 0 rgba(0, 0, 0, 0.3); background-color:#333; diff --git a/gui/slick/css/style.css b/gui/slick/css/style.css index c970884..48685d3 100644 --- a/gui/slick/css/style.css +++ b/gui/slick/css/style.css @@ -623,6 +623,20 @@ inc_top.tmpl content:"\e900" } +.searchadd.icon-glyph{ + display:none +} +.active .searchadd.icon-glyph{ + opacity:0.4;filter:alpha(opacity=40); + float:none; + display:inline-block; + margin:0 0 -2px 0; + height:14px +} +.searchadd.icon-glyph{ + background-position:-337px 0 +} + /* ======================================================================= inc_bottom.tmpl ========================================================================== */ @@ -639,6 +653,27 @@ inc_bottom.tmpl display:inline } +.footer .icon-glyph{ + opacity:0.4;filter:alpha(opacity=40); + float:none; + display:inline-block; + margin:0 0 -1px 2px; + height:12px; + width:14px +} +.footer .icon-glyph:hover{ + opacity:0.6;filter:alpha(opacity=60); + cursor:pointer +} +.footer .icon-glyph.timeleft, +.footer .icon-glyph.time:hover{ + background-position:-49px -25px +} +.footer .icon-glyph.time, +.footer .icon-glyph.timeleft:hover{ + background-position:-193px -121px +} + /* ======================================================================= inc_rootDirs.tmpl ========================================================================== */ @@ -1103,14 +1138,14 @@ div.formpaginate{ margin-right:6px } -#edit-show #customQualityWrapper .tip-text p, -#addShowForm #customQualityWrapper .tip-text p, -#edit-show #customQualityWrapper .tip-text em, -#addShowForm #customQualityWrapper .tip-text em{ +#edit-show #custom-quality-wrapper .tip-text p, +#addShowForm #custom-quality-wrapper .tip-text p, +#edit-show #custom-quality-wrapper .tip-text em, +#addShowForm #custom-quality-wrapper .tip-text em{ font-size:13px } -#addShowForm .stepDiv #customQuality.show-if-quality-custom span.component-desc p{ +#addShowForm .stepDiv #custom-quality.show-if-quality-custom span.component-desc p{ font-size:12px } @@ -2711,7 +2746,7 @@ config*.tmpl color:#666 } -.stepDiv #customQualityWrapper h4{ +.stepDiv #custom-quality-wrapper h4{ margin-top:6px; padding:0 0 } @@ -2743,7 +2778,7 @@ config*.tmpl float:left } -#config .nocheck, #config div #customQuality, .metadataDiv{ +#config .nocheck, #config div #custom-quality, .metadataDiv{ padding-left:20px } @@ -2826,19 +2861,46 @@ select .selected:before{ } #editShow .field-pair #SceneException h4, -#editShow .field-pair #customQuality h4{ +#editShow .field-pair #custom-quality h4{ font-size:13px !important; } #editShow .field-pair #SceneException h4, -#editShow .field-pair #customQuality h4{ +#editShow .field-pair #custom-quality h4{ margin-bottom:6px } -#editShow .field-pair #customQuality h4{ +#editShow .field-pair #custom-quality h4{ line-height:normal } +#custom-quality .btn, +#custom-quality .btn-placeholder{ + width:13em +} +#custom-quality .btn-placeholder{ + display:inline-block; + border:1px transparent +} + +#addShowForm #add-white, +#addShowForm #add-black{ + margin:0 0 10px 30px !important +} +#addShowForm #remove-white, +#addShowForm #remove-black{ + margin:0 0 0 30px !important +} +#edit-show #add-white, +#edit-show #add-black{ + margin:0 0 10px !important +} + +#edit-show #remove-white, +#edit-show #remove-black{ + margin:0 !important +} + .test-notification{ padding:5px; margin-bottom:10px; @@ -3191,6 +3253,85 @@ input.get_less_eps{ display:none } +#media-search .section{ + padding-bottom:10px +} +#media-search .btn{ + margin:0 6px 0 0; + min-width:70px +} +#media-search .btn.shows-more, +#media-search .btn.shows-less{ + margin:6px 6px 6px 0; +} +#media-search .btn.provider-retry{ + margin:6px 0 6px 4px; +} +.tablesorter.provider-failures{width:auto;clear:both;margin-bottom:10px} +.tablesorter.provider-failures > tbody > tr.tablesorter-childRow td{display:none} +.tablesorter.provider-failures.tablesorter > tbody > tr{background-color:transparent} + +.provider-failures.hover-highlight th:hover::after, +.provider-failures.hover-highlight td:hover::after, +.provider-failures.focus-highlight th:focus::after, +.provider-failures.focus-highlight td:focus::after{ + content:''; + position:absolute; + width:100%; + height:999em; + left:0; + top:-555em; + z-index:-1 +} +.provider-failures.focus-highlight th:focus::before, +.provider-failures.focus-highlight td:focus::before{ + content:''; + position:absolute; + width:999em; + height:100%; + left:-555em; + top:0; + z-index:-2 +} +/* required styles */ +.provider-failures.hover-highlight, +.provider-failures.focus-highlight{ + overflow:hidden +} +.provider-failures.hover-highlight th, +.provider-failures.hover-highlight td, +.provider-failures.focus-highlight th, +.provider-failures.focus-highlight td{ + position:relative; + outline:0 +} +/* override the tablesorter theme styling */ +.provider-failures.hover-highlight, +.provider-failures.hover-highlight tbody > tr > td, +.provider-failures.focus-highlight, +.provider-failures.focus-highlight tbody > tr > td, +/* override zebra styling */ +.provider-failures.hover-highlight tbody tr.even > th, +.provider-failures.hover-highlight tbody tr.even > td, +.provider-failures.hover-highlight tbody tr.odd > th, +.provider-failures.hover-highlight tbody tr.odd > td, +.provider-failures.focus-highlight tbody tr.even > th, +.provider-failures.focus-highlight tbody tr.even > td, +.provider-failures.focus-highlight tbody tr.odd > th, +.provider-failures.focus-highlight tbody tr.odd > td{ + background:transparent +} +/* table background positioned under the highlight */ +.provider-failures.hover-highlight td:before, +.provider-failures.focus-highlight td:before{ + content:''; + position:absolute; + width:100%; + height:100%; + left:0; + top:0; + z-index:-3 +} /* ======================================================================= 404.tmpl ========================================================================== */ @@ -3423,6 +3564,12 @@ img[src=""],img:not([src]){ left:0 } +.bfr{ + position:absolute; + left:-999px; + top:-999px +} + /* ======================================================================= bootstrap Overrides ========================================================================== */ @@ -4227,6 +4374,24 @@ div.formpaginate .prev, div.formpaginate .next{ padding:15px } +#import-shows .stepDiv, +.step-three .stepDiv{ + padding:15px 0 +} + +#import-shows #addShowForm{ + width:861px +} + +.step-three #custom-quality-wrapper{ + width:831px +} + +#import-shows #addShowForm .stepDiv span.component-desc, +#addShowForm .step-three .stepDiv span.component-desc{ + width:639px +} + .stepDiv.parent-folder{ padding:15px 0 0; width:430px; @@ -4238,21 +4403,21 @@ div.formpaginate .prev, div.formpaginate .next{ } /* step 3 related */ -#edit-show #customQualityWrapper #customQuality, -#customQuality{ +#edit-show #custom-quality-wrapper #custom-quality, +#custom-quality{ display:block; padding:0 0 10px 0; overflow:hidden; clear:both } -#customQualityWrapper div.component-group-desc{ +#custom-quality-wrapper div.component-group-desc{ float:left; width:172px; padding:0 } -#customQualityWrapper div.component-group-desc p{ +#custom-quality-wrapper div.component-group-desc p{ margin:.8em 0; font-size:1.2em } @@ -4268,8 +4433,7 @@ tablesorter.css margin-left:auto; color:#000; /* text-align:left;*/ - background-color:#ddd/*; - border-spacing:0*/ +/* border-spacing:0*/ } #display-show .tablesorter{ @@ -4317,20 +4481,6 @@ tablesorter.css cursor:default } -thead.tablesorter-stickyHeader{ - border-top:2px solid #ddd; - border-bottom:2px solid #ddd -} - -/* Zebra Widget - row alternating colors */ -.tablesorter tr.odd, .sickbeardTable tr.odd{ - background-color:#f5f1e4 -} - -.tablesorter tr.even, .sickbeardTable tr.even{ - background-color:#dfdacf -} - /* filter widget */ .tablesorter .filtered{ display:none @@ -4346,9 +4496,7 @@ thead.tablesorter-stickyHeader{ .tablesorter tr.tablesorter-filter-row, .tablesorter tr.tablesorter-filter-row td{ - text-align:center; - background:#eee; - border-bottom:1px solid #ddd + text-align:center } /* optional disabled input styling */ @@ -4362,10 +4510,7 @@ thead.tablesorter-stickyHeader{ }*/ .tablesorter tfoot tr{ - color:#ddd; text-align:center; - text-shadow:-1px -1px 0 rgba(0, 0, 0, 0.3); - background-color:#333; border-collapse:collapse } diff --git a/gui/slick/interfaces/default/config_general.tmpl b/gui/slick/interfaces/default/config_general.tmpl index 3e92434..9425f48 100644 --- a/gui/slick/interfaces/default/config_general.tmpl +++ b/gui/slick/interfaces/default/config_general.tmpl @@ -335,6 +335,17 @@ +#if not hasattr($sickbeard, 'DISPLAY_FREESPACE')#Restart SickGear to reveal new option here#else# +
+ +
+#end if
-
- -
diff --git a/gui/slick/interfaces/default/displayShow.tmpl b/gui/slick/interfaces/default/displayShow.tmpl index acf25b3..f2e0e62 100644 --- a/gui/slick/interfaces/default/displayShow.tmpl +++ b/gui/slick/interfaces/default/displayShow.tmpl @@ -295,7 +295,7 @@
Initial - #echo ', '.join([$Quality.qualityStrings[$x] for $x in sorted($anyQualities)])# + #echo ', '.join([$Quality.get_quality_ui($x) for $x in sorted($anyQualities)])#
#end if @@ -303,7 +303,7 @@
Upgrade to - #echo ', '.join([$Quality.qualityStrings[$x] for $x in sorted($bestQualities)])# + #echo ', '.join([$Quality.get_quality_ui($x) for $x in sorted($bestQualities)])#
#end if @@ -396,7 +396,7 @@ #for $curStatus in sorted($Quality.DOWNLOADED) #if $DOWNLOADED != $curStatus - + #end if #end for diff --git a/gui/slick/interfaces/default/editShow.tmpl b/gui/slick/interfaces/default/editShow.tmpl index 2231715..c023daa 100644 --- a/gui/slick/interfaces/default/editShow.tmpl +++ b/gui/slick/interfaces/default/editShow.tmpl @@ -146,17 +146,17 @@
#set $qualities = $common.Quality.splitQuality(int($show.quality)) -#set global $anyQualities = $qualities[0] -#set global $bestQualities = $qualities[1] +#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') -#if $anyQualities + $bestQualities +#if $any_qualities + $best_qualities diff --git a/gui/slick/interfaces/default/history.tmpl b/gui/slick/interfaces/default/history.tmpl index 2ff7a49..a78f262 100644 --- a/gui/slick/interfaces/default/history.tmpl +++ b/gui/slick/interfaces/default/history.tmpl @@ -134,7 +134,7 @@ #if $SUBTITLED == $curStatus "> #end if - $statusStrings[$curStatus] + $statusStrings[$curStatus].replace('SD DVD', 'SD DVD/BR/BD') #if $DOWNLOADED == $curStatus @@ -156,7 +156,7 @@ #end if #end if - $curQuality$Quality.qualityStrings[$curQuality] + $curQuality$Quality.get_quality_ui($curQuality) #end for @@ -258,7 +258,7 @@ #end for #end if - $Quality.qualityStrings[$curQuality] + $Quality.get_quality_ui($curQuality) #end for diff --git a/gui/slick/interfaces/default/home_addExistingShow.tmpl b/gui/slick/interfaces/default/home_addExistingShow.tmpl index 572a07e..23f3a87 100644 --- a/gui/slick/interfaces/default/home_addExistingShow.tmpl +++ b/gui/slick/interfaces/default/home_addExistingShow.tmpl @@ -8,6 +8,7 @@ #set global $sbPath = '../..' #set global $statpath = '../..' #set global $topmenu = 'home' +#set global $page_body_attr = 'import-shows"' ## #import os.path #include $os.path.join($sg_str('PROG_DIR'), 'gui/slick/interfaces/default/inc_top.tmpl') diff --git a/gui/slick/interfaces/default/inc_addShowOptions.tmpl b/gui/slick/interfaces/default/inc_addShowOptions.tmpl index a25e571..46e6e70 100644 --- a/gui/slick/interfaces/default/inc_addShowOptions.tmpl +++ b/gui/slick/interfaces/default/inc_addShowOptions.tmpl @@ -9,7 +9,7 @@ <% def sg_str(varname, default=''): return getattr(sickbeard, varname, default) %>#slurp#
-
+
To reuse options below when adding more shows 
@@ -19,7 +19,7 @@ set the initial status of missing episodes @@ -33,8 +33,8 @@
#set $qualities = $Quality.splitQuality($sg_var('QUALITY_DEFAULT', SD)) -#set global $anyQualities = $qualities[0] -#set global $bestQualities = $qualities[1] +#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')
diff --git a/gui/slick/interfaces/default/inc_blackwhitelist.tmpl b/gui/slick/interfaces/default/inc_blackwhitelist.tmpl index 0443061..0d21d8b 100644 --- a/gui/slick/interfaces/default/inc_blackwhitelist.tmpl +++ b/gui/slick/interfaces/default/inc_blackwhitelist.tmpl @@ -19,8 +19,8 @@ #end for
- - + +
@@ -34,8 +34,8 @@ #end for
- - + +
@@ -65,4 +65,4 @@ - \ No newline at end of file + diff --git a/gui/slick/interfaces/default/inc_bottom.tmpl b/gui/slick/interfaces/default/inc_bottom.tmpl index 01a8a5f..6b8d336 100644 --- a/gui/slick/interfaces/default/inc_bottom.tmpl +++ b/gui/slick/interfaces/default/inc_bottom.tmpl @@ -3,6 +3,8 @@ #import re #from sickbeard import db, sbdatetime #from sickbeard.common import * +#from sickbeard.helpers import df +#from sickbeard.webserve import MainHandler <% def sg_var(varname, default=False): return getattr(sickbeard, varname, default) %>#slurp# <% def sg_str(varname, default=''): return getattr(sickbeard, varname, default) %>#slurp# ## @@ -53,15 +55,10 @@ #set $localheader = '' #end try <% -try: - next_backlog_timeleft = str(sickbeard.backlogSearchScheduler.next_backlog_timeleft()).split('.')[0] -except AttributeError: - next_backlog_timeleft = 'soon' -try: - recent_search_timeleft = str(sickbeard.recentSearchScheduler.timeLeft()).split('.')[0] -except AttributeError: - recent_search_timeleft = 'soon' -%> +diskfree, min_output = df() +if min_output: + avail = ', '.join(['%s %s' % (drive, free) for (drive, free) in diskfree]) +%>#slurp# ## $shows_total shows ($shows_active active) | $ep_downloaded<%= @@ -72,9 +69,72 @@ except AttributeError: % (localRoot, str(ep_snatched)) )[0 < ep_snatched] %> / $ep_total episodes downloaded $ep_percentage - | recent search: $recent_search_timeleft - | backlog search: $next_backlog_timeleft +#for i, event in enumerate($MainHandler.getFooterTime(change_layout=False, json_dump=False)) + #for k, v in event.items() + #set info = re.findall('(.*)_(timeleft|time)', k)[0] + #if not i +
next connect for... + #end if + | $info[0].replace('-', ' '): $v + #end for +#end for +#if diskfree + #if min_output +
free space  $avail + #else +
+ + + + + #for i, drive in enumerate(diskfree) + + + + + + #end for + +
Free space stats for volume/path
#if not i#free space#end if#$drive[1]$drive[0]
+
+ #end if +#end if + diff --git a/gui/slick/interfaces/default/inc_displayShow.tmpl b/gui/slick/interfaces/default/inc_displayShow.tmpl index 8145cac..75de3a1 100644 --- a/gui/slick/interfaces/default/inc_displayShow.tmpl +++ b/gui/slick/interfaces/default/inc_displayShow.tmpl @@ -105,9 +105,9 @@ #slurp #set $curStatus, $curQuality = $Quality.splitCompositeStatus(int($ep['status'])) #if Quality.NONE != $curQuality - #if $SUBTITLED == $curStatus##else#$statusStrings[$curStatus].replace('Downloaded', '')#end if# $Quality.qualityStrings[$curQuality] + #if $SUBTITLED == $curStatus##else#$statusStrings[$curStatus].replace('Downloaded', '')#end if# $Quality.get_quality_ui($curQuality) #else - $statusStrings[$curStatus] + $statusStrings[$curStatus].replace('SD DVD', 'SD DVD/BR/BD') #end if #if 0 != int($ep['season']) diff --git a/gui/slick/interfaces/default/inc_qualityChooser.tmpl b/gui/slick/interfaces/default/inc_qualityChooser.tmpl index 33cb640..60aa897 100644 --- a/gui/slick/interfaces/default/inc_qualityChooser.tmpl +++ b/gui/slick/interfaces/default/inc_qualityChooser.tmpl @@ -3,15 +3,15 @@ #set $html_selected = ' selected="selected"'
-
-
-