Files
event-tools/event_track_calendar_event/models/event_track.py
2024-01-24 22:23:58 +01:00

59 lines
1.8 KiB
Python

# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import fields, models, api, Command
from datetime import timedelta
class EventTrack(models.Model):
_inherit = "event.track"
calendar_event = fields.Many2one('calendar.event', 'Calendar event')
def get_calendar_event_partner_value(self):
"""Compute list of partner ids for calendar event
"""
# compute list of attendees
partner_ids = []
# add event track contact
if self.partner_id:
partner_ids.append(self.partner_id.id)
# add event registration attendees
partner_ids.extend([registration.partner_id.id for registration in self.event_id.registration_ids if registration.partner_id])
return partner_ids
def get_calendar_event_values(self):
self.ensure_one()
return {
'start':self.date,
'duration':self.duration,
'stop':self.date + timedelta(minutes=round((self.duration or 1.0) * 60)),
'user_id':self.user_id.id,
'partner_ids':[Command.set(self.get_calendar_event_partner_value())],
'name':self.event_id.name+' - '+self.name,
}
def sync_calendar_event(self):
for track in self:
if not track.calendar_event:
track.calendar_event = self.env['calendar.event'].create(track.get_calendar_event_values())
else:
track.calendar_event.write(track.get_calendar_event_values())
@api.model_create_multi
def create(self, vals_list):
res = super(EventTrack, self).create(vals_list)
for track in res:
track.sync_calendar_event()
return res
def write(self, vals):
res = super().write(vals)
self.sync_calendar_event()
return res