Source code for django_webix_sender.send_methods.storage.send_utils

# -*- coding: utf-8 -*-

from typing import Dict, List

import six
from django.conf import settings


[docs]def send(recipients: Dict[str, List[int]], subject: str, body: str, message_sent): """ Send email :param recipients: Dict {'<app_label>.<model>': [<id>, <id>]} :param subject: Subject of message :param body: Body of message :param message_sent: MessageSent instance :return: MessageSent instance """ from django_webix_sender.models import MessageSent, MessageRecipient if 'django_webix_sender' not in settings.INSTALLED_APPS: raise Exception("Django Webix Sender is not in INSTALLED_APPS") # Controllo correttezza parametri if not isinstance(recipients, dict) or \ 'valids' not in recipients or not isinstance(recipients['valids'], list) or \ 'duplicates' not in recipients or not isinstance(recipients['duplicates'], list) or \ 'invalids' not in recipients or not isinstance(recipients['invalids'], list): raise Exception("`recipients` must be a dict") if not isinstance(subject, six.string_types): raise Exception("`subject` must be a string") if not isinstance(body, six.string_types): raise Exception("`body` must be a string") if not isinstance(message_sent, MessageSent): raise Exception("`message_sent` must be MessageSent instance") # Per ogni istanza di destinatario ciclo for recipient, recipient_address in recipients['valids']: MessageRecipient.objects.create( message_sent=message_sent, recipient=recipient, sent_number=1, status='success', recipient_address=recipient_address, ) # Salvo i destinatari non validi for recipient, recipient_address in recipients['invalids']: MessageRecipient.objects.create( message_sent=message_sent, recipient=recipient, sent_number=0, status='invalid', recipient_address=recipient_address, ) # Salvo i destinatari duplicati for recipient, recipient_address in recipients['duplicates']: MessageRecipient.objects.create( message_sent=message_sent, recipient=recipient, sent_number=0, status='duplicate', recipient_address=recipient_address, ) return message_sent