def send_sms_messages_bulk(msg_data, replace_names=False):
    from orders_manager.models import Client, SmsDeliveryMessage
    from orders_manager.sms_delivery_service import SmsDeliveryService
    from orders_manager.transliterate_service import (transliterate_message,
                                                      need_transliteration)

    clients = Client.objects.filter(
        pk__in=[i.get('client_id') for i in msg_data]).all()
    messages = []
    for client in clients:
        for item in msg_data:
            if item.get('client_id') == client.id:
                client_name = (transliterate_message(client.name)
                               if need_transliteration() else client.name)
                msg = (item.get('message').format(client_name=client_name)
                       if replace_names else item.get('message'))
                messages.append({'recipient': client.phone, 'message': msg})

    sms_service = SmsDeliveryService()
    sms_service.send_messages(messages)
    sms_ids = [i.get('id') for i in msg_data if i.get('id')]
    if sms_ids:
        for sms_model in SmsDeliveryMessage.objects.filter(pk__in=sms_ids):
            sms_model.is_checked = True
            sms_model.is_sent = True
            sms_model.save()
    return sms_ids
Exemple #2
0
def send_sms_messages_bulk(msg_data, replace_names=False):
    from orders_manager.models import Client, SmsDeliveryMessage
    from orders_manager.sms_delivery_service import SmsDeliveryService
    from orders_manager.transliterate_service import (transliterate_message,
        need_transliteration)

    clients = Client.objects.filter(
        pk__in=[i.get('client_id') for i in msg_data]).all()
    messages = []
    for client in clients:
        for item in msg_data:
            if item.get('client_id') == client.id:
                client_name = (transliterate_message(client.name)
                               if need_transliteration() else client.name)
                msg = (item.get('message').format(client_name=client_name)
                       if replace_names else item.get('message'))
                messages.append({
                    'recipient': client.phone,
                    'message': msg
                })

    sms_service = SmsDeliveryService()
    sms_service.send_messages(messages)
    sms_ids = [i.get('id') for i in msg_data if i.get('id')]
    if sms_ids:
        for sms_model in SmsDeliveryMessage.objects.filter(pk__in=sms_ids):
            sms_model.is_checked = True
            sms_model.is_sent = True
            sms_model.save()
    return sms_ids