diff --git a/event_track_calendar_event/__init__.py b/event_track_calendar_event/__init__.py new file mode 100644 index 0000000..9a7e03e --- /dev/null +++ b/event_track_calendar_event/__init__.py @@ -0,0 +1 @@ +from . import models \ No newline at end of file diff --git a/event_track_calendar_event/__manifest__.py b/event_track_calendar_event/__manifest__.py new file mode 100644 index 0000000..38d5614 --- /dev/null +++ b/event_track_calendar_event/__manifest__.py @@ -0,0 +1,25 @@ +# Copyright 2016-2020 Akretion France () +# @author: Alexis de Lattre +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +{ + "name": "Event track calendar event", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "author": "Elabore", + "website": "https://www.elabore.coop", + "category": "", + 'summary': 'Link event tracks to calendar event', + 'description': """ +Link event tracks to calendar event +---------------------------------------------------- +* Create calendar event on event track creation +* Update calendar event on event track update +* Update event track when calendar event updated + +""", + "depends": ["website_event_track","calendar"], + "data": [ + ], + "installable": True, +} diff --git a/event_track_calendar_event/models/__init__.py b/event_track_calendar_event/models/__init__.py new file mode 100644 index 0000000..3ef27e9 --- /dev/null +++ b/event_track_calendar_event/models/__init__.py @@ -0,0 +1,4 @@ +from . import calendar_event +from . import event_event +from . import event_registration +from . import event_track diff --git a/event_track_calendar_event/models/calendar_event.py b/event_track_calendar_event/models/calendar_event.py new file mode 100644 index 0000000..ae50eef --- /dev/null +++ b/event_track_calendar_event/models/calendar_event.py @@ -0,0 +1,8 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from odoo import fields, models + + +class CalendarEvent(models.Model): + _inherit = 'calendar.event' + + \ No newline at end of file diff --git a/event_track_calendar_event/models/event_event.py b/event_track_calendar_event/models/event_event.py new file mode 100644 index 0000000..1d3e665 --- /dev/null +++ b/event_track_calendar_event/models/event_event.py @@ -0,0 +1,13 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from odoo import fields, models, api, Command + + +class EventEvent(models.Model): + _inherit = "event.event" + + def write(self, vals): + res = super().write(vals) + for event in self: + for track in event.track_ids: + track.sync_calendar_event() + return res diff --git a/event_track_calendar_event/models/event_registration.py b/event_track_calendar_event/models/event_registration.py new file mode 100644 index 0000000..2457037 --- /dev/null +++ b/event_track_calendar_event/models/event_registration.py @@ -0,0 +1,21 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from odoo import fields, models, api, Command + + +class EventRegistration(models.Model): + _inherit = "event.registration" + + def write(self, vals): + res = super().write(vals) + for registration in self: + for track in registration.event_id.track_ids: + track.sync_calendar_event() + return res + + @api.model_create_multi + def create(self, vals_list): + res = super(EventRegistration, self).create(vals_list) + for registration in res: + for track in registration.event_id.track_ids: + track.sync_calendar_event() + return res \ No newline at end of file diff --git a/event_track_calendar_event/models/event_track.py b/event_track_calendar_event/models/event_track.py new file mode 100644 index 0000000..80e33ff --- /dev/null +++ b/event_track_calendar_event/models/event_track.py @@ -0,0 +1,53 @@ +# 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_values(self): + self.ensure_one() + + # 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 { + '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(partner_ids)], + '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 diff --git a/event_track_calendar_event_event_speaker/__init__.py b/event_track_calendar_event_event_speaker/__init__.py new file mode 100644 index 0000000..9a7e03e --- /dev/null +++ b/event_track_calendar_event_event_speaker/__init__.py @@ -0,0 +1 @@ +from . import models \ No newline at end of file diff --git a/event_track_calendar_event_event_speaker/__manifest__.py b/event_track_calendar_event_event_speaker/__manifest__.py new file mode 100644 index 0000000..77c3c01 --- /dev/null +++ b/event_track_calendar_event_event_speaker/__manifest__.py @@ -0,0 +1,18 @@ +# Copyright 2016-2020 Akretion France () +# @author: Alexis de Lattre +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +{ + "name": "Event track calendar event - event speakers", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "author": "Elabore", + "website": "https://www.elabore.coop", + "category": "", + 'summary': 'Event track calendar event adaptation when event_speaker module installed', + "depends": ["event_track_calendar_event","event_speaker"], + "data": [ + ], + "installable": True, + "auto_install":True +} diff --git a/event_track_calendar_event_event_speaker/models/__init__.py b/event_track_calendar_event_event_speaker/models/__init__.py new file mode 100644 index 0000000..ff1c245 --- /dev/null +++ b/event_track_calendar_event_event_speaker/models/__init__.py @@ -0,0 +1 @@ +from . import event_track diff --git a/event_track_calendar_event_event_speaker/models/event_track.py b/event_track_calendar_event_event_speaker/models/event_track.py new file mode 100644 index 0000000..4db9609 --- /dev/null +++ b/event_track_calendar_event_event_speaker/models/event_track.py @@ -0,0 +1,18 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from odoo import fields, models, api, Command + + +class EventTrack(models.Model): + _inherit = "event.track" + + + def get_calendar_event_values(self): + self.ensure_one() + + res = super(EventTrack, self).get_calendar_event_values() + + # add speakers + res['partner_ids'].extend(self.event_id.speaker_ids.ids) + + return res +