diff --git a/models/calendar_event.py b/models/calendar_event.py index 341181ce7669cc113881b02fe964158ff35c142b..23ef9884b7c166d3543246db8a2ba17abfdd500b 100644 --- a/models/calendar_event.py +++ b/models/calendar_event.py @@ -187,7 +187,7 @@ class CalendarEvent(models.Model): bm_event.main.status = ICalendarElementStatus("Confirmed") bm_event.main.organizer = ICalendarElementOrganizer() bm_event.main.organizer.commonName = event.user_id.partner_id.name - bm_event.main.organizer.mailto = event.user_id.partner_id.mail + bm_event.main.organizer.mailto = event.user_id.partner_id.email if event.user_id.bluemind_user_id: bm_event.main.organizer.dir = ( "bm://" @@ -240,7 +240,7 @@ class CalendarEvent(models.Model): bm_event.main.alarm = [] for alarm in self.alarm_ids: al = ICalendarElementVAlarm() - if alarm.alarm_type = "notification": + if alarm.alarm_type == "notification": al.action = ICalendarElementVAlarmAction("Display") else: al.action = ICalendarElementVAlarmAction("Email") @@ -275,7 +275,7 @@ class CalendarEvent(models.Model): if event.recurrency: bm_event.main.rrule = ICalendarElementRRule() bm_event.main.rrule.frequency = ICalendarElementRRuleFrequency( - event.frequency.toupper() + event.rrule_type.upper() ) bm_event.main.rrule.interval = event.interval if event.end_type == "count": @@ -287,12 +287,12 @@ class CalendarEvent(models.Model): bm_event.main.rrule.until.timezone = event.event_tz if ( - event.frequency == "monthly" and event.month_by == "day" - ) or event.frequency == "weekly": + event.rrule_type == "monthly" and event.month_by == "day" + ) or event.rrule_type == "weekly": bm_event.main.rrule.byDay = [ICalendarElementRRuleWeekDay()] bm_event.main.rrule.byDay[0].day = str(event.weekday) bm_event.main.rrule.byDay[0].offset = int(event.byday) - elif event.frequency == "monthly" and event.month_by == "date": + elif event.rrule_type == "monthly" and event.month_by == "date": bm_event.main.rrule.byMonthDay = [event.day] return bm_event diff --git a/models/res_users.py b/models/res_users.py index e0860b1fd6d741a2e735502a74ee9c1e0ec9788f..aebe0ed3d4183499956641f9d43a0ba73107b97b 100644 --- a/models/res_users.py +++ b/models/res_users.py @@ -157,48 +157,52 @@ class ResUser(models.Model): # Calendar entries created on Bluemind side, not already in Odoo # The events already in Odoo are ignored (probably already synced previously - events_to_create = [] - bm_events_to_create_uids = [ - e for e in bm_created_uids if e not in odoo_events_bm_uids - ] - # Retrieve remaining full events from Bluemind - bm_events_to_create = bm_calendar.multipleGet(bm_events_to_create_uids) - # Create corresponding events in Odoo - for bm_event in bm_events_to_create: - # Only if Organizer is the same as Odoo user or if is not linked to - # any active Odoo internal user - if ( - bm_event.value.main.organizer.mailto == self.partner_id.email - or bm_event.value.main.organizer.mailto not in odoo_users_emails - ): - events_to_create.append(Calendar._bm_to_odoo_values(bm_event)) - if events_to_create: - Calendar.create(events_to_create) + if bm_created_uids: + events_to_create = [] + bm_events_to_create_uids = [ + e for e in bm_created_uids if e not in odoo_events_bm_uids + ] + # Retrieve remaining full events from Bluemind + bm_events_to_create = bm_calendar.multipleGet(bm_events_to_create_uids) + # Create corresponding events in Odoo + for bm_event in bm_events_to_create: + # Only if Organizer is the same as Odoo user or if is not linked to + # any active Odoo internal user + if ( + bm_event.value.main.organizer.mailto == self.partner_id.email + or bm_event.value.main.organizer.mailto not in odoo_users_emails + ): + events_to_create.append(Calendar._bm_to_odoo_values(bm_event)) + if events_to_create: + Calendar.create(events_to_create) # Calendar entries that have been updated on Bluemind # Retrieve full events from Bluemind - bm_events_to_update = bm_calendar.multipleGet(bm_updated_uids) - # Update corresponding events - for bm_event in bm_events_to_update: - odoo_event = odoo_events_bm_linked.filtered( - [("bluemind_id", "=", bm_event.uid)] - ) - # If related event exists in Odoo and belongs to the user, update it - if odoo_event: - if odoo_event.user_id == self: - odoo_event.update_odoo_event_from_bm(bm_event) - # If event does not exist in Odoo log an info - else: - _logger.info( - "Event %s updated in Bluemind does not exist in Odoo", bm_event.uid + if bm_updated_uids: + bm_events_to_update = bm_calendar.multipleGet(bm_updated_uids) + # Update corresponding events + for bm_event in bm_events_to_update: + odoo_event = odoo_events_bm_linked.filtered( + [("bluemind_id", "=", bm_event.uid)] ) + # If related event exists in Odoo and belongs to the user, update it + if odoo_event: + if odoo_event.user_id == self: + odoo_event.update_odoo_event_from_bm(bm_event) + # If event does not exist in Odoo log an info + else: + _logger.info( + "Event %s updated in Bluemind does not exist in Odoo", bm_event.uid + ) # Calendar entries that have been deleted on Bluemind to be deleted on Odoo # (only if belongs to user) - odoo_events_to_delete = odoo_events_bm_linked.filtered( - [("bluemind_id", "in", bm_deleted_uids), ("user_id", "=", self.id)] - ) - odoo_events_to_delete.unlink(from_bluemind=True) + if bm_deleted_uids: + odoo_events_to_delete = odoo_events_bm_linked.filtered( + [("bluemind_id", "in", bm_deleted_uids), ("user_id", "=", self.id)] + ) + if odoo_events_to_delete: + odoo_events_to_delete.unlink(from_bluemind=True) # Update user last_sync_version with the latest one retrieved from Bluemind self.last_sync_version = bm_last_version