Replace text fields to html fields as we have our own 'OdooEditor'. Indeed, it gives more options to users in the way they format their content without weighting too much on the UI (tools appear on demand and not by default). Adding a new method convert_online_event_desc_to_text Because online events have fixed format for the description, this method removes some specific html tags, and converts it into readable plaintext (to be used in external calendars). Models -> Fields 1) calendar.event -> description Task Id: 2499504 X-original-commit: 0d5ca6a6fe8821b4ec19dd603bde116518721792
49 lines
1.9 KiB
Python
49 lines
1.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import api, models, fields, tools, _
|
|
|
|
|
|
class MailActivityType(models.Model):
|
|
_inherit = "mail.activity.type"
|
|
|
|
category = fields.Selection(selection_add=[('meeting', 'Meeting')])
|
|
|
|
|
|
class MailActivity(models.Model):
|
|
_inherit = "mail.activity"
|
|
|
|
calendar_event_id = fields.Many2one('calendar.event', string="Calendar Meeting", ondelete='cascade')
|
|
|
|
def action_create_calendar_event(self):
|
|
self.ensure_one()
|
|
action = self.env["ir.actions.actions"]._for_xml_id("calendar.action_calendar_event")
|
|
action['context'] = {
|
|
'default_activity_type_id': self.activity_type_id.id,
|
|
'default_res_id': self.env.context.get('default_res_id'),
|
|
'default_res_model': self.env.context.get('default_res_model'),
|
|
'default_name': self.summary or self.res_name,
|
|
'default_description': self.note and tools.html2plaintext(self.note).strip() or '',
|
|
'default_activity_ids': [(6, 0, self.ids)],
|
|
}
|
|
return action
|
|
|
|
def _action_done(self, feedback=False, attachment_ids=False):
|
|
events = self.mapped('calendar_event_id')
|
|
messages, activities = super(MailActivity, self)._action_done(feedback=feedback, attachment_ids=attachment_ids)
|
|
if feedback:
|
|
for event in events:
|
|
description = event.description
|
|
description = '%s<br />%s' % (
|
|
description if not tools.is_html_empty(description) else '',
|
|
_('Feedback: %(feedback)s', tools.plaintext2html(feedback)) if feedback else '',
|
|
)
|
|
event.write({'description': description})
|
|
return messages, activities
|
|
|
|
def unlink_w_meeting(self):
|
|
events = self.mapped('calendar_event_id')
|
|
res = self.unlink()
|
|
events.unlink()
|
|
return res
|