Die Frage ist, ob so etwas bereits existiert oder, wenn nicht, ob es einen besseren Weg, um es als das zu erreichen, was ich unten beschreibe.Benutzer konfigurierbare Signal-Mechanismus in Django
Ich brauche einen beliebigen Auftraggeber zu ermöglichen (Benutzer, Gruppe, Site Admin) Event Sink
s hinzuzufügen (wie E-Mail-Adressen, Webhook URLs, etc.) an das System (über das Webinterface) und, für jeden, Geben Sie an, welche Arten von <Event Source, Event Type>
an sie gesendet werden sollen. Da ich für ReviewBoard dies zu tun bin, werde ich ein konkretes Beispiel mit einer hypothetischen Umsetzung geben:
- John erstellt eine neue
event_sink
(eine Webhook), identifiziert durchpostbin1
; - John gibt an, dass
postbin1
Ereignisse des Typspublish
aufReviewRequest
s empfangen wird (eine Klasse-Ebenesubscription
- diesource_id
ist nicht näher bezeichnet); dieEvent Manager
, Listen (durch einen JOIN mitsubscriptions
) alleevent_sinks
interessiert inReviewRequest
s - Wenn ein neuer
review_request
erstellt wird, und erstellt eine (Instanzebene)subscription
sie als Zuhörer auf ihre besonderenevent_type
(der Name einer Bindung Djangosignal) von Interesse und zu dem spezifischenreview_request
; - Wenn die
review_request
veröffentlicht wird, dieEvent Manager
(der daspublish
Signal lauscht) listet allevent_sinks
interessiert in dieserreview_request
Instanz und daspublish
Signal und sendet die Signalparameter auf ihresink
Methode. - Der Webhook
event_sink
marshallt die Daten jedoch gefällt es und sendet es an seine URL.
Dies ist das Schema ich gedacht: alt text http://bayimg.com/image/aadgoaacd.jpg
ich bin dies selbst zu Beginn der Umsetzung, aber ich möchte nur sicherstellen, ich bin neu zu erfinden das Rad nicht. Konnte bei Google nichts finden. Gebrauchsfertige Paketnamen, halbe Paketnamen, die mir helfen, und/oder Kritik an meinem DIY-Ansatz sind willkommen.