summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/calendar/models/calendar.py3
-rw-r--r--addons/google_calendar/models/calendar.py5
-rw-r--r--addons/google_calendar/models/google_calendar.py8
3 files changed, 15 insertions, 1 deletions
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':