Skip to content
Extraits de code Groupes Projets
Valider bea4fb45 rédigé par Rémi - Le Filament's avatar Rémi - Le Filament
Parcourir les fichiers

[ADD] attendees handling Bluemind --> Odoo

parent 25aefeac
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -15,12 +15,18 @@ from netbluemind.calendar.api.VEventSeries import VEventSeries ...@@ -15,12 +15,18 @@ from netbluemind.calendar.api.VEventSeries import VEventSeries
from netbluemind.calendar.api.VEventTransparency import VEventTransparency from netbluemind.calendar.api.VEventTransparency import VEventTransparency
from netbluemind.core.api.date.BmDateTime import BmDateTime from netbluemind.core.api.date.BmDateTime import BmDateTime
from netbluemind.core.api.date.BmDateTimePrecision import BmDateTimePrecision from netbluemind.core.api.date.BmDateTimePrecision import BmDateTimePrecision
from netbluemind.icalendar.api.ICalendarElementAttendee import ICalendarElementAttendee
from netbluemind.icalendar.api.ICalendarElementClassification import ( from netbluemind.icalendar.api.ICalendarElementClassification import (
ICalendarElementClassification, ICalendarElementClassification,
) )
from netbluemind.icalendar.api.ICalendarElementCUType import ICalendarElementCUType
from netbluemind.icalendar.api.ICalendarElementOrganizer import ( from netbluemind.icalendar.api.ICalendarElementOrganizer import (
ICalendarElementOrganizer, ICalendarElementOrganizer,
) )
from netbluemind.icalendar.api.ICalendarElementParticipationStatus import (
ICalendarElementParticipationStatus,
)
from netbluemind.icalendar.api.ICalendarElementRole import ICalendarElementRole
from netbluemind.icalendar.api.ICalendarElementRRule import ICalendarElementRRule from netbluemind.icalendar.api.ICalendarElementRRule import ICalendarElementRRule
from netbluemind.icalendar.api.ICalendarElementRRuleFrequency import ( from netbluemind.icalendar.api.ICalendarElementRRuleFrequency import (
ICalendarElementRRuleFrequency, ICalendarElementRRuleFrequency,
...@@ -47,9 +53,23 @@ PRIVACY_CONVERTER_O2B = { ...@@ -47,9 +53,23 @@ PRIVACY_CONVERTER_O2B = {
"private": "Private", "private": "Private",
"confidential": "Confidential", "confidential": "Confidential",
} }
PARTSTATUS_CONVERTER_B20 = {
"NeedsAction": "needsAction",
"Accepted": "accepted",
"Declined": "declined",
"Tentative": "tentative",
"Delegated": "tentative",
"Completed": "accepted",
}
PARTSTATUS_CONVERTER_O2B = {
"needsAction": "NeedsAction",
"accepted": "Accepted",
"declined": "Declined",
"tentative": "Tentative",
}
# TODO: manage attendee_ids, alarm_ids, categories, attachments ? # TODO: manage alarm_ids, categories, attachments ?
# TODO: check if recurrency properly working without exceptions # TODO: check if recurrency properly working without exceptions
# TODO: manage exceptions in recurrencies # TODO: manage exceptions in recurrencies
class CalendarEvent(models.Model): class CalendarEvent(models.Model):
...@@ -137,6 +157,9 @@ class CalendarEvent(models.Model): ...@@ -137,6 +157,9 @@ class CalendarEvent(models.Model):
rrule.byDay[0].day.lower(): True, rrule.byDay[0].day.lower(): True,
} }
) )
# TODO: Add attendees handling
# Returns data dictionary # Returns data dictionary
return data return data
...@@ -178,6 +201,38 @@ class CalendarEvent(models.Model): ...@@ -178,6 +201,38 @@ class CalendarEvent(models.Model):
# These fields are required (although not marked as such in doc / code) # These fields are required (although not marked as such in doc / code)
# Otherwise you get a NullPointerException # Otherwise you get a NullPointerException
bm_event.main.attendees = [] bm_event.main.attendees = []
for attendee in self.attendee_ids:
att = ICalendarElementAttendee()
att.cutype = ICalendarElementCUType("Individual")
att.role = ICalendarElementRole("RequiredParticipant")
att.partStatus = ICalendarElementParticipationStatus(
PARTSTATUS_CONVERTER_O2B.get(attendee.state)
)
att.rsvp = False
att.commonName = attendee.common_name or ""
attendee_user = (
self.env["res.users"]
.sudo()
.search(
[
("partner_id", "=", attendee.partner_id.id),
("bluemind_user_id", "!=", False),
]
)
)
if attendee_user:
att.dir = (
"bm://"
+ attendee_user.company_id.bluemind_domain
+ "/users/"
+ attendee_user.bluemind_user_id
)
att.internal = True
else:
att.internal = False
att.mailto = attendee.partner_id.email or ""
bm_event.main.attendees.append(att)
# The following fields are not computed (yet ?)
bm_event.main.categories = [] bm_event.main.categories = []
bm_event.main.attachments = [] bm_event.main.attachments = []
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter