[IMP]survey_record_generation:show alerte when deleting a crm tag used in lead record creation
Some checks failed
pre-commit / pre-commit (pull_request) Failing after 1m42s

This commit is contained in:
2026-04-28 19:23:45 +02:00
parent 10e9cb6c15
commit a08c3ec18c
6 changed files with 176 additions and 6 deletions

View File

@@ -1 +1,2 @@
from . import test_survey_record_creation
from . import test_referenced_record_protection

View File

@@ -0,0 +1,98 @@
from odoo.exceptions import UserError
from odoo.addons.survey.tests.common import SurveyCase
class TestReferencedRecordProtection(SurveyCase):
def setUp(self):
super().setUp()
self.survey = self.env["survey.survey"].create({"title": "Test Survey"})
self.res_partner_model = self.env["ir.model"]._get("res.partner")
self.survey_record_creation = self.env["survey.record.creation"].create(
{
"name": "Contact",
"survey_id": self.survey.id,
"model_id": self.res_partner_model.id,
}
)
def test_unlink_blocked_when_referenced_via_many2one(self):
title = self.env["res.partner.title"].create({"name": "Mister"})
title_field = self.env["ir.model.fields"].search(
[("model", "=", "res.partner"), ("name", "=", "title")]
)
self.env["survey.record.creation.field.values"].create(
{
"survey_record_creation_id": self.survey_record_creation.id,
"field_id": title_field.id,
"value_origin": "fixed",
"fixed_value_many2one": f"res.partner.title,{title.id}",
}
)
with self.assertRaises(UserError) as ctx:
title.unlink()
self.assertIn("Test Survey", str(ctx.exception))
self.assertIn("Mister", str(ctx.exception))
def test_unlink_blocked_when_referenced_via_many2many(self):
category = self.env["res.partner.category"].create({"name": "Adult"})
category_field = self.env["ir.model.fields"].search(
[("model", "=", "res.partner"), ("name", "=", "category_id")]
)
field_values = self.env["survey.record.creation.field.values"].create(
{
"survey_record_creation_id": self.survey_record_creation.id,
"field_id": category_field.id,
"value_origin": "fixed",
}
)
self.env["survey.record.creation.field.values.x2m"].create(
{
"survey_record_creation_field_values_id": field_values.id,
"value_reference": f"res.partner.category,{category.id}",
}
)
with self.assertRaises(UserError) as ctx:
category.unlink()
self.assertIn("Test Survey", str(ctx.exception))
self.assertIn("Adult", str(ctx.exception))
def test_unlink_allowed_when_not_referenced(self):
title = self.env["res.partner.title"].create({"name": "Sir"})
# No survey config references this title
title.unlink()
self.assertFalse(title.exists())
def test_unlink_allowed_after_removing_survey_config(self):
title = self.env["res.partner.title"].create({"name": "Mister"})
title_field = self.env["ir.model.fields"].search(
[("model", "=", "res.partner"), ("name", "=", "title")]
)
field_values = self.env["survey.record.creation.field.values"].create(
{
"survey_record_creation_id": self.survey_record_creation.id,
"field_id": title_field.id,
"value_origin": "fixed",
"fixed_value_many2one": f"res.partner.title,{title.id}",
}
)
field_values.unlink()
title.unlink()
self.assertFalse(title.exists())
def test_unlink_allowed_during_module_uninstall(self):
title = self.env["res.partner.title"].create({"name": "Mister"})
title_field = self.env["ir.model.fields"].search(
[("model", "=", "res.partner"), ("name", "=", "title")]
)
self.env["survey.record.creation.field.values"].create(
{
"survey_record_creation_id": self.survey_record_creation.id,
"field_id": title_field.id,
"value_origin": "fixed",
"fixed_value_many2one": f"res.partner.title,{title.id}",
}
)
title.with_context(module_uninstall=True).unlink()
self.assertFalse(title.exists())