E-Mail-Versand (Communication Flow)¶
Der Versand von Kommunikationsvorgängen erfolgt in mehreren Schritten.
Ablauf¶
1. Event-Auslösung¶
Ein Ereignis (z. B. Bestellabschluss) triggert einen
CommunicationEventType. Beispiele:
ORDER_PLACED– Bestellung aufgegebenREGISTRATION– BenutzerregistrierungUSERADDRESS_CREATED– Neue Adresse angelegt
2. Dispatcher¶
Der CustomDispatcher (apps.communication.utils) erbt von
oscar.apps.customer.utils.Dispatcher und überschreibt:
send_custom()– Sendet Kommunikationsvorgänge mit angepasstem Empfängerkreissend_event_type()– Ermittelt zuständige OUs und sendet Kopien
3. OU-Routing¶
OrganizationUnit.send_all() wird aufgerufen und:
- Ermittelt per
get_responsible_ous()alle zuständigen OUs - Sendet pro OU die E-Mail an Mitglieder und E-Mail-Empfänger
- Dispatcht optionale API-Requests (
ou.dispatch_api_requests())
4. E-Mail-Erstellung¶
OrganizationUnit.get_email() erstellt ein EmailMessage-Objekt mit:
- Empfängern aus
get_email_recipients()(Mitglieder + OU-weite Empfänger) - Betreff und Body aus den Message-Templates des Event-Typs
- Optionalen Anhängen aus
get_attachments()
Wichtige Dateien¶
| Datei | Funktion |
|---|---|
apps/communication/utils.py |
CustomDispatcher, send_custom(), send_event_type() |
user/models.py |
OrganizationUnit mit send_all(), send(), get_email() |
apps/communication/models.py |
CommunicationEventType, EmailRecipient |
apps/checkout/mixins.py |
handle_successful_order() → send_custom_emails() |