コード例 #1
0
from durian.models import Listener
from django import forms
from durian.forms import HookConfigForm
from durian.event import Hook
from durian.registry import hooks


# SIMPLE HOOK 

class MyHook(Hook):
    name = "myhook"
hooks.register(MyHook())


def install_listener():
    l = Listener(url="http://localhost:8000/durian/debug/",
             hook=MyHook.name)
    l.save()

# HOOK SENT EVERY TIME USER "ask" COMMITS A CHANGE

# This form is needed to add a listener, so the correct username/password
# is sent when sending updates to twitter.

class TwitterCommitHookConfigForm(HookConfigForm):
    username = forms.CharField(label=_(u"username"))
    password = forms.CharField(label=_(u"password"), required=True, 
                               widget=forms.PasswordInput())
    digest = forms.BooleanField(widget=forms.CheckboxInput())
    active = forms.BooleanField(widget=forms.CheckboxInput())
コード例 #2
0
ファイル: models.py プロジェクト: lordoftheflies/durian
from django.db import models
from django.db.models import signals
from django.utils.translation import ugettext_lazy as _
from durian.event import ModelHook
from durian.registry import hooks


class Person(models.Model):
    name = models.CharField(_(u"name"), blank=False, max_length=200)
    address = models.CharField(_(u"address"), max_length=200)
    secret = models.CharField(_(u"secret"), max_length=200)


class PersonHook(ModelHook):
    name = "person"
    model = Person
    signal = signals.post_save
    provides_args = ["name", "address"]
    async = False
hooks.register(PersonHook)
コード例 #3
0
ファイル: test_hooks.py プロジェクト: lordoftheflies/durian

class TestWebhookSignal(WebhookSignal):
    name = "__durian__.unittest.TestWebhookSignal"
    ignore_result = True
    scratchpad = {}

    def run(self, url, payload, **kwargs):
        self.__class__.scratchpad[url] = payload


testhook = Hook(name="__durian__.unittest.testhook",
                provides_args=["name", "address", "phone", "email"],
                task_cls=TestWebhookSignal,
                async=False)
hooks.register(testhook)

testmhook = ModelHook(model=User, signal=signals.post_save,
                name="__durian__.unittest.testmhook",
                provides_args=["username", "email", "first_name",
                               "last_name"],
                task_cls=TestWebhookSignal,
                async=False)
hooks.register(testmhook)


class TestHook(unittest.TestCase):

    def test_in_registry(self):
        in_reg = hooks.get("__durian__.unittest.testhook")
        self.assertTrue(in_reg)