Browse Source

Change fanart images to not use cache as cache is not required.

Change rename "Manual Post-Processing" menu item to "Process Media".
Change rename "Search Providers" -> "Media Providers".
Change rename "Manage Searches" -> "Media Search".
Change rename "Episode Status Management" -> "Episode Status".
Change rename "Mass Update" -> "Bulk Change".
Change indicate default home on "Shows Menu".
Change relocate "Episodes" menu to "Shows"/"Episode Schedule".
Change relocate "History" menu to "Shows"/"History".
Change remove restart/shutdown buttons from "Show List".
Change remove superfluous buttons from all submenus.
pull/844/head
JackDandy 9 years ago
parent
commit
0bcc2c03e6
  1. 19
      CHANGES.md
  2. BIN
      gui/slick/css/fonts/sgicons.eot
  3. 7
      gui/slick/css/fonts/sgicons.svg
  4. BIN
      gui/slick/css/fonts/sgicons.ttf
  5. BIN
      gui/slick/css/fonts/sgicons.woff
  6. 26
      gui/slick/css/style.css
  7. 6
      gui/slick/interfaces/default/config_general.tmpl
  8. 12
      gui/slick/interfaces/default/config_providers.tmpl
  9. 18
      gui/slick/interfaces/default/config_search.tmpl
  10. 4
      gui/slick/interfaces/default/episodeView.tmpl
  11. 2
      gui/slick/interfaces/default/history.tmpl
  12. 6
      gui/slick/interfaces/default/home_postprocess.tmpl
  13. 1
      gui/slick/interfaces/default/inc_qualityChooser.tmpl
  14. 41
      gui/slick/interfaces/default/inc_top.tmpl
  15. 14
      gui/slick/interfaces/default/manage.tmpl
  16. 6
      gui/slick/interfaces/default/manage_manageSearches.tmpl
  17. 8
      gui/slick/interfaces/default/manage_showProcesses.tmpl
  18. 4
      gui/slick/js/bulkChange.js
  19. 70
      gui/slick/js/inc_top.js
  20. 0
      gui/slick/js/manageShowProcesses.js
  21. 2
      sickbeard/__init__.py
  22. 2
      sickbeard/image_cache.py
  23. 2
      sickbeard/ui.py
  24. 79
      sickbeard/webserve.py
  25. 2
      sickbeard/webserveInit.py

19
CHANGES.md

@ -37,7 +37,7 @@
* Add passthru of param "post_json" to Requests() "json" in helpers.getURL * Add passthru of param "post_json" to Requests() "json" in helpers.getURL
* Add search show Name to Show List Layout: Poster * Add search show Name to Show List Layout: Poster
* Change indicate when not sorting with article by dimming ("The", "A", "An") on Show List, Episode, History, * Change indicate when not sorting with article by dimming ("The", "A", "An") on Show List, Episode, History,
Mass Update, Add with Browse and from Existing views Bulk Change, Add with Browse and from Existing views
* Add Emby notifier to config/Notifications * Add Emby notifier to config/Notifications
* Use a subprocess and cp for copying files on posix systems to preserve file metadata * Use a subprocess and cp for copying files on posix systems to preserve file metadata
* Fix alternative unicode show names from breaking search * Fix alternative unicode show names from breaking search
@ -133,7 +133,7 @@
* Change post process to join incrementally named (i.e. file.001 to file.nnn) split files * Change post process to join incrementally named (i.e. file.001 to file.nnn) split files
* Change replace unrar2 lib with rarfile 3.0 and UnRAR.exe 5.40 freeware * Change replace unrar2 lib with rarfile 3.0 and UnRAR.exe 5.40 freeware
* Change post process "Copy" to delete redundant files after use * Change post process "Copy" to delete redundant files after use
* Add indicator for public access search providers * Add indicator for public access media providers
* Change improve probability selecting most seeded release * Change improve probability selecting most seeded release
* Change add the TorrentDay x265 category to search * Change add the TorrentDay x265 category to search
* Add smart logic to reduce api hits to newznab server types and improve how nzbs are downloaded * Add smart logic to reduce api hits to newznab server types and improve how nzbs are downloaded
@ -141,7 +141,7 @@
* Change improve performance by using newznab server advertised capabilities * Change improve performance by using newznab server advertised capabilities
* Change config/providers newznab to display only non-default categories * Change config/providers newznab to display only non-default categories
* Change use scene season for wanted segment in backlog if show is scene numbering * Change use scene season for wanted segment in backlog if show is scene numbering
* Change combine Manage Searches / Backlog Search / Limited and Full to Force * Change combine Media Search / Backlog Search / Limited and Full to Force
* Change consolidate limited and full backlog * Change consolidate limited and full backlog
* Change config / Search / Backlog search frequency to instead spread backlog searches over a number of days * Change config / Search / Backlog search frequency to instead spread backlog searches over a number of days
* Change migrate minimum used value for search frequency into new minimum 7 for search spread * Change migrate minimum used value for search frequency into new minimum 7 for search spread
@ -172,7 +172,7 @@
* Remove redundant config/general/"Allow incomplete show data" * Remove redundant config/general/"Allow incomplete show data"
* Fix status reset of a snatched, downloaded, or archived episode when its date is set to never (no date) on the info * Fix status reset of a snatched, downloaded, or archived episode when its date is set to never (no date) on the info
source and there is no media file source and there is no media file
* Change only show unaired episodes on Manage/Backlog Overview and Manage/Episode Status Management where relevant * Change only show unaired episodes on Manage/Backlog Overview and Manage/Episode Status where relevant
* Change locally cache Trakt/IMDb/Anime show cards * Change locally cache Trakt/IMDb/Anime show cards
* Change allow pp to replace files with a repack or proper of same quality * Change allow pp to replace files with a repack or proper of same quality
* Fix ensure downloaded eps are not shown on episode view * Fix ensure downloaded eps are not shown on episode view
@ -251,6 +251,17 @@
* Change View Log File add a typeface and some colour to improve readability * Change View Log File add a typeface and some colour to improve readability
* Change View Log File/Errors only display "Clear Errors" button when there are errors to clear * Change View Log File/Errors only display "Clear Errors" button when there are errors to clear
* Change improve performance of View Log File * Change improve performance of View Log File
* Change fanart images to not use cache as cache is not required
* Change rename "Manual Post-Processing" menu item to "Process Media"
* Change rename "Search Providers" -> "Media Providers"
* Change rename "Manage Searches" -> "Media Search"
* Change rename "Episode Status Management" -> "Episode Status"
* Change rename "Mass Update" -> "Bulk Change"
* Change indicate default home on "Shows Menu"
* Change relocate "Episodes" menu to "Shows"/"Episode Schedule"
* Change relocate "History" menu to "Shows"/"History"
* Change remove restart/shutdown buttons from "Show List"
* Change remove superfluous buttons from all submenus
[develop changelog] [develop changelog]
* Change send nzb data to NZBGet for Anizb instead of url * Change send nzb data to NZBGet for Anizb instead of url

BIN
gui/slick/css/fonts/sgicons.eot

Binary file not shown.

7
gui/slick/css/fonts/sgicons.svg

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 205 KiB

After

Width:  |  Height:  |  Size: 235 KiB

BIN
gui/slick/css/fonts/sgicons.ttf

Binary file not shown.

BIN
gui/slick/css/fonts/sgicons.woff

Binary file not shown.

26
gui/slick/css/style.css

@ -397,6 +397,10 @@ inc_top.tmpl
margin-right:6px margin-right:6px
} }
.dropdown [class^="sgicon-"].tight{
margin-right:0px
}
#SubMenu [class^="sgicon-"], #SubMenu [class*="sgicon-"]{ #SubMenu [class^="sgicon-"], #SubMenu [class*="sgicon-"]{
margin-right:3px margin-right:3px
} }
@ -478,7 +482,7 @@ inc_top.tmpl
content:"\e614" content:"\e614"
} }
.sgicon-massupdate:before{ .sgicon-bulk-change:before{
content:"\e615" content:"\e615"
} }
@ -566,6 +570,26 @@ inc_top.tmpl
content:"\e62a" content:"\e62a"
} }
.sgicon-list:before{
content:"\e62b"
}
.sgicon-cal:before{
content:"\e62c"
}
.sgicon-mediafile:before{
content:"\e62d"
}
.sgicon-archive:before{
content:"\e62e"
}
.sgicon-book:before{
content:"\e62f"
}
.sgicon-imdb:before{ .sgicon-imdb:before{
content:"\e898" content:"\e898"
} }

