Browse Source

[TV] Make show support configurable

pull/5192/head
Jeroen Koekkoek 10 years ago
parent
commit
a85f35c33b
  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. 11
      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

11
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),
@ -89,4 +98,4 @@ Block.Navigation = new Class({
}
});
});

Loading…
Cancel
Save