Настраиваемый пользователем механизм сигнализации в Django

Вопрос здесь в том, существует ли уже что-то подобное, а если нет, то есть ли лучший способ добиться этого, чем тот, который я описываю ниже.

Мне нужно разрешить произвольному участнику (пользователю, группе, администратору сайта) добавлять Event Sinks (например, адреса электронной почты, URL-адреса Webhook , и т.д.) в систему (через веб-интерфейс) и для каждого указать, какие виды <Event Source, Event Type> ему следует отправлять. Поскольку я делаю это для ReviewBoard, приведу конкретный пример с гипотетической реализацией:

  1. Джон создает новый event_sink (веб-перехватчик), идентифицируемый postbin1;
  2. Джон указывает, что postbin1 будет получать события типа publish в ReviewRequests (уровень класса subscription -- source_id не указан);
  3. Когда создается новый review_request, Event Manager перечисляет (посредством JOIN с subscriptions) всех event_sinks, заинтересованных в ReviewRequest, и создает (на уровне экземпляра) subscription, связывая их как слушателя с их конкретным event_type (имя сигнала django) интерес и к конкретному review_request;
  4. Когда этот review_request публикуется, Event Manager (кто слушает сигнал publish) перечисляет всех event_sinks, заинтересованных в этом экземпляре review_request и сигнале publish, и отправляет параметры сигнала их методу sink.
  5. Веб-перехватчик event_sink упорядочивает данные, как ему удобно, и отправляет их по своему URL-адресу.

Вот схема, о которой я подумал: альтернативный текст http://bayimg.com/image/aadgoaacd.jpg< /а>

Я собираюсь начать реализовывать это сам, но я просто хочу убедиться, что не изобретаю велосипед. В гугле ничего не нашел. Готовые к использованию имена пакетов, имена пакетов на полпути, которые помогут мне, и / или критика моего подхода «сделай сам» приветствуются.


person agentofuser    schedule 13.08.2009    source источник


Ответы (1)


django-notification Джеймса Таубера поможет вам в этом. Я бы хотел, чтобы это приложение стало зрелым, если вы готовы работать с этой кодовой базой, это было бы здорово.

person Adam Nelson    schedule 27.08.2009