6
gui/slick/interfaces/default/config_general.tmpl

@ -14,7 +14,7 @@
<% def sg_str(varname, default=''): return getattr(sickbeard, varname, default) %>#slurp# <% def sg_str(varname, default=''): return getattr(sickbeard, varname, default) %>#slurp#
## ##
#set global $title = 'Config - General' #set global $title = 'Config - General'
#set global $header = 'General Configuration' #set global $header = 'General Settings'
#set global $sbPath = '../..' #set global $sbPath = '../..'
#set global $topmenu = 'config' #set global $topmenu = 'config'
## ##
@ -47,7 +47,7 @@
<ul> <ul>
<li><a href="#core-component-group1">Misc</a></li> <li><a href="#core-component-group1">Misc</a></li>
<li><a href="#core-component-group2">Interface</a></li> <li><a href="#core-component-group2">Interface</a></li>
<li><a href="#core-component-group3">Advanced Settings</a></li> <li><a href="#core-component-group3">Advanced</a></li>
</ul> </ul>
<div id="core-component-group1"> <div id="core-component-group1">
@ -568,7 +568,7 @@
<div id="core-component-group3" class="component-group"> <div id="core-component-group3" class="component-group">
<div class="component-group-desc"> <div class="component-group-desc">
<h3>Advanced Settings</h3> <h3>Advanced</h3>
</div> </div>

12
gui/slick/interfaces/default/config_providers.tmpl

@ -5,7 +5,7 @@
#from sickbeard.helpers import anon_url, starify #from sickbeard.helpers import anon_url, starify
## ##
#set global $title = 'Config - Providers' #set global $title = 'Config - Providers'
#set global $header = 'Search Providers' #set global $header = 'Media Providers'
#set global $sbPath = '../..' #set global $sbPath = '../..'
#set global $topmenu = 'config' #set global $topmenu = 'config'
## ##
@ -74,10 +74,10 @@
<li><a href="#core-component-group2">Provider Options</a></li> <li><a href="#core-component-group2">Provider Options</a></li>
#if $sickbeard.USE_NZBS #if $sickbeard.USE_NZBS
<li><a href="#core-component-group3">Configure Custom Newznab Providers</a></li> <li><a href="#core-component-group3">Custom Newznab</a></li>
#end if #end if
#if $sickbeard.USE_TORRENTS #if $sickbeard.USE_TORRENTS
<li><a href="#core-component-group4">Configure Custom Torrent Providers</a></li> <li><a href="#core-component-group4">Custom Torrent</a></li>
#end if #end if
</ul> </ul>
@ -623,8 +623,8 @@ name = '' if not client else get_client_instance(sickbeard.TORRENT_METHOD)().nam
<div id="core-component-group3" class="component-group"> <div id="core-component-group3" class="component-group">
<div class="component-group-desc"> <div class="component-group-desc">
<h3>Configure Custom<br />Newznab Providers</h3> <h3>Custom Newznab Providers</h3>
<p>Add and setup or remove custom newznab providers.</p> <p>Add, setup or remove custom newznab providers.</p>
</div> </div>
<fieldset class="component-group-list"> <fieldset class="component-group-list">
@ -717,7 +717,7 @@ name = '' if not client else get_client_instance(sickbeard.TORRENT_METHOD)().nam
<div id="core-component-group4" class="component-group"> <div id="core-component-group4" class="component-group">
<div class="component-group-desc"> <div class="component-group-desc">
<h3>Configure Custom Torrent Providers</h3> <h3>Custom Torrent Providers</h3>
<p>Add or remove custom RSS providers.</p> <p>Add or remove custom RSS providers.</p>
</div> </div>

18
gui/slick/interfaces/default/config_search.tmpl

@ -2,7 +2,7 @@
#from sickbeard import clients #from sickbeard import clients
#from sickbeard.helpers import starify #from sickbeard.helpers import starify
## ##
#set global $title = 'Config - Episode Search' #set global $title = 'Config - Media Search'
#set global $header = 'Search Settings' #set global $header = 'Search Settings'
#set global $sbPath = '../..' #set global $sbPath = '../..'
#set global $topmenu = 'config' #set global $topmenu = 'config'
@ -33,16 +33,16 @@
<div id="config-components"> <div id="config-components">
<ul> <ul>
<li><a href="#core-component-group1">Episode Search</a></li> <li><a href="#core-component-group1">Media Search</a></li>
<li><a href="#core-component-group2">NZB Search</a></li> <li><a href="#core-component-group2">NZB Results</a></li>
<li><a href="#core-component-group3">Torrent Search</a></li> <li><a href="#core-component-group3">Torrent Results</a></li>
</ul> </ul>
<div id="core-component-group1" class="component-group"> <div id="core-component-group1" class="component-group">
<div class="component-group-desc"> <div class="component-group-desc">
<h3>Episode Search</h3> <h3>Media Search</h3>
<p>How to manage searching with <a href="$sbRoot/config/providers/">providers</a>.</p> <p>How to manage searching with <a href="$sbRoot/config/providers/">providers</a>.</p>
</div> </div>
@ -214,7 +214,7 @@
<div id="core-component-group2" class="component-group"> <div id="core-component-group2" class="component-group">
<div class="component-group-desc"> <div class="component-group-desc">
<h3>NZB Search</h3> <h3>NZB Results</h3>
<p>How to handle NZB search results.</p> <p>How to handle NZB search results.</p>
</div> </div>
@ -225,7 +225,7 @@
<span class="component-title">Search NZBs</span> <span class="component-title">Search NZBs</span>
<span class="component-desc"> <span class="component-desc">
<input type="checkbox" name="use_nzbs" class="enabler" id="use_nzbs"<%= html_checked if sickbeard.USE_NZBS else '' %>> <input type="checkbox" name="use_nzbs" class="enabler" id="use_nzbs"<%= html_checked if sickbeard.USE_NZBS else '' %>>
<p>enable NZB search providers</p></span> <p>enable NZB media providers</p></span>
</label> </label>
</div> </div>
@ -414,7 +414,7 @@
<div id="core-component-group3" class="component-group"> <div id="core-component-group3" class="component-group">
<div class="component-group-desc"> <div class="component-group-desc">
<h3>Torrent Search</h3> <h3>Torrent Results</h3>
<p>How to handle Torrent search results.</p> <p>How to handle Torrent search results.</p>
</div> </div>
@ -426,7 +426,7 @@
<span class="component-title">Search torrents</span> <span class="component-title">Search torrents</span>
<span class="component-desc"> <span class="component-desc">
<input type="checkbox" name="use_torrents" class="enabler" id="use_torrents"<%= html_checked if sickbeard.USE_TORRENTS == True else '' %>> <input type="checkbox" name="use_torrents" class="enabler" id="use_torrents"<%= html_checked if sickbeard.USE_TORRENTS == True else '' %>>
<p>enable torrent search providers</p> <p>enable torrent media providers</p>
</span> </span>
</label> </label>
</div> </div>

4
gui/slick/interfaces/default/episodeView.tmpl

@ -11,7 +11,7 @@
#set global $title = 'Episode View' #set global $title = 'Episode View'
#set global $header = 'Episode View' #set global $header = 'Episode View'
#set global $sbPath = '..' #set global $sbPath = '..'
#set global $topmenu = 'episodeView' #set global $topmenu = 'home'
#set $css = $getVar('css', '') #set $css = $getVar('css', '')
#set $has_art = $getVar('has_art', None) #set $has_art = $getVar('has_art', None)
#set $restart = 'Restart SickGear for new features on this page' #set $restart = 'Restart SickGear for new features on this page'
@ -248,7 +248,7 @@
</a> </a>
#end if #end if
<a class="btn btn-inline forceBacklog" href="webcal://$sbHost:$sbHttpPort/calendar"> <a class="btn btn-inline forceBacklog" href="webcal://$sbHost:$sbHttpPort/calendar">
<i class="sgicon-rss"></i> Subscribe</a> <i class="sgicon-cal" style="font-size:14px"></i> Webcal</a>
</div> </div>
</div> </div>

