From 93b28e19d8ba379233bcdeb23b83dbbedd4cde6a Mon Sep 17 00:00:00 2001 From: younes Date: Sun, 20 Jul 2025 11:10:25 +0100 Subject: [PATCH] Add option skip send whatsapp template to meta --- odex25_base/whatsapp/i18n/ar.po | 5 +++ .../whatsapp/models/whatsapp_template.py | 35 +++++++++++-------- .../views/whatsapp_template_views.xml | 5 +++ 3 files changed, 31 insertions(+), 14 deletions(-) diff --git a/odex25_base/whatsapp/i18n/ar.po b/odex25_base/whatsapp/i18n/ar.po index 943f6d248..b2dfea1ab 100644 --- a/odex25_base/whatsapp/i18n/ar.po +++ b/odex25_base/whatsapp/i18n/ar.po @@ -2505,3 +2505,8 @@ msgstr "placeholder=\"e.g. https://www.example.com\"/>" #: model_terms:ir.ui.view,arch_db:whatsapp.whatsapp_composer_view_form msgid "recipients have an invalid phone number and will be skipped." msgstr "لدى المستلمين أرقام هواتف غير صحيحة وسيتم تخطيهم. " + +#. module: whatsapp +#: model:ir.model.fields,field_description:whatsapp.field_whatsapp_template__is_test +msgid "Test Mode" +msgstr "وضع الاختبار" \ No newline at end of file diff --git a/odex25_base/whatsapp/models/whatsapp_template.py b/odex25_base/whatsapp/models/whatsapp_template.py index 706d67790..9903852be 100644 --- a/odex25_base/whatsapp/models/whatsapp_template.py +++ b/odex25_base/whatsapp/models/whatsapp_template.py @@ -121,6 +121,7 @@ class WhatsAppTemplate(models.Model): messages_count = fields.Integer(string="Messages Count", compute='_compute_messages_count') has_action = fields.Boolean(string="Has Action", compute='_compute_has_action') + is_test = fields.Boolean(string='Test Mode') _sql_constraints = [ ('unique_name_account_template', 'unique(template_name, lang_code, wa_account_id)', "Duplicate template is not allowed for one Meta account.") @@ -463,15 +464,18 @@ class WhatsAppTemplate(models.Model): 'components': components, }) try: - if self.wa_template_uid: - wa_api._submit_template_update(json_data, self.wa_template_uid) + if self.is_test: self.status = 'pending' else: - response = wa_api._submit_template_new(json_data) - self.write({ - 'wa_template_uid': response['id'], - 'status': response['status'].lower() - }) + if self.wa_template_uid: + wa_api._submit_template_update(json_data, self.wa_template_uid) + self.status = 'pending' + else: + response = wa_api._submit_template_new(json_data) + self.write({ + 'wa_template_uid': response['id'], + 'status': response['status'].lower() + }) except WhatsAppError as we: raise UserError(str(we)) @@ -482,13 +486,16 @@ class WhatsAppTemplate(models.Model): def button_sync_template(self): """Sync template from WhatsApp Business Account """ self.ensure_one() - wa_api = WhatsAppApi(self.wa_account_id) - try: - response = wa_api._get_template_data(wa_template_uid=self.wa_template_uid) - except WhatsAppError as e: - raise ValidationError(str(e)) - if response.get('id'): - self._update_template_from_response(response) + if self.is_test: + self.status = 'approved' + else: + wa_api = WhatsAppApi(self.wa_account_id) + try: + response = wa_api._get_template_data(wa_template_uid=self.wa_template_uid) + except WhatsAppError as e: + raise ValidationError(str(e)) + if response.get('id'): + self._update_template_from_response(response) return { 'type': 'ir.actions.client', 'tag': 'reload', diff --git a/odex25_base/whatsapp/views/whatsapp_template_views.xml b/odex25_base/whatsapp/views/whatsapp_template_views.xml index 518dac606..67f9f1b22 100644 --- a/odex25_base/whatsapp/views/whatsapp_template_views.xml +++ b/odex25_base/whatsapp/views/whatsapp_template_views.xml @@ -28,6 +28,10 @@ type="object" attrs="{'invisible': [('wa_template_uid', '=', False)]}" groups="whatsapp.group_whatsapp_admin"/> +