Skip to content

Commit

Permalink
Merge PR #318 into 12.0
Browse files Browse the repository at this point in the history
Signed-off-by 9184Lucky
  • Loading branch information
github-grap-bot committed Sep 13, 2024
2 parents 927d9b0 + 3a07a6b commit 0ee74cb
Show file tree
Hide file tree
Showing 11 changed files with 62 additions and 20 deletions.
4 changes: 1 addition & 3 deletions commown/models/crm_lead.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,4 @@ def _action_send_sms_doc_reminder(self):
country_code = self.partner_id.country_id.code
phone = normalize_phone(self.partner_id.get_mobile_phone(), country_code)
# Send the SMS
self.message_post_send_sms_html(
template.body_html, numbers=[phone], log_error=True
)
self.message_post_send_sms_html(template, self, numbers=[phone], log_error=True)
2 changes: 1 addition & 1 deletion commown/models/project_task.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ def send_sms_reminder(self):
# Send the SMS
template = self.env.ref("commown.sms_template_issue_reminder")
self.with_delay().message_post_send_sms_html(
template.body_html, numbers=[phone], log_error=True
template, self, numbers=[phone], log_error=True
)

else:
Expand Down
3 changes: 2 additions & 1 deletion commown/tests/test_crm_lead.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,8 @@ def test_action_send_sms_doc_reminder(self):
) as post_message:
lead._action_send_sms_doc_reminder()
post_message.assert_called_once_with(
template.body_html,
template,
lead,
numbers=[partner_mobile],
log_error=True,
)
3 changes: 2 additions & 1 deletion commown/tests/test_project_task.py
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,8 @@ def test_send_reminders(self):
) as post_message:
trap.perform_enqueued_jobs()
post_message.assert_called_once_with(
template.body_html,
template,
self.task,
numbers=[partner_mobile],
log_error=True,
)
Expand Down
14 changes: 10 additions & 4 deletions commown_res_partner_sms/models/common.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@
import phonenumbers

MOBILE_TYPE = phonenumbers.PhoneNumberType.MOBILE
FORMAT_DICT = {
"national": phonenumbers.PhoneNumberFormat.NATIONAL,
"international": phonenumbers.PhoneNumberFormat.INTERNATIONAL,
}


def normalize_phone(phone_number, country_code, raise_on_error=True):
def normalize_phone(
phone_number, country_code, number_format="international", raise_on_error=True
):
"""Format phone number for Colissimo
If phone number format is incorrect, raise if raise_on_error is True (default)
Expand All @@ -18,9 +24,9 @@ def normalize_phone(phone_number, country_code, raise_on_error=True):
if raise_on_error:
raise
else:
return phonenumbers.format_number(
tel, phonenumbers.PhoneNumberFormat.NATIONAL
).replace(" ", "")
return phonenumbers.format_number(tel, FORMAT_DICT[number_format]).replace(
" ", ""
)
return ""


Expand Down
11 changes: 10 additions & 1 deletion commown_res_partner_sms/models/mail_thread.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,15 @@
class MailThread(models.AbstractModel):
_inherit = "mail.thread"

def message_post_send_sms_html(self, html_message, *args, **kwargs):
def message_post_send_sms_html(self, template, record, *args, **kwargs):
"""Send given mail template as sms, with given record partner language
The template is rendered with record as the object variable.
"""
assert template.model == record._name
template = template.with_context(lang=record.partner_id.lang or "en_US")
html_message = self.env["mail.template"]._render_template(
template.body_html, template.model, record.id, post_process=True
)
text_message = self.env["ir.fields.converter"].text_from_html(html_message)
return self.message_post_send_sms(text_message, *args, **kwargs)
14 changes: 12 additions & 2 deletions commown_res_partner_sms/tests/test_common.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,18 @@ def setUp(self):
super(SavepointCase, self).setUp()

def test_normalize_phone(self):
self.assertEqual(normalize_phone("06 23 23.23.23", "FR"), "0623232323")
self.assertEqual(normalize_phone(" +337 33 22 11 00", "FR"), "0733221100")
self.assertEqual(
normalize_phone("06 23 23.23.23", "FR", number_format="national"),
"0623232323",
)
self.assertEqual(
normalize_phone(" +337 33 22 11 00", "FR", number_format="national"),
"0733221100",
)
self.assertEqual(
normalize_phone("06 23 23.23.23", "FR"),
"+33623232323",
)
self.assertEqual(normalize_phone(False, "FR"), "")

with self.assertRaises(phonenumbers.NumberParseException) as err:
Expand Down
22 changes: 19 additions & 3 deletions commown_res_partner_sms/tests/test_mail_thread.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,28 @@ def tearDownClass(cls):

def test_message_post_send_sms_html(self):
mail_thread = self.env["mail.thread.test"].create({})
html_message = "<div><p>TEST SMS</p><div>"
template = self.env["mail.template"].create(
{"body_html": r"<div>TEST message to ${object.name}</div>"}
)
# Use partner as the record to wich template apply
user = self.env.ref("base.user_demo")
with self.assertRaises(AssertionError):
mail_thread.message_post_send_sms_html(
template, user, numbers=["0600070022"]
)

template.model = user._name

message_num = len(mail_thread.message_ids)
with requests_mock.Mocker() as rm:
rm.get("https://www.ovh.com/cgi-bin/sms/http2sms.cgi", text="OK")
mail_thread.message_post_send_sms_html(html_message, numbers=["0600070022"])
mail_thread.message_post_send_sms_html(
template, user, numbers=["0600070022"]
)

self.assertEqual(len(mail_thread.message_ids), message_num + 1)
sms = mail_thread.message_ids[0]
self.assertEqual(sms.subtype_id, self.env.ref("mail.mt_note"))
self.assertIn("SMS message sent", sms.body)

expected_message = "<p>SMS message sent: TEST message to %s</p>" % user.name
self.assertEqual(expected_message, sms.body)
4 changes: 2 additions & 2 deletions commown_shipping/models/colissimo_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ def delivery_data(partner, raise_on_error=True):

country = partner.country_id.code or "FR"

mobile = normalize_phone(partner.mobile, country, raise_on_error)
fixed = normalize_phone(partner.phone, country, raise_on_error)
mobile = normalize_phone(partner.mobile, country, "national", raise_on_error)
fixed = normalize_phone(partner.phone, country, "national", raise_on_error)

if not mobile and fixed:
fixed_obj = phonenumbers.parse(partner.phone, partner.country_id.code)
Expand Down
2 changes: 1 addition & 1 deletion payment_slimpay_issue/models/project_task.py
Original file line number Diff line number Diff line change
Expand Up @@ -478,7 +478,7 @@ def _slimpay_payment_issue_send_sms(self):
if phone:
template = self.env.ref("payment_slimpay_issue.smspro_payment_issue")
self.with_delay().message_post_send_sms_html(
template.body_html, numbers=[phone], log_error=True
template, self, numbers=[phone], log_error=True
)

else:
Expand Down
3 changes: 2 additions & 1 deletion payment_slimpay_issue/tests/test_project_task.py
Original file line number Diff line number Diff line change
Expand Up @@ -711,7 +711,8 @@ def test_sms_is_sent_when_partner_has_mobile(self):
) as post_message:
trap.perform_enqueued_jobs()
post_message.assert_called_once_with(
template.body_html,
template,
task,
numbers=[partner_mobile],
log_error=True,
)
Expand Down

0 comments on commit 0ee74cb

Please sign in to comment.