[MIG] bemade_helpdesk_one_ticket_per_email to 18.0
This commit is contained in:
parent
c78b926565
commit
2d0577d7e3
4 changed files with 83 additions and 0 deletions
1
bemade_helpdesk_one_ticket_per_email/__init__.py
Normal file
1
bemade_helpdesk_one_ticket_per_email/__init__.py
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
from . import models
|
||||||
31
bemade_helpdesk_one_ticket_per_email/__manifest__.py
Normal file
31
bemade_helpdesk_one_ticket_per_email/__manifest__.py
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
#
|
||||||
|
# Bemade Inc.
|
||||||
|
#
|
||||||
|
# Copyright (C) 2023-June Bemade Inc. (<https://www.bemade.org>).
|
||||||
|
# Author: Marc Durepos (Contact : mdurepos@durpro.com)
|
||||||
|
#
|
||||||
|
# This program is under the terms of the Odoo Proprietary License v1.0 (OPL-1)
|
||||||
|
# It is forbidden to publish, distribute, sublicense, or sell copies of the Software
|
||||||
|
# or modified copies of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||||
|
# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
# DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
{
|
||||||
|
"name": "Helpdesk One Ticket Per Email",
|
||||||
|
"version": "18.0.1.0.0",
|
||||||
|
"summary": "Restrict ticket creation to a single ticket per email received.",
|
||||||
|
"category": "Helpdesk",
|
||||||
|
"author": "Bemade Inc.",
|
||||||
|
"website": "http://www.bemade.org",
|
||||||
|
"license": "OPL-1",
|
||||||
|
"depends": ["mail"],
|
||||||
|
"data": [],
|
||||||
|
"installable": True,
|
||||||
|
"auto_install": False,
|
||||||
|
}
|
||||||
1
bemade_helpdesk_one_ticket_per_email/models/__init__.py
Normal file
1
bemade_helpdesk_one_ticket_per_email/models/__init__.py
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
from . import mail_thread
|
||||||
50
bemade_helpdesk_one_ticket_per_email/models/mail_thread.py
Normal file
50
bemade_helpdesk_one_ticket_per_email/models/mail_thread.py
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
from odoo import models, api
|
||||||
|
from odoo.exceptions import UserError
|
||||||
|
import logging
|
||||||
|
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class MailThread(models.AbstractModel):
|
||||||
|
_inherit = "mail.thread"
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _message_route_process(self, message, message_dict, routes):
|
||||||
|
"""
|
||||||
|
Process the routes for an incoming message, ensuring only one helpdesk route is used if multiple
|
||||||
|
helpdesk routes are detected.
|
||||||
|
|
||||||
|
This override filters the routes to avoid processing a message multiple times for helpdesk models
|
||||||
|
(`helpdesk.ticket` and `helpdesk.team`). If multiple helpdesk routes are found, only the first one
|
||||||
|
is retained, and a log entry is created to indicate the adjustment.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
message (object): The incoming message object.
|
||||||
|
message_dict (dict): Dictionary of parsed message values.
|
||||||
|
routes (list): List of route tuples, each containing the target model and relevant information.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
bool: Result of the `_message_route_process` from the superclass.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
# Filter routes to keep only those related to helpdesk models if they are present
|
||||||
|
helpdesk_routes = [
|
||||||
|
r for r in routes if r[0] in ("helpdesk.ticket", "helpdesk.team")
|
||||||
|
]
|
||||||
|
|
||||||
|
if helpdesk_routes:
|
||||||
|
_logger.info(
|
||||||
|
"Messages contained helpdesk routes. Only the first one will be used."
|
||||||
|
)
|
||||||
|
# Retain only the first helpdesk route
|
||||||
|
routes = [helpdesk_routes[0]]
|
||||||
|
|
||||||
|
# Call the parent method with potentially modified routes
|
||||||
|
return super()._message_route_process(message, message_dict, routes)
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
# Log the exception and raise it to ensure errors are traceable
|
||||||
|
_logger.error(f"An error occurred in _message_route_process: {str(e)}")
|
||||||
|
raise UserError(
|
||||||
|
"An unexpected error occurred while processing message routes. Please contact support."
|
||||||
|
)
|
||||||
Loading…
Reference in a new issue