diff --git a/addons/calendar/models/calendar.py b/addons/calendar/models/calendar.py index 9697a2c13b9..54ea446aed4 100644 --- a/addons/calendar/models/calendar.py +++ b/addons/calendar/models/calendar.py @@ -1033,6 +1033,9 @@ class Meeting(models.Model): 'event_id': meeting.id, } + if self._context.get('google_internal_event_id', False): + values['google_internal_event_id'] = self._context.get('google_internal_event_id') + # current user don't have to accept his own meeting if partner == self.env.user.partner_id: values['state'] = 'accepted' diff --git a/addons/google_calendar/models/calendar.py b/addons/google_calendar/models/calendar.py index 672a85358a5..5be802cb6cb 100644 --- a/addons/google_calendar/models/calendar.py +++ b/addons/google_calendar/models/calendar.py @@ -20,7 +20,10 @@ class Meeting(models.Model): def write(self, values): sync_fields = set(self.get_fields_need_update_google()) if (set(values) and sync_fields) and 'oe_update_date' not in values and 'NewMeeting' not in self._context: - values['oe_update_date'] = fields.Datetime.now() + if 'oe_update_date' in self._context: + values['oe_update_date'] = self._context.get('oe_update_date') + else: + values['oe_update_date'] = fields.Datetime.now() return super(Meeting, self).write(values) @api.returns('self', lambda value: value.id) diff --git a/addons/google_calendar/models/google_calendar.py b/addons/google_calendar/models/google_calendar.py index 84ac9aa1db0..487c1f1f148 100644 --- a/addons/google_calendar/models/google_calendar.py +++ b/addons/google_calendar/models/google_calendar.py @@ -850,6 +850,14 @@ class GoogleCalendar(models.AbstractModel): parent_oe_id = event_to_synchronize[base_event][0][1].OE.event_id if parent_oe_id: CalendarEvent.browse("%s-%s" % (parent_oe_id, new_google_event_id)).with_context(curr_attendee=event.OE.attendee_id).unlink(can_be_deleted=True) + else: + main_att = CalendarAttendee.with_context(context_novirtual).search([('partner_id', '=', my_partner_id), ('google_internal_event_id', '=', event.GG.event['id'].rsplit('_', 1)[0])], limit=1) + if main_att: + excluded_event_id = str(main_att.event_id.id) + '-' + new_google_event_id + + CalendarEvent.browse(excluded_event_id).with_context(google_internal_event_id=event.GG.event.get('id'), oe_update_date=False).unlink(can_be_deleted=False) + else: + _logger.warning("Could not create the correct exclusion for event") elif isinstance(actToDo, Delete): if actSrc == 'GG':