diff --git a/caldav_sync/__manifest__.py b/caldav_sync/__manifest__.py index 3c65a92..fbed16b 100644 --- a/caldav_sync/__manifest__.py +++ b/caldav_sync/__manifest__.py @@ -20,6 +20,9 @@ 'author': 'Bemade Inc.', 'website': 'https://www.bemade.org', 'depends': ['base', 'calendar'], + 'external_dependencies': { + 'python': ['caldav', 'icalendar', 'bs4'], + }, 'images': ['static/description/images/main_screenshot.png'], 'data': [ 'views/res_users_views.xml', diff --git a/caldav_sync/models/calendar_event.py b/caldav_sync/models/calendar_event.py index 0ca437a..f228952 100644 --- a/caldav_sync/models/calendar_event.py +++ b/caldav_sync/models/calendar_event.py @@ -152,19 +152,24 @@ class CalendarEvent(models.Model): ical_event.add('dtstamp', utc.localize(event.write_date).astimezone(user_tz)) if event.name: ical_event.add('summary', event.name) - if self._html_to_text(event.description): + if event.description and self._html_to_text(event.description): ical_event.add('description', self._html_to_text(event.description)) if event.location: ical_event.add('location', event.location) if event.videocall_location: ical_event.add('CONFERENCE', event.videocall_location) for partner in event.partner_ids: + if partner == event.user_id.partner_id: + continue attendee = vCalAddress(f'MAILTO:{partner.email}') attendee.params['cn'] = vText(partner.name) attendee_record = self.env['calendar.attendee'].search([('event_id', '=', event.id), ('partner_id', '=', partner.id)], limit=1) if attendee_record: attendee.params['partstat'] = vText(self._map_attendee_status(attendee_record.state)) ical_event.add('attendee', attendee, encode=0) + organizer = vCalAddress(f"MAILTO:{event.user_id.email}") + organizer.params['cn'] = event.user_id.name + ical_event.add('organizer', organizer) # Add RRULE if the event is recurrent if event.recurrency and event.recurrence_id: rrule = event.recurrence_id._get_rrule()