62 lines
2.6 KiB
Python
62 lines
2.6 KiB
Python
from odoo import models, api
|
|
|
|
|
|
class ProjectTask(models.Model):
|
|
"""
|
|
The function "create" is overloaded to adapt the field "user_ids" from the context of helpdesk.ticket to the one of project.task
|
|
This function is called when the user clicks on the button "create" in the task field of the ticket form
|
|
The function "onchange" is overloaded to adapt the field "user_ids" from the context of helpdesk.ticket to the one of project.task
|
|
This function is called when the user clicks on the button "create and modify" in the task field of the ticket form
|
|
"""
|
|
_inherit = "project.task"
|
|
|
|
@api.model
|
|
def create(self, vals_list):
|
|
user_ids = [self.env.context["default_user_id"]]
|
|
task_service_id, request_type_id = self._match_task_service_and_request_type(
|
|
ticket_category_id=self.env.context["default_ticket_category_id"],
|
|
ticket_request_type_id=self.env.context["default_ticket_request_type_id"]
|
|
)
|
|
|
|
result = super(ProjectTask, self.with_context(
|
|
default_user_ids=user_ids,
|
|
default_service_id=task_service_id,
|
|
default_request_type_id=request_type_id
|
|
)).create(vals_list)
|
|
|
|
return result
|
|
|
|
def onchange(self, values, field_name, field_onchange):
|
|
user_ids = [self.env.context["default_user_id"]]
|
|
task_service_id, request_type_id = self._match_task_service_and_request_type(
|
|
ticket_category_id=self.env.context["default_ticket_category_id"],
|
|
ticket_request_type_id=self.env.context["default_ticket_request_type_id"]
|
|
)
|
|
|
|
result = super(ProjectTask, self.with_context(
|
|
default_user_ids=user_ids,
|
|
default_service_id=task_service_id,
|
|
default_request_type_id=request_type_id
|
|
)).onchange(values, field_name, field_onchange)
|
|
|
|
return result
|
|
|
|
def _match_task_service_and_request_type(
|
|
self,
|
|
ticket_category_id: int,
|
|
ticket_request_type_id: int
|
|
) -> tuple[int, int]:
|
|
helpdesk_ticket_category = self.env["helpdesk.ticket.category"].search(
|
|
[("id", "=", ticket_category_id)],
|
|
limit=1
|
|
)
|
|
task_service = self.env["task.service"].search([("name", "=", helpdesk_ticket_category.name)])
|
|
|
|
helpdesk_ticket_request_type = self.env["helpdesk.request.type"].search(
|
|
[("id", "=", ticket_request_type_id)],
|
|
limit=1
|
|
)
|
|
task_request_type = self.env["request.type"].search([("name", "=", helpdesk_ticket_request_type.name)])
|
|
|
|
return task_service.id, task_request_type.id
|