Skip to content

Commit

Permalink
[FIX] crm_project_task: Error when create taks
Browse files Browse the repository at this point in the history
Error when you try to create the task from a lead/opportunity when you come from the contact

@moduon MT-4999
  • Loading branch information
EmilioPascual committed Feb 13, 2024
1 parent 2f22747 commit 4dafd4b
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 50 deletions.
9 changes: 8 additions & 1 deletion crm_project_task/i18n/crm_project_task.pot
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-02-05 11:11+0000\n"
"PO-Revision-Date: 2024-02-05 11:11+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
Expand Down Expand Up @@ -99,7 +101,6 @@ msgid "Last Updated on"
msgstr ""

#. module: crm_project_task
#: model:ir.model.fields,field_description:crm_project_task.field_crm_create_task__lead_id
#: model:ir.model.fields,field_description:crm_project_task.field_project_task__lead_id
msgid "Lead"
msgstr ""
Expand All @@ -114,6 +115,12 @@ msgstr ""
#. odoo-python
#: code:addons/crm_project_task/wizards/crm_create_task.py:0
#, python-format
msgid "Lead/Opportunity not found. Please, create task from lead/opportunity."
msgstr ""

#. module: crm_project_task
#: code:addons/crm_project_task/wizards/crm_create_task.py:0
#, python-format
msgid ""
"Project not configured in settings, please contact with your administrator."
msgstr ""
Expand Down
9 changes: 8 additions & 1 deletion crm_project_task/i18n/es.po
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,6 @@ msgid "Last Updated on"
msgstr "Última actualización el"

#. module: crm_project_task
#: model:ir.model.fields,field_description:crm_project_task.field_crm_create_task__lead_id
#: model:ir.model.fields,field_description:crm_project_task.field_project_task__lead_id
msgid "Lead"
msgstr "Iniciativa"
Expand All @@ -120,6 +119,14 @@ msgstr "Iniciativa/Oportundad"
#. odoo-python
#: code:addons/crm_project_task/wizards/crm_create_task.py:0
#, python-format
msgid "Lead/Opportunity not found. Please, create task from lead/opportunity."
msgstr ""
"Iniciativa/Oportunidad no encontrada. Por favor, cree la tarea desde una "
"iniciativa/Oportunidad."

#. module: crm_project_task
#: code:addons/crm_project_task/wizards/crm_create_task.py:0
#, python-format
msgid ""
"Project not configured in settings, please contact with your administrator."
msgstr ""
Expand Down
55 changes: 16 additions & 39 deletions crm_project_task/tests/test_crm_project_task.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,11 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl-3.0)

from odoo.exceptions import UserError
from odoo.tests import tagged
from odoo.tests.common import TransactionCase

from odoo.addons.mail.tests.common import mail_new_test_user


@tagged("post_install", "-at_install")
class TestCrmProjectTask(TransactionCase):
@classmethod
def setUpClass(cls):
Expand Down Expand Up @@ -41,57 +39,36 @@ def setUpClass(cls):
"description": "Test Description",
}
)
cls.task_name = "Task Test"
cls.task_description = "Line1</br>Line2"

def test_create_task(self):
self.company.crm_default_project_id = self.project
task_name = "Task Test"
task_description = "Line1</br>Line2"
action = (
self.env["crm.create.task"]
.with_user(self.user_salesman)
.create(
{
"lead_id": self.lead.id,
"task_name": task_name,
"description": task_description,
}
)
.create_task()
)
task = self.env["project.task"].browse(action["res_id"])
self.assertEqual(task.name, task_name)
self.assertEqual(task.project_id, self.company.crm_default_project_id)
self.assertEqual(task.partner_id, self.partner)
self.assertEqual(task.lead_id, self.lead)

def test_create_task_no_project(self):
def test_crm_create_task(self):
# Error without project default
self.company.crm_default_project_id = False
task_name = "Task Test"
task_description = "Line1</br>Line2"
wizard = (
self.env["crm.create.task"]
.with_user(self.user_salesman)
.with_context(active_model="crm.lead", active_id=self.lead.id)
.create(
{
"lead_id": self.lead.id,
"task_name": task_name,
"description": task_description,
"task_name": self.task_name,
"description": self.task_description,
}
)
)
with self.assertRaises(UserError):
wizard.create_task()

def test_action_tasks(self):
# Set project default
self.company.crm_default_project_id = self.project
self.env["crm.create.task"].with_user(self.user_salesman).create(
{
"lead_id": self.lead.id,
"task_name": "Task Test",
"description": "Line1</br>Line2",
}
).create_task()
action = wizard.create_task()
task = self.env["project.task"].browse(action["res_id"])
self.assertEqual(task.name, self.task_name)
self.assertEqual(task.project_id, self.company.crm_default_project_id)
self.assertEqual(task.partner_id, self.partner)
self.assertEqual(task.lead_id, self.lead)
# Check action tasks
action = self.lead.action_tasks()
tasks = self.env["project.task"].search(action["domain"])
tasks_lead = tasks.mapped("lead_id")
self.assertEqual(self.lead, tasks_lead)
self.assertEqual(len(tasks), self.lead.task_count)
2 changes: 1 addition & 1 deletion crm_project_task/views/crm_lead.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
name="%(wizard_crm_create_task_action)d"
type="action"
class="oe_highlight"
context="{'default_lead_id': active_id, 'default_task_name': name}"
context="{'default_task_name': name}"
attrs="{'invisible': ['|', ('active','=',False), ('task_count', '!=', 0)]}"
/>
</xpath>
Expand Down
30 changes: 22 additions & 8 deletions crm_project_task/wizards/crm_create_task.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ class CrmCreateTAsk(models.TransientModel):
_name = "crm.create.task"
_description = "Wizard to create task"

lead_id = fields.Many2one("crm.lead")
task_name = fields.Char()
description = fields.Html()

Expand All @@ -23,18 +22,33 @@ def create_task(self):
"please contact with your administrator."
)
)
lead = (
self.env["crm.lead"].browse(self._context.get("active_id", False))
if self._context.get("active_model") == "crm.lead"
and self._context.get("active_id", False)
else False
)
if not lead:
raise UserError(

Check warning on line 32 in crm_project_task/wizards/crm_create_task.py

View check run for this annotation

Codecov / codecov/patch

crm_project_task/wizards/crm_create_task.py#L32

Added line #L32 was not covered by tests
_(
"Lead/Opportunity not found. Please, create task from lead/opportunity."
)
)

# Create task
task = self.env["project.task"].sudo().create(self._get_data_create(project))
task = (
self.env["project.task"].sudo().create(self._get_data_create(lead, project))
)
# Messages in chatter
task.message_post(
body=_(
"Task created from lead/opportunity "
"<a href=# data-oe-model=crm.lead data-oe-id=%(lead)d>%(name)s</a>.",
lead=self.lead_id,
name=self.lead_id.name,
lead=lead,
name=lead.name,
)
)
self.lead_id.message_post(
lead.message_post(
body=_(
"Task <a href=# data-oe-model=project.task "
"data-oe-id=%(task)d>%(name)s</a> created.",
Expand All @@ -55,13 +69,13 @@ def create_task(self):
"context": self.env.context,
}

def _get_data_create(self, project):
def _get_data_create(self, lead, project):
"""Get dict to create task"""
return {
"name": self.task_name,
"project_id": project.id,
"partner_id": self.lead_id.partner_id.id,
"lead_id": self.lead_id.id,
"partner_id": lead.partner_id.id or False,
"lead_id": lead.id,
"description": self.description,
"user_ids": [(6, 0, [])],
}

0 comments on commit 4dafd4b

Please sign in to comment.