mirror of
https://github.com/bringout/oca-technical.git
synced 2026-04-21 13:12:04 +02:00
Initial commit: OCA Technical packages (595 packages)
This commit is contained in:
commit
2cc02aac6e
24950 changed files with 2318079 additions and 0 deletions
|
|
@ -0,0 +1,70 @@
|
|||
# Copyright 2024 Dixmit
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import api, models, tools
|
||||
|
||||
|
||||
class MailThread(models.AbstractModel):
|
||||
|
||||
_inherit = "mail.thread"
|
||||
|
||||
@api.model
|
||||
def _routing_handle_bounce(self, email_message, message_dict):
|
||||
"""We want to mark the bounced email"""
|
||||
result = super(MailThread, self)._routing_handle_bounce(
|
||||
email_message, message_dict
|
||||
)
|
||||
bounced_msg_id = message_dict.get("bounced_msg_id")
|
||||
if bounced_msg_id:
|
||||
self.env["automation.record.step"].search(
|
||||
[("message_id", "in", bounced_msg_id)]
|
||||
)._set_mail_bounced()
|
||||
return result
|
||||
|
||||
@api.model
|
||||
def _message_route_process(self, message, message_dict, routes):
|
||||
"""Override to update the parent mailing traces. The parent is found
|
||||
by using the References header of the incoming message and looking for
|
||||
matching message_id in automation.record.step."""
|
||||
if routes:
|
||||
thread_references = (
|
||||
message_dict["references"] or message_dict["in_reply_to"]
|
||||
)
|
||||
msg_references = tools.mail_header_msgid_re.findall(thread_references)
|
||||
if msg_references:
|
||||
records = self.env["automation.record.step"].search(
|
||||
[("message_id", "in", msg_references)]
|
||||
)
|
||||
records._set_mail_open()
|
||||
records._set_mail_reply()
|
||||
return super(MailThread, self)._message_route_process(
|
||||
message, message_dict, routes
|
||||
)
|
||||
|
||||
@api.model
|
||||
def get_automation_access(self, doc_ids, operation, model_name=False):
|
||||
"""Retrieve access policy.
|
||||
|
||||
The behavior is similar to `mail.thread` and `mail.message`
|
||||
and it relies on the access rules defines on the related record.
|
||||
The behavior can be customized on the related model
|
||||
by defining `_automation_record_access`.
|
||||
|
||||
By default `write`, otherwise the custom permission is returned.
|
||||
"""
|
||||
DocModel = self.env[model_name] if model_name else self
|
||||
create_allow = getattr(DocModel, "_automation_record_access", "write")
|
||||
if operation in ["write", "unlink"]:
|
||||
check_operation = "write"
|
||||
elif operation == "create" and create_allow in [
|
||||
"create",
|
||||
"read",
|
||||
"write",
|
||||
"unlink",
|
||||
]:
|
||||
check_operation = create_allow
|
||||
elif operation == "create":
|
||||
check_operation = "write"
|
||||
else:
|
||||
check_operation = operation
|
||||
return check_operation
|
||||
Loading…
Add table
Add a link
Reference in a new issue