Esempio n. 1
0
from turbion.bits.utils import spot

class FilterManager(spot.Manager):
    def load(self):
        from turbion.bits.utils.loading import get_sub_modules
        get_sub_modules("turbion.bits.markup", "filters")

class BaseFilter(object):
    def is_safe(self):
        return True

    def to_html(self, value):
        raise NotImplementedError

Filter = spot.create(BaseFilter, manager=FilterManager)
Esempio n. 2
0
class FilterManager(spot.Manager):
    def load(self):
        for filter_name in settings.TURBION_ANTISPAM_FILTERS:
            mod = None
            try:
                mod = loading.get_module('turbion.bits.antispam.filters', filter_name)
            except loading.NoModuleError:
                if '.' in filter_name:
                    try:
                        mod = loading.get_module(filter_name.rsplit('.', 1))
                    except loading.NoModuleError:
                        pass
            if not mod:
                raise ValueError("Cannot load filter '%s'" % filter_name)

Filter = spot.create(BaseFilter, manager=FilterManager, cache=False)

def process_form_init(request, form, parent=None):
    for name, filter in Filter.manager.all():
        try:
            filter.process_form_init(request, form, parent)
        except NotImplementedError:
            pass

def process_form_submit(request, form, child, parent=None):
    decisions = []
    for name, filter in Filter.manager.all():
        try:
            filter_decision = filter.process_form_submit(request, form, child, parent)

            if filter_decision:
Esempio n. 3
0
from django.test import TestCase

from turbion.bits.utils import spot

class BasePlugin(object):
    def hello(self):
        return 'Hello from %s' % self.name

class PluginManager(spot.Manager):
    def load(self):
        pass

Plugin = spot.create(BasePlugin, manager=PluginManager, cache=False)

class PlugA(Plugin):
    name = 'plug_a'

class PlugB(Plugin):
    pass

class SpotTest(TestCase):
    def setUp(self):
        pass

    def test_all_plugins(self):
        self.assertEqual(
            sorted([name for name, obj in Plugin.manager.all()]),
            ['plug_a', 'plug_b']
        )

    def test_get_plugin(self):