summaryrefslogtreecommitdiff
path: root/addons/sms/models/ir_model.py
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/sms/models/ir_model.py
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/sms/models/ir_model.py')
-rw-r--r--addons/sms/models/ir_model.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/addons/sms/models/ir_model.py b/addons/sms/models/ir_model.py
new file mode 100644
index 00000000..1b1db6a9
--- /dev/null
+++ b/addons/sms/models/ir_model.py
@@ -0,0 +1,41 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models
+
+
+class IrModel(models.Model):
+ _inherit = 'ir.model'
+
+ is_mail_thread_sms = fields.Boolean(
+ string="Mail Thread SMS", default=False,
+ store=False, compute='_compute_is_mail_thread_sms', search='_search_is_mail_thread_sms',
+ help="Whether this model supports messages and notifications through SMS",
+ )
+
+ @api.depends('is_mail_thread')
+ def _compute_is_mail_thread_sms(self):
+ for model in self:
+ if model.is_mail_thread:
+ ModelObject = self.env[model.model]
+ potential_fields = ModelObject._sms_get_number_fields() + ModelObject._sms_get_partner_fields()
+ if any(fname in ModelObject._fields for fname in potential_fields):
+ model.is_mail_thread_sms = True
+ continue
+ model.is_mail_thread_sms = False
+
+ def _search_is_mail_thread_sms(self, operator, value):
+ thread_models = self.search([('is_mail_thread', '=', True)])
+ valid_models = self.env['ir.model']
+ for model in thread_models:
+ if model.model not in self.env:
+ continue
+ ModelObject = self.env[model.model]
+ potential_fields = ModelObject._sms_get_number_fields() + ModelObject._sms_get_partner_fields()
+ if any(fname in ModelObject._fields for fname in potential_fields):
+ valid_models |= model
+
+ search_sms = (operator == '=' and value) or (operator == '!=' and not value)
+ if search_sms:
+ return [('id', 'in', valid_models.ids)]
+ return [('id', 'not in', valid_models.ids)]