Currently, if we create an activity for user other than logged in one and create a calendar event from the activity, it automatically changes the attendee on the event and re-assigns the activity to the logged in user instead of the one originally assigned to the activity during creation. It happens because default attendees are not passed while creating the event from activity. ALso, when editing the calendar event, the sync mechanism changes the activity user to the organizer of the event, which by default is logged in user. This commit improves the behavior by passing the appropriate default values so that the calendar attendees and organizer matches with the user to whom the activity is assigned initially. task-2920631 closes odoo/odoo#96943 Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
44 lines
1.8 KiB
Python
44 lines
1.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import models, fields, tools, _
|
|
from odoo.tools import is_html_empty
|
|
|
|
|
|
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 if not is_html_empty(self.note) else '',
|
|
'default_activity_ids': [(6, 0, self.ids)],
|
|
'default_partner_ids': self.user_id.partner_id.ids,
|
|
'default_user_id': self.user_id.id,
|
|
}
|
|
return action
|
|
|
|
def _action_done(self, feedback=False, attachment_ids=False):
|
|
if feedback:
|
|
for event in self.calendar_event_id:
|
|
description = event.description
|
|
description = '%s<br />%s' % (
|
|
description if not tools.is_html_empty(description) else '',
|
|
_('Feedback: %(feedback)s', feedback=tools.plaintext2html(feedback)) if feedback else '',
|
|
)
|
|
event.write({'description': description})
|
|
return super(MailActivity, self)._action_done(feedback=feedback, attachment_ids=attachment_ids)
|
|
|
|
def unlink_w_meeting(self):
|
|
events = self.mapped('calendar_event_id')
|
|
res = self.unlink()
|
|
events.unlink()
|
|
return res
|