flexget.plugins.module_disable_builtins
Covered: 35 lines
Missed: 4 lines
Skipped 13 lines
Percent: 89 %
 1
import logging
 2
from flexget import plugin
 3
from flexget.plugin import *
 5
log = logging.getLogger('builtins')
 8
class PluginDisableBuiltins(object):
 9
    """
10
        Disables all builtin plugins from a feed.
11
    """
13
    def __init__(self):
14
        self.disabled = []
16
    def validator(self):
17
        from flexget import validator
19
        return validator.factory('any')
21
    def debug(self):
22
        for name, info in plugin.plugins.iteritems():
23
            if not info.builtin:
24
                continue
25
            log.debug('Builtin plugin: %s' % (name))
27
    def on_feed_start(self, feed):
28
        for name, info in plugin.plugins.iteritems():
29
            if info.builtin:
30
                if isinstance(feed.config['disable_builtins'], list):
31
                    if info.name in feed.config['disable_builtins']:
32
                        info.builtin = False
33
                        self.disabled.append(name)
34
                else: 
36
                    info.builtin = False
37
                    self.disabled.append(name)
38
        log.debug('Disabled builtin plugin %s' % ', '.join(self.disabled))
40
    @priority(-255)
41
    def on_feed_exit(self, feed):
42
        names = []
43
        for name in self.disabled:
44
            names.append(name)
45
            plugin.plugins[name].builtin = True
46
        self.disabled = []
47
        log.debug('Enabled builtin plugins %s' % ', '.join(names))
49
    on_feed_abort = on_feed_exit
51
plugin.register_plugin(PluginDisableBuiltins, 'disable_builtins')