2
gui/slick/interfaces/default/history.tmpl

@ -12,7 +12,7 @@
#set global $title = 'History' #set global $title = 'History'
#set global $header = 'History' #set global $header = 'History'
#set global $sbPath = '..' #set global $sbPath = '..'
#set global $topmenu = 'history' #set global $topmenu = 'home'
#set $layout = $sg_str('HISTORY_LAYOUT', 'detailed') #set $layout = $sg_str('HISTORY_LAYOUT', 'detailed')
## ##
#import os.path #import os.path

6
gui/slick/interfaces/default/home_postprocess.tmpl

@ -1,8 +1,8 @@
#import sickbeard #import sickbeard
## ##
#set global $header = 'Post Processing' #set global $header = 'Process Media'
#set global $title = $header #set global $title = $header
#set global $topmenu = 'home' #set global $topmenu = 'manage'
#set global $sbPath = '../..' #set global $sbPath = '../..'
## ##
#import os.path #import os.path
@ -102,4 +102,4 @@ $('#process_method').change(function(){
//--> //-->
</script> </script>
#include $os.path.join($sickbeard.PROG_DIR, 'gui/slick/interfaces/default/inc_bottom.tmpl') #include $os.path.join($sickbeard.PROG_DIR, 'gui/slick/interfaces/default/inc_bottom.tmpl')

1
gui/slick/interfaces/default/inc_qualityChooser.tmpl

@ -49,7 +49,6 @@
#end for #end for
</select><br /> </select><br />
<span>Ctrl + Click = toggle a quality</span> <span>Ctrl + Click = toggle a quality</span>
<br /><span>Ctrl + Click = toggle a quality</span>
</div> </div>
<div style="line-height:normal;padding-top:50px" id="quality-notes" class="tip-text"> <div style="line-height:normal;padding-top:50px" id="quality-notes" class="tip-text">

41
gui/slick/interfaces/default/inc_top.tmpl

@ -111,9 +111,18 @@
<ul class="nav navbar-nav navbar-right"> <ul class="nav navbar-nav navbar-right">
<li id="NAVhome" class="dropdown"> <li id="NAVhome" class="dropdown">
<a href="$sbRoot/home/" class="dropdown-toggle" data-toggle="dropdown" data-delay="0" tabindex="$tab#set $tab += 1#">Shows <b class="caret"></b></a> <a href="$sbRoot/home/" class="dropdown-toggle" data-toggle="dropdown" data-delay="0" tabindex="$tab#set $tab += 1#">Shows <b class="caret"></b></a>
#set $showlist_home, $episode_home, $history_home = 3 * ['(<i class="sgicon-home tight"></i>)']
#if 'shows' == $sickbeard.DEFAULT_HOME
#set $episode_home, $history_home = 2 * ['']
#elif 'episodes' == $sickbeard.DEFAULT_HOME
#set $showlist_home, $history_home = 2 * ['']
#else
#set $showlist_home, $episode_home = 2 * ['']
#end if
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a href="$sbRoot/home/showlistView/" tabindex="$tab#set $tab += 1#"><i class="sgicon-home"></i>Show List</a></li> <li><a href="$sbRoot/home/showlistView/" tabindex="$tab#set $tab += 1#"><i class="sgicon-list" style="font-size:12px"></i>Show List $showlist_home</a></li>
<li><a href="$sbRoot/home/postprocess/" tabindex="$tab#set $tab += 1#"><i class="sgicon-postprocess"></i>Manual Post-Processing</a></li> <li><a href="$sbRoot/episodeView/" tabindex="$tab#set $tab += 1#"><i class="sgicon-cal"></i>Episode Schedule $episode_home</a></li>
<li><a href="$sbRoot/history/" tabindex="$tab#set $tab += 1#"><i class="sgicon-mediafile"></i>History $history_home</a></li>
<li class="divider"></li> <li class="divider"></li>
<li class="menu-item-noicon opacity60">Add show...</li> <li class="menu-item-noicon opacity60">Add show...</li>
<li><a href="$sbRoot/home/addShows/new_show/" tabindex="$tab#set $tab += 1#"><i class="sgicon-addshow"></i>Search <li><a href="$sbRoot/home/addShows/new_show/" tabindex="$tab#set $tab += 1#"><i class="sgicon-addshow"></i>Search
@ -132,22 +141,16 @@
</ul> </ul>
</li> </li>
<li id="NAVepisodeView">
<a href="$sbRoot/episodeView/" tabindex="$tab#set $tab += 1#">Episodes</a>
</li>
<li id="NAVhistory">
<a href="$sbRoot/history/" tabindex="$tab#set $tab += 1#">History</a>
</li>
<li id="NAVmanage" class="dropdown"> <li id="NAVmanage" class="dropdown">
<a href="$sbRoot/manage/" class="dropdown-toggle" data-toggle="dropdown" data-delay="0" tabindex="$tab#set $tab += 1#">Manage <b class="caret"></b></a> <a href="$sbRoot/manage/" class="dropdown-toggle" data-toggle="dropdown" data-delay="0" tabindex="$tab#set $tab += 1#">Manage <b class="caret"></b></a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a href="$sbRoot/manage/" tabindex="$tab#set $tab += 1#"><i class="sgicon-massupdate"></i>Mass Update</a></li> <li><a href="$sbRoot/home/postprocess/" tabindex="$tab#set $tab += 1#"><i class="sgicon-postprocess"></i>Process Media</a></li>
<li class="divider"></li>
<li><a href="$sbRoot/manage/" tabindex="$tab#set $tab += 1#"><i class="sgicon-bulk-change"></i>Bulk Change</a></li>
<li><a href="$sbRoot/manage/backlogOverview/" tabindex="$tab#set $tab += 1#"><i class="sgicon-backlog"></i>Backlog Overview</a></li> <li><a href="$sbRoot/manage/backlogOverview/" tabindex="$tab#set $tab += 1#"><i class="sgicon-backlog"></i>Backlog Overview</a></li>
<li><a href="$sbRoot/manage/manageSearches/" tabindex="$tab#set $tab += 1#"><i class="sgicon-search"></i>Manage Searches</a></li> <li><a href="$sbRoot/manage/manageSearches/" tabindex="$tab#set $tab += 1#"><i class="sgicon-search"></i>Media Search</a></li>
<li><a href="$sbRoot/manage/showQueueOverview/" tabindex="$tab#set $tab += 1#"><i class="sgicon-showqueue"></i>Show Queue Overview</a></li> <li><a href="$sbRoot/manage/showProcesses/" tabindex="$tab#set $tab += 1#"><i class="sgicon-showqueue"></i>Show Processes</a></li>
<li><a href="$sbRoot/manage/episodeStatuses/" tabindex="$tab#set $tab += 1#"><i class="sgicon-episodestatus"></i>Episode Status Management</a></li> <li><a href="$sbRoot/manage/episodeStatuses/" tabindex="$tab#set $tab += 1#"><i class="sgicon-episodestatus"></i>Episode Status</a></li>
#if hasattr($sickbeard, 'USE_EMBY') and $sg_var('USE_EMBY') and $sg_str('EMBY_HOST') != '' and $sg_str('EMBY_APIKEY') != '' #if hasattr($sickbeard, 'USE_EMBY') and $sg_var('USE_EMBY') and $sg_str('EMBY_HOST') != '' and $sg_str('EMBY_APIKEY') != ''
<li><a href="$sbRoot/home/updateEMBY/" tabindex="$tab#set $tab += 1#"><i class="sgicon-emby"></i>Update Emby</a></li> <li><a href="$sbRoot/home/updateEMBY/" tabindex="$tab#set $tab += 1#"><i class="sgicon-emby"></i>Update Emby</a></li>
#end if #end if
@ -172,11 +175,13 @@
<li id="NAVconfig" class="dropdown"> <li id="NAVconfig" class="dropdown">
<a href="$sbRoot/config/" class="dropdown-toggle" data-toggle="dropdown" data-delay="0" tabindex="$tab#set $tab += 1#"><img src="$sbRoot/images/menu/system18.png" class="navbaricon hidden-xs" /><b class="caret hidden-xs"></b><span class="visible-xs">Config <b class="caret"></b></span></a> <a href="$sbRoot/config/" class="dropdown-toggle" data-toggle="dropdown" data-delay="0" tabindex="$tab#set $tab += 1#"><img src="$sbRoot/images/menu/system18.png" class="navbaricon hidden-xs" /><b class="caret hidden-xs"></b><span class="visible-xs">Config <b class="caret"></b></span></a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a href="$sbRoot/config/" tabindex="$tab#set $tab += 1#"><i class="sgicon-info"></i>Help &amp; Info</a></li> <li><a href="$sbRoot/config/" tabindex="$tab#set $tab += 1#"><i class="sgicon-info"></i>About</a></li>
<li class="divider"></li>
<li class="menu-item-noicon opacity60">Settings...</li>
<li><a href="$sbRoot/config/general/" tabindex="$tab#set $tab += 1#"><i class="sgicon-config"></i>General</a></li> <li><a href="$sbRoot/config/general/" tabindex="$tab#set $tab += 1#"><i class="sgicon-config"></i>General</a></li>
<li><a href="$sbRoot/config/search/" tabindex="$tab#set $tab += 1#"><i class="sgicon-search"></i>Search Settings</a></li> <li><a href="$sbRoot/config/providers/" tabindex="$tab#set $tab += 1#"><i class="sgicon-book"></i>Media Providers</a></li>
<li><a href="$sbRoot/config/providers/" tabindex="$tab#set $tab += 1#"><i class="sgicon-search"></i>Search Providers</a></li> <li><a href="$sbRoot/config/search/" tabindex="$tab#set $tab += 1#"><i class="sgicon-search"></i>Search</a></li>
<li><a href="$sbRoot/config/subtitles/" tabindex="$tab#set $tab += 1#"><i class="sgicon-subtitles"></i>Subtitles Settings</a></li> <li><a href="$sbRoot/config/subtitles/" tabindex="$tab#set $tab += 1#"><i class="sgicon-subtitles"></i>Subtitles</a></li>
<li><a href="$sbRoot/config/postProcessing/" tabindex="$tab#set $tab += 1#"><i class="sgicon-postprocess"></i>Post Processing</a></li> <li><a href="$sbRoot/config/postProcessing/" tabindex="$tab#set $tab += 1#"><i class="sgicon-postprocess"></i>Post Processing</a></li>
<li><a href="$sbRoot/config/notifications/" tabindex="$tab#set $tab += 1#"><i class="sgicon-notification"></i>Notifications</a></li> <li><a href="$sbRoot/config/notifications/" tabindex="$tab#set $tab += 1#"><i class="sgicon-notification"></i>Notifications</a></li>
<li><a href="$sbRoot/config/anime/" tabindex="$tab#set $tab += 1#"><i class="sgicon-anime"></i>Anime</a></li> <li><a href="$sbRoot/config/anime/" tabindex="$tab#set $tab += 1#"><i class="sgicon-anime"></i>Anime</a></li>

14
gui/slick/interfaces/default/manage.tmpl

@ -1,8 +1,8 @@
#import sickbeard #import sickbeard
#from sickbeard.common import * #from sickbeard.common import *
## ##
#set global $title = 'Mass Update' #set global $title = 'Bulk Change'
#set global $header = 'Mass Update' #set global $header = 'Bulk Change'
#set global $sbPath = '../..' #set global $sbPath = '../..'
#set global $topmenu = 'manage' #set global $topmenu = 'manage'
## ##
@ -62,7 +62,7 @@ $myShowList.sort(lambda x, y: cmp(x.name, y.name))
\$(document).ready(function() \$(document).ready(function()
{ {
\$('#massUpdateTable:has(tbody tr)').tablesorter({ \$('#bulkChangeTable:has(tbody tr)').tablesorter({
widgets: ['zebra'], widgets: ['zebra'],
sortList: [[1,0]], sortList: [[1,0]],
headers: { headers: {
@ -76,15 +76,15 @@ $myShowList.sort(lambda x, y: cmp(x.name, y.name))
}); });
//--> //-->
</script> </script>
<script type="text/javascript" src="$sbRoot/js/massUpdate.js?v=$sbPID"></script> <script type="text/javascript" src="$sbRoot/js/bulkChange.js?v=$sbPID"></script>
#if $varExists('header') #if $varExists('header')
<h1 class="header">$header</h1> <h1 class="header">$header</h1>
#else #else
<h1 class="title">$title</h1> <h1 class="title">$title</h1>
#end if #end if
<form name="massUpdateForm" method="post" action="massUpdate"> <form name="bulkChangeForm" method="post" action="bulkChange">
<table id="massUpdateTable" class="sickbeardTable tablesorter" cellspacing="1" border="0" cellpadding="0"> <table id="bulkChangeTable" class="sickbeardTable tablesorter" cellspacing="1" border="0" cellpadding="0">
<thead> <thead>
<tr> <tr>
<th class="col-checkbox">Edit<br /><input type="checkbox" class="bulkCheck" id="editCheck"></th> <th class="col-checkbox">Edit<br /><input type="checkbox" class="bulkCheck" id="editCheck"></th>
@ -117,7 +117,7 @@ $myShowList.sort(lambda x, y: cmp(x.name, y.name))
<tfoot> <tfoot>
<tr> <tr>
<td rowspan="1" colspan="2" class="align-center alt"><input class="btn pull-left" type="button" value="Edit Selected" id="submitMassEdit"></td> <td rowspan="1" colspan="2" class="align-center alt"><input class="btn pull-left" type="button" value="Edit Selected" id="submitMassEdit"></td>
<td rowspan="1" colspan="#echo $columns_total-2#" class="align-right alt"><input class="btn pull-right" type="button" value="Submit" id="submitMassUpdate"></td> <td rowspan="1" colspan="#echo $columns_total-2#" class="align-right alt"><input class="btn pull-right" type="button" value="Submit" id="submitBulkChange"></td>
</tr> </tr>
</tfoot> </tfoot>

6
gui/slick/interfaces/default/manage_manageSearches.tmpl

@ -1,7 +1,7 @@
#import sickbeard #import sickbeard
## ##
#set global $title = 'Manage Searches' #set global $title = 'Media Search'
#set global $header = 'Manage Searches' #set global $header = 'Media Search'
#set global $sbPath = '..' #set global $sbPath = '..'
#set global $topmenu = 'manage' #set global $topmenu = 'manage'
## ##
@ -47,8 +47,6 @@
#end if #end if
<br /> <br />
<h3>Version Check:</h3>
<a class="btn" href="$sbRoot/manage/manageSearches/forceVersionCheck"><i class="sgicon-updatecheck"></i> Force Check</a>
<br /><br /> <br /><br />
<h3>Search Queue:</h3> <h3>Search Queue:</h3>

8
gui/slick/interfaces/default/manage_showQueueOverview.tmpl → gui/slick/interfaces/default/manage_showProcesses.tmpl

@ -1,15 +1,15 @@
#import sickbeard #import sickbeard
#from sickbeard.helpers import findCertainShow #from sickbeard.helpers import findCertainShow
## ##
#set global $title = 'Show Queue Overview' #set global $title = 'Show Processes'
#set global $header = 'Show Queue Overview' #set global $header = 'Show Processes'
#set global $sbPath = '..' #set global $sbPath = '..'
#set global $topmenu = 'manage' #set global $topmenu = 'manage'
## ##
#import os.path #import os.path
#include $os.path.join($sickbeard.PROG_DIR, 'gui/slick/interfaces/default/inc_top.tmpl') #include $os.path.join($sickbeard.PROG_DIR, 'gui/slick/interfaces/default/inc_top.tmpl')
<script type="text/javascript" src="$sbRoot/js/manageShowQueueOverview.js?v=$sbPID" xmlns="http://www.w3.org/1999/html"></script> <script type="text/javascript" src="$sbRoot/js/manageShowProcesses.js?v=$sbPID" xmlns="http://www.w3.org/1999/html"></script>
<div id="content800"> <div id="content800">
#if $varExists('header') #if $varExists('header')
<h1 class="header">$header</h1> <h1 class="header">$header</h1>
@ -19,7 +19,7 @@
<div id="summary2" class="align-left"> <div id="summary2" class="align-left">
<h3> Daily Show Update:</h3> <h3> Daily Show Update:</h3>
<a id="showupdatebutton" class="btn#if $ShowUpdateRunning# disabled#end if#" href="$sbRoot/manage/showQueueOverview/forceShowUpdate"><i class="sgicon-play"></i> Force</a> <a id="showupdatebutton" class="btn#if $ShowUpdateRunning# disabled#end if#" href="$sbRoot/manage/showProcesses/forceShowUpdate"><i class="sgicon-play"></i> Force</a>
#if not $ShowUpdateRunning: #if not $ShowUpdateRunning:
Not in progress<br /> Not in progress<br />
#else: #else:

4
gui/slick/js/massUpdate.js → gui/slick/js/bulkChange.js

@ -18,7 +18,7 @@ $(document).ready(function() {
}); });
$('#submitMassUpdate').click(function() { $('#submitBulkChange').click(function() {
var updateArr = [], refreshArr = [], renameArr = [], subtitleArr = [], var updateArr = [], refreshArr = [], renameArr = [], subtitleArr = [],
deleteArr = [], removeArr = [], metadataArr = []; deleteArr = [], removeArr = [], metadataArr = [];
@ -69,7 +69,7 @@ $(document).ready(function() {
if (0 == updateArr.length + refreshArr.length + renameArr.length + subtitleArr.length + deleteArr.length + removeArr.length + metadataArr.length) if (0 == updateArr.length + refreshArr.length + renameArr.length + subtitleArr.length + deleteArr.length + removeArr.length + metadataArr.length)
return !1; return !1;
window.location.href = $.SickGear.Root + 'massUpdate?toUpdate=' + updateArr.join('|') + '&toRefresh=' + refreshArr.join('|') + '&toRename=' + renameArr.join('|') + '&toSubtitle=' + subtitleArr.join('|') + '&toDelete=' + deleteArr.join('|') + '&toRemove=' + removeArr.join('|') + '&toMetadata=' + metadataArr.join('|'); window.location.href = $.SickGear.Root + 'bulkChange?toUpdate=' + updateArr.join('|') + '&toRefresh=' + refreshArr.join('|') + '&toRename=' + renameArr.join('|') + '&toSubtitle=' + subtitleArr.join('|') + '&toDelete=' + deleteArr.join('|') + '&toRemove=' + removeArr.join('|') + '&toMetadata=' + metadataArr.join('|');
}); });

70
gui/slick/js/inc_top.js

@ -1,38 +1,40 @@
function initActions() { function initActions() {
$('#SubMenu a[href*="/home/restart/"]').addClass('btn restart').html('<i class="sgicon-restart"></i>Restart'); var menu$ = $('#SubMenu');
$('#SubMenu a[href*="/home/shutdown/"]').addClass('btn shutdown').html('<i class="sgicon-shutdown"></i>Shutdown'); menu$.find('a[href*="/home/restart/"]').addClass('btn restart').html('<i class="sgicon-restart"></i>Restart');
$('#SubMenu a[href*="/home/logout/"]').addClass('btn').html('<i class="sgicon-logout"></i>Logout'); menu$.find('a[href*="/home/shutdown/"]').addClass('btn shutdown').html('<i class="sgicon-shutdown"></i>Shutdown');
$('#SubMenu a:contains("Edit")').addClass('btn').html('<i class="sgicon-edit"></i>Edit'); menu$.find('a[href*="/home/logout/"]').addClass('btn').html('<i class="sgicon-logout"></i>Logout');
$('#SubMenu a:contains("Remove")').addClass('btn remove').html('<i class="sgicon-delete"></i>Remove'); menu$.find('a:contains("Edit")').addClass('btn').html('<i class="sgicon-edit"></i>Edit');
$('#SubMenu a:contains("Clear History")').addClass('btn clearhistory').html('<i class="sgicon-delete"></i>Clear History'); menu$.find('a:contains("Remove")').addClass('btn remove').html('<i class="sgicon-delete"></i>Remove');
$('#SubMenu a:contains("Trim History")').addClass('btn trimhistory').html('<i class="sgicon-trim"></i>Trim History'); menu$.find('a:contains("Clear History")').addClass('btn clearhistory').html('<i class="sgicon-delete"></i>Clear History');
$('#SubMenu a[href$="/errorlogs/downloadlog/"]').addClass('btn').html('<i class="sgicon-download"></i>Download Log'); menu$.find('a:contains("Trim History")').addClass('btn trimhistory').html('<i class="sgicon-trim"></i>Trim History');
$('#SubMenu a[href$="/errorlogs/clearerrors/"]').addClass('btn').html('<i class="sgicon-delete"></i>Clear Errors'); menu$.find('a[href$="/errorlogs/downloadlog/"]').addClass('btn').html('<i class="sgicon-download"></i>Download Log');
$('#SubMenu a:contains("Re-scan")').addClass('btn').html('<i class="sgicon-refresh"></i>Re-scan'); menu$.find('a[href$="/errorlogs/clearerrors/"]').addClass('btn').html('<i class="sgicon-delete"></i>Clear Errors');
$('#SubMenu a:contains("Backlog Overview")').addClass('btn').html('<i class="sgicon-backlog"></i>Backlog Overview'); menu$.find('a:contains("Re-scan")').addClass('btn').html('<i class="sgicon-refresh"></i>Re-scan');
$('#SubMenu a[href$="/home/updatePLEX/"]').addClass('btn').html('<i class="sgicon-plex"></i>Update PLEX'); menu$.find('a:contains("Backlog Overview")').addClass('btn').html('<i class="sgicon-backlog"></i>Backlog Overview');
$('#SubMenu a:contains("Force")').addClass('btn').html('<i class="sgicon-fullupdate"></i>Force Full Update'); menu$.find('a[href$="/home/updatePLEX/"]').addClass('btn').html('<i class="sgicon-plex"></i>Update PLEX');
$('#SubMenu a:contains("Rename")').addClass('btn').html('<i class="sgicon-rename"></i>Media Renamer'); menu$.find('a:contains("Force")').addClass('btn').html('<i class="sgicon-fullupdate"></i>Force Full Update');
$('#SubMenu a[href$="/config/subtitles/"]').addClass('btn').html('<i class="sgicon-subtitles"></i>Search Subtitles'); menu$.find('a:contains("Rename")').addClass('btn').html('<i class="sgicon-rename"></i>Media Renamer');
$('#SubMenu a[href*="/home/subtitleShow"]').addClass('btn').html('<i class="sgicon-subtitles"></i>Download Subtitles'); menu$.find('a[href$="/config/subtitles/"]').addClass('btn').html('<i class="sgicon-subtitles"></i>Subtitles');
$('#SubMenu a:contains("Anime")').addClass('btn').html('<i class="sgicon-anime"></i>Anime'); menu$.find('a[href*="/home/subtitleShow"]').addClass('btn').html('<i class="sgicon-subtitles"></i>Download Subtitles');
$('#SubMenu a:contains("Settings")').addClass('btn').html('<i class="sgicon-search"></i>Search Settings'); menu$.find('a:contains("Anime")').addClass('btn').html('<i class="sgicon-anime"></i>Anime');
$('#SubMenu a:contains("Provider")').addClass('btn').html('<i class="sgicon-search"></i>Search Providers'); menu$.find('a:contains("Search")').addClass('btn').html('<i class="sgicon-search"></i>Search');
$('#SubMenu a:contains("General")').addClass('btn').html('<i class="sgicon-config"></i>General'); menu$.find('a:contains("Provider")').addClass('btn').html('<i class="sgicon-book"></i>Media Providers');
$('#SubMenu a:contains("Episode Status")').addClass('btn').html('<i class="sgicon-episodestatus"></i>Episode Status Management'); menu$.find('a:contains("General")').addClass('btn').html('<i class="sgicon-config"></i>General');
$('#SubMenu a:contains("Missed Subtitle")').addClass('btn').html('<i class="sgicon-subtitles"></i>Missed Subtitles'); menu$.find('a:contains("Episode Status")').addClass('btn').html('<i class="sgicon-episodestatus"></i>Episode Status');
$('#SubMenu a:contains("Processing")').addClass('btn').html('<i class="sgicon-postprocess"></i>Post-Processing'); menu$.find('a:contains("Missed Subtitle")').addClass('btn').html('<i class="sgicon-subtitles"></i>Missed Subtitles');
$('#SubMenu a:contains("Manage Searches")').addClass('btn').html('<i class="sgicon-search"></i>Manage Searches'); menu$.find('a[href$="/config/postProcessing/"]').addClass('btn').html('<i class="sgicon-postprocess"></i>Post Processing');
$('#SubMenu a:contains("Manage Torrents")').addClass('btn').html('<i class="sgicon-bittorrent"></i>Manage Torrents'); menu$.find('a[href$="/postprocess/"]').addClass('btn').html('<i class="sgicon-postprocess"></i>Process Media');
$('#SubMenu a:contains("Show Queue Overview")').addClass('btn').html('<i class="sgicon-showqueue"></i>Show Queue Overview'); menu$.find('a:contains("Media Search")').addClass('btn').html('<i class="sgicon-search"></i>Media Search');
$('#SubMenu a[href$="/manage/failedDownloads/"]').addClass('btn').html('<i class="sgicon-failed"></i>Failed Downloads'); menu$.find('a:contains("Manage Torrents")').addClass('btn').html('<i class="sgicon-bittorrent"></i>Manage Torrents');
$('#SubMenu a:contains("Notification")').addClass('btn').html('<i class="sgicon-notification"></i>Notifications'); menu$.find('a:contains("Show Processes")').addClass('btn').html('<i class="sgicon-showqueue"></i>Show Processes');
$('#SubMenu a[href$="/home/updateEMBY/"]').addClass('btn').html('<i class="sgicon-emby"></i>Update Emby'); menu$.find('a[href$="/manage/failedDownloads/"]').addClass('btn').html('<i class="sgicon-failed"></i>Failed Downloads');
$('#SubMenu a[href$="/home/updateKODI/"]').addClass('btn').html('<i class="sgicon-kodi"></i>Update Kodi'); menu$.find('a:contains("Notification")').addClass('btn').html('<i class="sgicon-notification"></i>Notifications');
$('#SubMenu a[href$="/home/updateXBMC/"]').addClass('btn').html('<i class="sgicon-xbmc"></i>Update XBMC'); menu$.find('a[href$="/home/updateEMBY/"]').addClass('btn').html('<i class="sgicon-emby"></i>Update Emby');
$('#SubMenu a:contains("Update show in Emby")').addClass('btn').html('<i class="sgicon-emby"></i>Update show in Emby'); menu$.find('a[href$="/home/updateKODI/"]').addClass('btn').html('<i class="sgicon-kodi"></i>Update Kodi');
$('#SubMenu a:contains("Update show in Kodi")').addClass('btn').html('<i class="sgicon-kodi"></i>Update show in Kodi'); menu$.find('a[href$="/home/updateXBMC/"]').addClass('btn').html('<i class="sgicon-xbmc"></i>Update XBMC');
$('#SubMenu a:contains("Update show in XBMC")').addClass('btn').html('<i class="sgicon-xbmc"></i>Update show in XBMC'); menu$.find('a:contains("Update show in Emby")').addClass('btn').html('<i class="sgicon-emby"></i>Update show in Emby');
menu$.find('a:contains("Update show in Kodi")').addClass('btn').html('<i class="sgicon-kodi"></i>Update show in Kodi');
menu$.find('a:contains("Update show in XBMC")').addClass('btn').html('<i class="sgicon-xbmc"></i>Update show in XBMC');
} }
$(document).ready(function(){ $(document).ready(function(){

0
gui/slick/js/manageShowQueueOverview.js → gui/slick/js/manageShowProcesses.js

2
sickbeard/__init__.py

@ -559,7 +559,7 @@ def initialize(console_logging=True):
# Search Settings/Torrent search # Search Settings/Torrent search
global USE_TORRENTS, TORRENT_METHOD, TORRENT_DIR, TORRENT_HOST, TORRENT_USERNAME, TORRENT_PASSWORD, \ global USE_TORRENTS, TORRENT_METHOD, TORRENT_DIR, TORRENT_HOST, TORRENT_USERNAME, TORRENT_PASSWORD, \
TORRENT_LABEL, TORRENT_PATH, TORRENT_SEED_TIME, TORRENT_PAUSED, TORRENT_HIGH_BANDWIDTH, TORRENT_VERIFY_CERT TORRENT_LABEL, TORRENT_PATH, TORRENT_SEED_TIME, TORRENT_PAUSED, TORRENT_HIGH_BANDWIDTH, TORRENT_VERIFY_CERT
# Search Providers # Media Providers
global PROVIDER_ORDER, NEWZNAB_DATA, PROVIDER_HOMES global PROVIDER_ORDER, NEWZNAB_DATA, PROVIDER_HOMES
# Subtitles # Subtitles
global USE_SUBTITLES, SUBTITLES_LANGUAGES, SUBTITLES_DIR, SUBTITLES_FINDER_FREQUENCY, \ global USE_SUBTITLES, SUBTITLES_LANGUAGES, SUBTITLES_DIR, SUBTITLES_FINDER_FREQUENCY, \

2
sickbeard/image_cache.py

@ -324,7 +324,7 @@ class ImageCache:
count_urls = len(image_urls) count_urls = len(image_urls)
sources = [] sources = []
for image_url in image_urls or []: for image_url in image_urls or []:
img_data = helpers.getURL(image_url) img_data = helpers.getURL(image_url, nocache=True)
if None is img_data: if None is img_data:
continue continue
crc = '%05X' % (zlib.crc32(img_data) & 0xFFFFFFFF) crc = '%05X' % (zlib.crc32(img_data) & 0xFFFFFFFF)

2
sickbeard/ui.py

@ -122,7 +122,7 @@ class ProgressIndicator():
self.currentStatus = currentStatus self.currentStatus = currentStatus
class ProgressIndicators(): class ProgressIndicators():
_pi = {'massUpdate': [], _pi = {'bulkChange': [],
'massAdd': [], 'massAdd': [],
'dailyUpdate': [] 'dailyUpdate': []
} }

79
sickbeard/webserve.py

@ -617,13 +617,11 @@ class MainHandler(WebHandler):
class Home(MainHandler): class Home(MainHandler):
def HomeMenu(self): def HomeMenu(self):
return [ return [
{'title': 'Manual Post-Processing', 'path': 'home/postprocess/'}, {'title': 'Process Media', 'path': 'home/postprocess/'},
{'title': 'Update Emby', 'path': 'home/updateEMBY/', 'requires': self.haveEMBY}, {'title': 'Update Emby', 'path': 'home/updateEMBY/', 'requires': self.haveEMBY},
{'title': 'Update Kodi', 'path': 'home/updateKODI/', 'requires': self.haveKODI}, {'title': 'Update Kodi', 'path': 'home/updateKODI/', 'requires': self.haveKODI},
{'title': 'Update XBMC', 'path': 'home/updateXBMC/', 'requires': self.haveXBMC}, {'title': 'Update XBMC', 'path': 'home/updateXBMC/', 'requires': self.haveXBMC},
{'title': 'Update Plex', 'path': 'home/updatePLEX/', 'requires': self.havePLEX}, {'title': 'Update Plex', 'path': 'home/updatePLEX/', 'requires': self.havePLEX}
{'title': 'Restart', 'path': 'home/restart/?pid=' + str(sickbeard.PID), 'confirm': True},
{'title': 'Shutdown', 'path': 'home/shutdown/?pid=' + str(sickbeard.PID), 'confirm': True},
] ]
@staticmethod @staticmethod
@ -1372,9 +1370,9 @@ class Home(MainHandler):
del(ep_counts['totals'][0]) del(ep_counts['totals'][0])
ep_counts['eps_all'] = sum(ep_counts['totals'].values()) ep_counts['eps_all'] = sum(ep_counts['totals'].values())
ep_counts['eps_most'] = max(ep_counts['totals'].values()) ep_counts['eps_most'] = max(ep_counts['totals'].values() + [0])
all_seasons = sorted(ep_counts['totals'].keys(), reverse=True) all_seasons = sorted(ep_counts['totals'].keys(), reverse=True)
t.lowest_season, t.highest_season = all_seasons[-1], all_seasons[0] t.lowest_season, t.highest_season = all_seasons and (all_seasons[-1], all_seasons[0]) or (0, 0)
# 55 == seasons 1-10 and excludes the random season 0 # 55 == seasons 1-10 and excludes the random season 0
force_display_show_minimum = 30 < ep_counts['eps_most'] or 55 < sum(ep_counts['totals'].keys()) force_display_show_minimum = 30 < ep_counts['eps_most'] or 55 < sum(ep_counts['totals'].keys())
@ -2491,7 +2489,7 @@ class HomePostProcess(Home):
def index(self, *args, **kwargs): def index(self, *args, **kwargs):
t = PageTemplate(headers=self.request.headers, file='home_postprocess.tmpl') t = PageTemplate(headers=self.request.headers, file='home_postprocess.tmpl')
t.submenu = self.HomeMenu() t.submenu = [x for x in self.HomeMenu() if 'postprocess' not in x['path']]
return t.respond() return t.respond()
def processEpisode(self, dir=None, nzbName=None, jobName=None, quiet=None, process_method=None, force=None, def processEpisode(self, dir=None, nzbName=None, jobName=None, quiet=None, process_method=None, force=None,
@ -3653,24 +3651,24 @@ class NewHomeAddShows(Home):
class Manage(MainHandler): class Manage(MainHandler):
def ManageMenu(self): def ManageMenu(self, exclude='n/a'):
manageMenu = [ menu = [
{'title': 'Backlog Overview', 'path': 'manage/backlogOverview/'}, {'title': 'Backlog Overview', 'path': 'manage/backlogOverview/'},
{'title': 'Manage Searches', 'path': 'manage/manageSearches/'}, {'title': 'Media Search', 'path': 'manage/manageSearches/'},
{'title': 'Show Queue Overview', 'path': 'manage/showQueueOverview/'}, {'title': 'Show Processes', 'path': 'manage/showProcesses/'},
{'title': 'Episode Status Management', 'path': 'manage/episodeStatuses/'}, ] {'title': 'Episode Status', 'path': 'manage/episodeStatuses/'}, ]
if sickbeard.USE_SUBTITLES: if sickbeard.USE_SUBTITLES:
manageMenu.append({'title': 'Missed Subtitle Management', 'path': 'manage/subtitleMissed/'}) menu.append({'title': 'Missed Subtitle Management', 'path': 'manage/subtitleMissed/'})
if sickbeard.USE_FAILED_DOWNLOADS: if sickbeard.USE_FAILED_DOWNLOADS:
manageMenu.append({'title': 'Failed Downloads', 'path': 'manage/failedDownloads/'}) menu.append({'title': 'Failed Downloads', 'path': 'manage/failedDownloads/'})
return manageMenu return [x for x in menu if exclude not in x['title']]
def index(self, *args, **kwargs): def index(self, *args, **kwargs):
t = PageTemplate(headers=self.request.headers, file='manage.tmpl') t = PageTemplate(headers=self.request.headers, file='manage.tmpl')
t.submenu = self.ManageMenu() t.submenu = self.ManageMenu('Bulk')
return t.respond() return t.respond()
def showEpisodeStatuses(self, indexer_id, whichStatus): def showEpisodeStatuses(self, indexer_id, whichStatus):
@ -3708,7 +3706,7 @@ class Manage(MainHandler):
status_list = [] status_list = []
t = PageTemplate(headers=self.request.headers, file='manage_episodeStatuses.tmpl') t = PageTemplate(headers=self.request.headers, file='manage_episodeStatuses.tmpl')
t.submenu = self.ManageMenu() t.submenu = self.ManageMenu('Episode')
t.whichStatus = whichStatus t.whichStatus = whichStatus
my_db = db.DBConnection() my_db = db.DBConnection()
@ -3832,7 +3830,7 @@ class Manage(MainHandler):
def subtitleMissed(self, whichSubs=None): def subtitleMissed(self, whichSubs=None):
t = PageTemplate(headers=self.request.headers, file='manage_subtitleMissed.tmpl') t = PageTemplate(headers=self.request.headers, file='manage_subtitleMissed.tmpl')
t.submenu = self.ManageMenu() t.submenu = self.ManageMenu('Subtitle')
t.whichSubs = whichSubs t.whichSubs = whichSubs
if not whichSubs: if not whichSubs:
@ -3914,7 +3912,7 @@ class Manage(MainHandler):
def backlogOverview(self, *args, **kwargs): def backlogOverview(self, *args, **kwargs):
t = PageTemplate(headers=self.request.headers, file='manage_backlogOverview.tmpl') t = PageTemplate(headers=self.request.headers, file='manage_backlogOverview.tmpl')
t.submenu = self.ManageMenu() t.submenu = self.ManageMenu('Backlog')
showCounts = {} showCounts = {}
showCats = {} showCats = {}
@ -4205,7 +4203,7 @@ class Manage(MainHandler):
self.redirect('/manage/') self.redirect('/manage/')
def massUpdate(self, toUpdate=None, toRefresh=None, toRename=None, toDelete=None, toRemove=None, toMetadata=None, toSubtitle=None): def bulkChange(self, toUpdate=None, toRefresh=None, toRename=None, toDelete=None, toRemove=None, toMetadata=None, toSubtitle=None):
if toUpdate is not None: if toUpdate is not None:
toUpdate = toUpdate.split('|') toUpdate = toUpdate.split('|')
@ -4347,7 +4345,7 @@ class Manage(MainHandler):
t.over_limit = limit and len(sql_results) > limit t.over_limit = limit and len(sql_results) > limit
t.failedResults = t.over_limit and sql_results[0:-1] or sql_results t.failedResults = t.over_limit and sql_results[0:-1] or sql_results
t.limit = str(limit) t.limit = str(limit)
t.submenu = self.ManageMenu() t.submenu = self.ManageMenu('Failed')
return t.respond() return t.respond()
@ -4365,7 +4363,7 @@ class ManageSearches(Manage):
t.findPropersStatus = sickbeard.searchQueueScheduler.action.is_propersearch_in_progress() t.findPropersStatus = sickbeard.searchQueueScheduler.action.is_propersearch_in_progress()
t.queueLength = sickbeard.searchQueueScheduler.action.queue_length() t.queueLength = sickbeard.searchQueueScheduler.action.queue_length()
t.submenu = self.ManageMenu() t.submenu = self.ManageMenu('Search')
return t.respond() return t.respond()
@ -4418,14 +4416,15 @@ class ManageSearches(Manage):
time.sleep(5) time.sleep(5)
self.redirect('/manage/manageSearches/') self.redirect('/manage/manageSearches/')
class showQueueOverview(Manage):
class showProcesses(Manage):
def index(self, *args, **kwargs): def index(self, *args, **kwargs):
t = PageTemplate(headers=self.request.headers, file='manage_showQueueOverview.tmpl') t = PageTemplate(headers=self.request.headers, file='manage_showProcesses.tmpl')
t.queueLength = sickbeard.showQueueScheduler.action.queue_length() t.queueLength = sickbeard.showQueueScheduler.action.queue_length()
t.showList = sickbeard.showList t.showList = sickbeard.showList
t.ShowUpdateRunning = sickbeard.showQueueScheduler.action.isShowUpdateRunning() or sickbeard.showUpdateScheduler.action.amActive t.ShowUpdateRunning = sickbeard.showQueueScheduler.action.isShowUpdateRunning() or sickbeard.showUpdateScheduler.action.amActive
t.submenu = self.ManageMenu() t.submenu = self.ManageMenu('Processes')
return t.respond() return t.respond()
@ -4437,7 +4436,8 @@ class showQueueOverview(Manage):
ui.notifications.message('Forced Show Update started') ui.notifications.message('Forced Show Update started')
time.sleep(5) time.sleep(5)
self.redirect('/manage/showQueueOverview/') self.redirect('/manage/showProcesses/')
class History(MainHandler): class History(MainHandler):
def index(self, limit=100): def index(self, limit=100):
@ -4530,20 +4530,21 @@ class History(MainHandler):
class Config(MainHandler): class Config(MainHandler):
@staticmethod @staticmethod
def ConfigMenu(): def ConfigMenu(exclude='n/a'):
return [ menu = [
{'title': 'General', 'path': 'config/general/'}, {'title': 'General', 'path': 'config/general/'},
{'title': 'Search Settings', 'path': 'config/search/'}, {'title': 'Media Providers', 'path': 'config/providers/'},
{'title': 'Search Providers', 'path': 'config/providers/'}, {'title': 'Search', 'path': 'config/search/'},
{'title': 'Subtitles Settings', 'path': 'config/subtitles/'}, {'title': 'Subtitles', 'path': 'config/subtitles/'},
{'title': 'Post Processing', 'path': 'config/postProcessing/'}, {'title': 'Post Processing', 'path': 'config/postProcessing/'},
{'title': 'Notifications', 'path': 'config/notifications/'}, {'title': 'Notifications', 'path': 'config/notifications/'},
{'title': 'Anime', 'path': 'config/anime/'}, {'title': 'Anime', 'path': 'config/anime/'},
] ]
return [x for x in menu if exclude not in x['title']]
def index(self, *args, **kwargs): def index(self, *args, **kwargs):
t = PageTemplate(headers=self.request.headers, file='config.tmpl') t = PageTemplate(headers=self.request.headers, file='config.tmpl')
t.submenu = self.ConfigMenu t.submenu = self.ConfigMenu()
return t.respond() return t.respond()
@ -4552,7 +4553,7 @@ class ConfigGeneral(Config):
def index(self, *args, **kwargs): def index(self, *args, **kwargs):
t = PageTemplate(headers=self.request.headers, file='config_general.tmpl') t = PageTemplate(headers=self.request.headers, file='config_general.tmpl')
t.submenu = self.ConfigMenu t.submenu = self.ConfigMenu('General')
t.show_tags = ', '.join(sickbeard.SHOW_TAGS) t.show_tags = ', '.join(sickbeard.SHOW_TAGS)
t.indexers = dict([(i, sickbeard.indexerApi().indexers[i]) for i in sickbeard.indexerApi().indexers t.indexers = dict([(i, sickbeard.indexerApi().indexers[i]) for i in sickbeard.indexerApi().indexers
if sickbeard.indexerApi(i).config['active']]) if sickbeard.indexerApi(i).config['active']])
@ -4748,7 +4749,7 @@ class ConfigSearch(Config):
def index(self, *args, **kwargs): def index(self, *args, **kwargs):
t = PageTemplate(headers=self.request.headers, file='config_search.tmpl') t = PageTemplate(headers=self.request.headers, file='config_search.tmpl')
t.submenu = self.ConfigMenu t.submenu = self.ConfigMenu('Search')
t.using_rls_ignore_words = [(show.indexerid, show.name) t.using_rls_ignore_words = [(show.indexerid, show.name)
for show in sickbeard.showList if show.rls_ignore_words and for show in sickbeard.showList if show.rls_ignore_words and
show.rls_ignore_words.strip()] show.rls_ignore_words.strip()]
@ -4871,7 +4872,7 @@ class ConfigPostProcessing(Config):
def index(self, *args, **kwargs): def index(self, *args, **kwargs):
t = PageTemplate(headers=self.request.headers, file='config_postProcessing.tmpl') t = PageTemplate(headers=self.request.headers, file='config_postProcessing.tmpl')
t.submenu = self.ConfigMenu t.submenu = self.ConfigMenu('Processing')
return t.respond() return t.respond()
def savePostProcessing(self, naming_pattern=None, naming_multi_ep=None, def savePostProcessing(self, naming_pattern=None, naming_multi_ep=None,
@ -5067,7 +5068,7 @@ class ConfigPostProcessing(Config):
class ConfigProviders(Config): class ConfigProviders(Config):
def index(self, *args, **kwargs): def index(self, *args, **kwargs):
t = PageTemplate(headers=self.request.headers, file='config_providers.tmpl') t = PageTemplate(headers=self.request.headers, file='config_providers.tmpl')
t.submenu = self.ConfigMenu t.submenu = self.ConfigMenu('Providers')
return t.respond() return t.respond()
def canAddNewznabProvider(self, name): def canAddNewznabProvider(self, name):
@ -5407,7 +5408,7 @@ class ConfigNotifications(Config):
def index(self, *args, **kwargs): def index(self, *args, **kwargs):
t = PageTemplate(headers=self.request.headers, file='config_notifications.tmpl') t = PageTemplate(headers=self.request.headers, file='config_notifications.tmpl')
t.submenu = self.ConfigMenu t.submenu = self.ConfigMenu('Notifications')
t.root_dirs = [] t.root_dirs = []
if sickbeard.ROOT_DIRS: if sickbeard.ROOT_DIRS:
root_pieces = sickbeard.ROOT_DIRS.split('|') root_pieces = sickbeard.ROOT_DIRS.split('|')
@ -5668,7 +5669,7 @@ class ConfigNotifications(Config):
class ConfigSubtitles(Config): class ConfigSubtitles(Config):
def index(self, *args, **kwargs): def index(self, *args, **kwargs):
t = PageTemplate(headers=self.request.headers, file='config_subtitles.tmpl') t = PageTemplate(headers=self.request.headers, file='config_subtitles.tmpl')
t.submenu = self.ConfigMenu t.submenu = self.ConfigMenu('Subtitle')
return t.respond() return t.respond()
def saveSubtitles(self, use_subtitles=None, subtitles_plugins=None, subtitles_languages=None, subtitles_dir=None, def saveSubtitles(self, use_subtitles=None, subtitles_plugins=None, subtitles_languages=None, subtitles_dir=None,
@ -5726,7 +5727,7 @@ class ConfigAnime(Config):
def index(self, *args, **kwargs): def index(self, *args, **kwargs):
t = PageTemplate(headers=self.request.headers, file='config_anime.tmpl') t = PageTemplate(headers=self.request.headers, file='config_anime.tmpl')
t.submenu = self.ConfigMenu t.submenu = self.ConfigMenu('Anime')
return t.respond() return t.respond()
def saveAnime(self, use_anidb=None, anidb_username=None, anidb_password=None, anidb_use_mylist=None, def saveAnime(self, use_anidb=None, anidb_username=None, anidb_password=None, anidb_use_mylist=None,

2
sickbeard/webserveInit.py

@ -84,7 +84,7 @@ class WebServer(threading.Thread):
(r'%s/home/postprocess(/?.*)' % self.options['web_root'], webserve.HomePostProcess), (r'%s/home/postprocess(/?.*)' % self.options['web_root'], webserve.HomePostProcess),
(r'%s/home(/?.*)' % self.options['web_root'], webserve.Home), (r'%s/home(/?.*)' % self.options['web_root'], webserve.Home),
(r'%s/manage/manageSearches(/?.*)' % self.options['web_root'], webserve.ManageSearches), (r'%s/manage/manageSearches(/?.*)' % self.options['web_root'], webserve.ManageSearches),
(r'%s/manage/showQueueOverview(/?.*)' % self.options['web_root'], webserve.showQueueOverview), (r'%s/manage/showProcesses(/?.*)' % self.options['web_root'], webserve.showProcesses),
(r'%s/manage/(/?.*)' % self.options['web_root'], webserve.Manage), (r'%s/manage/(/?.*)' % self.options['web_root'], webserve.Manage),
(r'%s/ui(/?.*)' % self.options['web_root'], webserve.UI), (r'%s/ui(/?.*)' % self.options['web_root'], webserve.UI),
(r'%s/browser(/?.*)' % self.options['web_root'], webserve.WebFileBrowser), (r'%s/browser(/?.*)' % self.options['web_root'], webserve.WebFileBrowser),

Loading…
Cancel
Save