mirror of https://github.com/OCA/social.git
49 lines
1.5 KiB
Python
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"])
|