diff --git a/addons/mass_mailing_sms/models/mailing_mailing.py b/addons/mass_mailing_sms/models/mailing_mailing.py
index 49d7b6a0a3c..9200bf8618a 100644
--- a/addons/mass_mailing_sms/models/mailing_mailing.py
+++ b/addons/mass_mailing_sms/models/mailing_mailing.py
@@ -20,6 +20,8 @@ class Mailing(models.Model):
sms_has_insufficient_credit = fields.Boolean(
'Insufficient IAP credits', compute='_compute_sms_has_insufficient_credit',
help='UX Field to propose to buy IAP credits')
+ sms_force_send = fields.Boolean(
+ 'Send Directly', help='Use at your own risks.')
# opt_out_link
sms_allow_unsubscribe = fields.Boolean('Include opt-out link', default=True)
@@ -63,7 +65,15 @@ class Mailing(models.Model):
# --------------------------------------------------
def action_put_in_queue_sms(self):
- return self.action_put_in_queue()
+ res = self.action_put_in_queue()
+ if self.sms_force_send:
+ self.action_send_mail()
+ return res
+
+ def action_send_now_sms(self):
+ if not self.sms_force_send:
+ self.write({'sms_force_send': True})
+ return self.action_send_mail()
def action_test(self):
if self.mailing_type == 'sms':
@@ -166,6 +176,7 @@ class Mailing(models.Model):
'composition_mode': 'mass',
'mailing_id': self.id,
'mass_keep_log': self.keep_archives,
+ 'mass_force_send': self.sms_force_send,
'mass_sms_allow_unsubscribe': self.sms_allow_unsubscribe,
}
@@ -183,11 +194,6 @@ class Mailing(models.Model):
raise UserError(_('There is no recipients selected.'))
composer = self.env['sms.composer'].with_context(active_id=False).create(mailing._send_sms_get_composer_values(res_ids))
- # extra_context = self._get_mass_mailing_context()
-
- # auto-commit except in testing mode
- # auto_commit = not getattr(threading.currentThread(), 'testing', False)
- # composer.send_mail(auto_commit=auto_commit)
composer._action_send_sms()
mailing.write({'state': 'done', 'sent_date': fields.Datetime.now()})
return True
diff --git a/addons/mass_mailing_sms/views/mailing_mailing_views.xml b/addons/mass_mailing_sms/views/mailing_mailing_views.xml
index 61c14ce7228..2c774bd9e9c 100644
--- a/addons/mass_mailing_sms/views/mailing_mailing_views.xml
+++ b/addons/mass_mailing_sms/views/mailing_mailing_views.xml
@@ -23,10 +23,14 @@
{'invisible': ['|', ('state', 'in', ('in_queue', 'done')), ('mailing_type', '!=', 'mail')]}
-
+ confirm="This will schedule an SMS marketing to all recipients. Do you still want to proceed ?"/>
+
@@ -92,6 +96,7 @@
+
diff --git a/addons/mass_mailing_sms/wizard/sms_composer.py b/addons/mass_mailing_sms/wizard/sms_composer.py
index 584b15c66eb..aef10ac4f2f 100644
--- a/addons/mass_mailing_sms/wizard/sms_composer.py
+++ b/addons/mass_mailing_sms/wizard/sms_composer.py
@@ -74,12 +74,9 @@ class SMSComposer(models.TransientModel):
all_bodies[sms_id] = body
return all_bodies
- def _prepare_mass_sms_values(self, records=None):
- result = super(SMSComposer, self)._prepare_mass_sms_values(records=records)
+ def _prepare_mass_sms_values(self, records):
+ result = super(SMSComposer, self)._prepare_mass_sms_values(records)
if self.composition_mode == 'mass' and self.mailing_id:
- records = records if records is not None else self._get_records()
-
- # for record_id, sms_values in result.items():
for record in records:
sms_values = result[record.id]
@@ -90,8 +87,8 @@ class SMSComposer(models.TransientModel):
})
return result
- def _action_send_sms_mass(self, records=None):
- sms_all = super(SMSComposer, self)._action_send_sms_mass()
+ def _prepare_mass_sms(self, records, sms_record_values):
+ sms_all = super(SMSComposer, self)._prepare_mass_sms(records, sms_record_values)
if self.mailing_id:
updated_bodies = sms_all._update_body_short_links()
for sms in sms_all:
diff --git a/addons/sms/wizard/sms_composer.py b/addons/sms/wizard/sms_composer.py
index 520c5df9904..9ed3cd2e498 100644
--- a/addons/sms/wizard/sms_composer.py
+++ b/addons/sms/wizard/sms_composer.py
@@ -147,7 +147,12 @@ class SendSMS(models.TransientModel):
self._action_send_sms()
return False
- def _action_send_sms(self, force_send=False):
+ def action_send_sms_mass_now(self):
+ if not self.mass_force_send:
+ self.write({'mass_force_send': True})
+ return self.action_send_sms()
+
+ def _action_send_sms(self):
records = self._get_records()
if self.composition_mode == 'numbers':
return self._action_send_sms_numbers()
@@ -183,16 +188,15 @@ class SendSMS(models.TransientModel):
records = records if records is not None else self._get_records()
sms_record_values = self._prepare_mass_sms_values(records)
- sms_create_vals = [sms_record_values[record.id] for record in records]
- sms = self.env['sms.sms'].sudo().create(sms_create_vals)
+ sms = self._prepare_mass_sms(records, sms_record_values)
if sms and self.mass_keep_log and records and issubclass(type(records), self.pool['mail.thread']):
- log_values = self._prepare_mass_log_values(sms_record_values)
+ log_values = self._prepare_mass_log_values(records, sms_record_values)
records._message_log_batch(**log_values)
if sms and self.mass_force_send:
sms.send(auto_commit=False, raise_exception=False)
-
+ return self.env['sms.sms'].sudo().search([('id', 'in', sms.ids)])
return sms
# ------------------------------------------------------------
@@ -230,8 +234,7 @@ class SendSMS(models.TransientModel):
all_bodies = self.env['mail.template']._render_template(self.body, records._name, records.ids)
return all_bodies
- def _prepare_mass_sms_values(self, records=None):
- records = records if records is not None else self._get_records()
+ def _prepare_mass_sms_values(self, records):
all_bodies = self._prepare_body_values(records)
all_recipients = self._prepare_recipient_values(records)
blacklist_ids = self._get_blacklist_record_ids(records, all_recipients)
@@ -263,13 +266,17 @@ class SendSMS(models.TransientModel):
}
return result
+ def _prepare_mass_sms(self, records, sms_record_values):
+ sms_create_vals = [sms_record_values[record.id] for record in records]
+ return self.env['sms.sms'].sudo().create(sms_create_vals)
+
def _prepare_log_body_values(self, sms_records_values):
result = {}
for record_id, sms_values in sms_records_values.items():
result[record_id] = sms_values['body']
return result
- def _prepare_mass_log_values(self, sms_records_values):
+ def _prepare_mass_log_values(self, records, sms_records_values):
return {
'bodies': self._prepare_log_body_values(sms_records_values),
'message_type': 'sms',
diff --git a/addons/sms/wizard/sms_composer_views.xml b/addons/sms/wizard/sms_composer_views.xml
index 1cb59d99dd3..e35b87949e9 100644
--- a/addons/sms/wizard/sms_composer_views.xml
+++ b/addons/sms/wizard/sms_composer_views.xml
@@ -39,7 +39,12 @@