Вопрос здесь в том, существует ли уже что-то подобное, а если нет, то есть ли лучший способ добиться этого, чем тот, который я описываю ниже.
Мне нужно разрешить произвольному участнику (пользователю, группе, администратору сайта) добавлять Event Sink
s (например, адреса электронной почты, URL-адреса Webhook , и т.д.) в систему (через веб-интерфейс) и для каждого указать, какие виды <Event Source, Event Type>
ему следует отправлять. Поскольку я делаю это для ReviewBoard, приведу конкретный пример с гипотетической реализацией:
- Джон создает новый
event_sink
(веб-перехватчик), идентифицируемыйpostbin1
; - Джон указывает, что
postbin1
будет получать события типаpublish
вReviewRequest
s (уровень классаsubscription
--source_id
не указан); - Когда создается новый
review_request
,Event Manager
перечисляет (посредством JOIN сsubscriptions
) всехevent_sinks
, заинтересованных вReviewRequest
, и создает (на уровне экземпляра)subscription
, связывая их как слушателя с их конкретнымevent_type
(имя сигнала django) интерес и к конкретномуreview_request
; - Когда этот
review_request
публикуется,Event Manager
(кто слушает сигналpublish
) перечисляет всехevent_sinks
, заинтересованных в этом экземпляреreview_request
и сигналеpublish
, и отправляет параметры сигнала их методуsink
. - Веб-перехватчик
event_sink
упорядочивает данные, как ему удобно, и отправляет их по своему URL-адресу.
Вот схема, о которой я подумал: альтернативный текст http://bayimg.com/image/aadgoaacd.jpg< /а>
Я собираюсь начать реализовывать это сам, но я просто хочу убедиться, что не изобретаю велосипед. В гугле ничего не нашел. Готовые к использованию имена пакетов, имена пакетов на полпути, которые помогут мне, и / или критика моего подхода «сделай сам» приветствуются.