Browse Source

Merge pull request #5192 from k0ekk0ek/show_switch

[TV] Make show support configurable
pull/5216/head
Ruud Burger 10 years ago
parent
commit
cb98b06fbd
  1. 44
      couchpotato/core/media/show/__init__.py
  2. 33
      couchpotato/core/media/show/_base/static/1_wanted.js
  3. 3
      couchpotato/core/media/show/providers/info/trakt.py
  4. 9
      couchpotato/static/scripts/block/navigation.js

44
couchpotato/core/media/show/__init__.py

@ -1,5 +1,23 @@
from couchpotato.core.event import addEvent, fireEvent
from couchpotato.core.media import MediaBase
autoload = 'ShowToggler'
class ShowToggler(MediaBase):
"""
TV Show support is EXPERIMENTAL and disabled by default. The "Shows" item
must only be visible if the user enabled it. This class notifies the
frontend if the shows.enabled configuration item changed.
FIXME: remove after TV Show support is considered stable.
"""
def __init__(self):
addEvent('setting.save.shows.enabled.after', self.toggleTab)
def toggleTab(self):
fireEvent('notify.frontend', type = 'shows.enabled', data = self.conf('enabled', section='shows'))
class ShowTypeBase(MediaBase):
_type = 'show'
@ -9,3 +27,29 @@ class ShowTypeBase(MediaBase):
return '%s.%s' % (self._type, self.type)
return self._type
config = [{
'name': 'shows',
'groups': [
{
'tab': 'general',
'name': 'Shows',
'label': 'Shows',
'description': 'Enable EXPERIMENTAL TV Show support',
'options': [
{
'name': 'enabled',
'default': False,
'type': 'enabler',
},
{
'name': 'prefer_episode_releases',
'default': False,
'type': 'bool',
'label': 'Episode releases',
'description': 'Prefer episode releases over season packs',
},
],
},
],
}]

33
couchpotato/core/media/show/_base/static/1_wanted.js

@ -3,8 +3,39 @@ Page.Shows = new Class({
Extends: PageBase,
name: 'shows',
title: 'Gimmy gimmy gimmy!',
title: 'List of TV Shows subscribed to',
folder_browser: null,
has_tab: false,
toggleShows: function(arg) {
var self = this;
var nav = App.getBlock('navigation');
if ((typeof arg === 'object' && arg.data === true) || arg === true) {
self.tab = nav.addTab(self.name, {
'href': App.createUrl(self.name),
'title': self.title,
'text': self.name.capitalize()
});
self.has_tab = true;
} else {
self.has_tab = false;
self.tab = null;
nav.removeTab('shows');
}
},
load: function() {
var self = this;
Api.request('settings', {
'onComplete': function(json){
self.toggleShows(json.values.shows.enabled);
}
});
App.on('shows.enabled', self.toggleShows.bind(self));
},
indexAction: function(){
var self = this;

3
couchpotato/core/media/show/providers/info/trakt.py

@ -15,7 +15,8 @@ class Trakt(ShowProvider, TraktBase):
addEvent('show.search', self.search, priority = 1)
def search(self, q, limit = 12):
if self.isDisabled():
if self.isDisabled() or not self.conf('enabled', section='shows'):
log.debug('Not searching for show: %s', q)
return False
# Search

9
couchpotato/static/scripts/block/navigation.js

@ -57,6 +57,15 @@ Block.Navigation = new Class({
},
removeTab: function(name) {
var self = this;
var element = self.nav.getElement('li.tab_'+name);
if (element) {
element.dispose()
}
},
toggleMenu: function(){
var self = this,
body = $(document.body),

Loading…
Cancel
Save