diff --git a/addons/crm/models/crm_lead.py b/addons/crm/models/crm_lead.py
index fb44fc24f85..1bea5e37ae0 100644
--- a/addons/crm/models/crm_lead.py
+++ b/addons/crm/models/crm_lead.py
@@ -121,7 +121,7 @@ class Lead(models.Model):
'res.company', string='Company', index=True,
compute='_compute_company_id', readonly=False, store=True)
referred = fields.Char('Referred By')
- description = fields.Text('Notes')
+ description = fields.Html('Notes')
active = fields.Boolean('Active', default=True, tracking=True)
type = fields.Selection([
('lead', 'Lead'), ('opportunity', 'Opportunity')],
@@ -1376,7 +1376,7 @@ class Lead(models.Model):
def _merge_get_fields_specific(self):
return {
- 'description': lambda fname, leads: '\n\n'.join(desc for desc in leads.mapped('description') if desc),
+ 'description': lambda fname, leads: '
'.join(desc for desc in leads.mapped('description') if not is_html_empty(desc)),
'type': lambda fname, leads: 'opportunity' if any(lead.type == 'opportunity' for lead in leads) else 'lead',
'priority': lambda fname, leads: max(leads.mapped('priority')) if leads else False,
}
diff --git a/addons/crm/tests/common.py b/addons/crm/tests/common.py
index f863b577c94..daa7baa5fc3 100644
--- a/addons/crm/tests/common.py
+++ b/addons/crm/tests/common.py
@@ -399,7 +399,7 @@ class TestCrmCommon(TestSalesCommon, MailCase):
def _get_description():
values = [_find_value(lead, 'description') for lead in leads]
- return '\n\n'.join(value for value in values if value)
+ return '
'.join(value for value in values if value)
def _get_priority():
values = [_find_value(lead, 'priority') for lead in leads]
diff --git a/addons/crm/tests/test_crm_lead_merge.py b/addons/crm/tests/test_crm_lead_merge.py
index 97206dfec73..8d313dc47fa 100644
--- a/addons/crm/tests/test_crm_lead_merge.py
+++ b/addons/crm/tests/test_crm_lead_merge.py
@@ -88,7 +88,7 @@ class TestLeadMerge(TestLeadMergeCommon):
# and exclude inactive leads, but that's not written anywhere ... intended ??
self.assertEqual(merge.opportunity_ids, self.leads - self.lead_w_partner_company - self.lead_w_email_lost)
ordered_merge = self.lead_w_contact + self.lead_w_email + self.lead_1 + self.lead_w_partner
- ordered_merge_description = '\n\n'.join(l.description for l in ordered_merge)
+ ordered_merge_description = '
'.join(l.description for l in ordered_merge)
# merged opportunity: in this test, all input are leads. Confidence is based on stage
# sequence -> lead_w_contact has a stage sequence of 30
diff --git a/addons/crm_livechat/models/mail_channel.py b/addons/crm_livechat/models/mail_channel.py
index c051309c813..64313998493 100644
--- a/addons/crm_livechat/models/mail_channel.py
+++ b/addons/crm_livechat/models/mail_channel.py
@@ -28,9 +28,9 @@ class MailChannel(models.Model):
:param key: operator input in chat ('/lead Lead about Product')
"""
description = ''.join(
- '%s: %s\n' % (message.author_id.name or self.anonymous_name, message.body)
+ '%s: %s
' % (message.author_id.name or self.anonymous_name, html2plaintext(message.body))
for message in self.message_ids.sorted('id')
- )
+ ) # converting message body back to plaintext for correct data formating in description
# if public user is part of the chat: consider lead to be linked to an
# anonymous user whatever the participants. Otherwise keep only share
# partners (no user or portal user) to link to the lead.
@@ -48,7 +48,7 @@ class MailChannel(models.Model):
'partner_id': customers[0].id if customers else False,
'user_id': False,
'team_id': False,
- 'description': html2plaintext(description),
+ 'description': description,
'referred': partner.name,
'source_id': utm_source and utm_source.id,
})
diff --git a/addons/event/models/event_event.py b/addons/event/models/event_event.py
index 0b1d957f7ec..e14899d4dab 100644
--- a/addons/event/models/event_event.py
+++ b/addons/event/models/event_event.py
@@ -106,7 +106,7 @@ class EventEvent(models.Model):
return self.env['ir.ui.view']._render_template('event.event_default_descripton')
name = fields.Char(string='Event', translate=True, required=True)
- note = fields.Text(string='Note')
+ note = fields.Html(string='Note')
description = fields.Html(string='Description', translate=html_translate, sanitize_attributes=False, sanitize_form=False, default=_default_description)
active = fields.Boolean(default=True)
user_id = fields.Many2one(
diff --git a/addons/event_crm/models/event_lead_rule.py b/addons/event_crm/models/event_lead_rule.py
index 08c5c114cb0..f5c9ec1c7e5 100644
--- a/addons/event_crm/models/event_lead_rule.py
+++ b/addons/event_crm/models/event_lead_rule.py
@@ -177,7 +177,7 @@ class EventLeadRule(models.Model):
additionnal_description = group_registrations._get_lead_description(_("New registrations"), line_counter=True)
for lead in toupdate_leads:
lead.write({
- 'description': "%s\n%s" % (lead.description, additionnal_description),
+ 'description': "%s
%s" % (lead.description, additionnal_description),
'registration_ids': [(4, reg.id) for reg in group_registrations],
})
elif group_registrations:
diff --git a/addons/event_crm/models/event_registration.py b/addons/event_crm/models/event_registration.py
index 033bb0d3aec..111cef325b8 100644
--- a/addons/event_crm/models/event_registration.py
+++ b/addons/event_crm/models/event_registration.py
@@ -132,7 +132,7 @@ class EventRegistration(models.Model):
upd_description_fields = [field for field in self._get_lead_description_fields() if field in new_vals.keys()]
if any(new_vals[field] != old_vals[field] for field in upd_description_fields):
for lead in leads_attendee:
- lead_values['description'] = "%s\n%s" % (
+ lead_values['description'] = "%s
%s" % (
lead.description,
registration._get_lead_description(_("Updated registrations"), line_counter=True)
)
@@ -148,7 +148,7 @@ class EventRegistration(models.Model):
if not lead.partner_id:
lead_values['description'] = lead.registration_ids._get_lead_description(_("Participants"), line_counter=True)
elif new_vals['partner_id'] != lead.partner_id.id:
- lead_values['description'] = lead.description + "\n" + lead.registration_ids._get_lead_description(_("Updated registrations"), line_counter=True, line_suffix=_("(updated)"))
+ lead_values['description'] = lead.description + "
" + lead.registration_ids._get_lead_description(_("Updated registrations"), line_counter=True, line_suffix=_("(updated)"))
if lead_values:
lead.write(lead_values)
@@ -232,17 +232,16 @@ class EventRegistration(models.Model):
"""
reg_lines = [
registration._get_lead_description_registration(
- prefix="%s. " % (index + 1) if line_counter else "",
line_suffix=line_suffix
- ) for index, registration in enumerate(self)
+ ) for registration in self
]
- return ("%s\n" % prefix if prefix else "") + ("\n".join(reg_lines))
+ return ("%s
" % prefix if prefix else "") + (
+ "