social/mail_gateway/models/mail_broker.py

49 lines
1.5 KiB
Python

# Copyright 2020 Creu Blanca
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, fields, models
class MailBroker(models.Model):
_name = "mail.broker"
_description = "Mail Broker"
name = fields.Char(required=True)
token = fields.Char(required=True)
_sql_constraints = [
("mail_broker_token", "unique(token)", "Token must be unique"),
]
broker_type = fields.Selection([], required=True)
show_on_app = fields.Boolean(default=True)
webhook_url = fields.Char()
webhook_user_id = fields.Many2one(
"res.users", default=lambda self: self.env.user.id
)
@api.model
def broker_fetch_slot(self):
result = []
for record in self.search([("show_on_app", "=", True)]):
result.append(
{
"id": record.id,
"name": record.name,
"channel_name": "broker_%s" % record.id,
"threads": [
thread._get_thread_data()
for thread in self.env["mail.broker.channel"].search(
[("show_on_app", "=", True), ("broker_id", "=", record.id)]
)
],
}
)
return result
def channel_search(self, name):
self.ensure_one()
domain = [("broker_id", "=", self.id)]
if name:
domain += [("name", "ilike", "%" + name + "%")]
return self.env["mail.broker.channel"].search(domain).read(["name"])