diff --git a/addons/calendar/models/calendar_attendee.py b/addons/calendar/models/calendar_attendee.py
index 986e8c01ce4..fb93a39aa49 100644
--- a/addons/calendar/models/calendar_attendee.py
+++ b/addons/calendar/models/calendar_attendee.py
@@ -24,9 +24,9 @@ class Attendee(models.Model):
STATE_SELECTION = [
('needsAction', 'Needs Action'),
- ('tentative', 'Uncertain'),
- ('declined', 'Declined'),
- ('accepted', 'Accepted'),
+ ('tentative', 'Maybe'),
+ ('declined', 'No'),
+ ('accepted', 'Yes'),
]
# event
@@ -40,7 +40,7 @@ class Attendee(models.Model):
access_token = fields.Char('Invitation Token', default=_default_access_token)
mail_tz = fields.Selection(_tz_get, compute='_compute_mail_tz', help='Timezone used for displaying time in the mail template')
# state
- state = fields.Selection(STATE_SELECTION, string='Status', readonly=True, default='needsAction')
+ state = fields.Selection(STATE_SELECTION, string='Status', default='needsAction')
availability = fields.Selection(
[('free', 'Available'), ('busy', 'Busy')], 'Available/Busy', readonly=True)
diff --git a/addons/calendar/models/calendar_event.py b/addons/calendar/models/calendar_event.py
index c753ef2e8d7..6e46121c572 100644
--- a/addons/calendar/models/calendar_event.py
+++ b/addons/calendar/models/calendar_event.py
@@ -183,6 +183,9 @@ class Meeting(models.Model):
# attendees
attendee_ids = fields.One2many(
'calendar.attendee', 'event_id', 'Participant')
+ current_attendee = fields.Many2one("calendar.attendee", compute="_compute_current_attendee", search="_search_current_attendee")
+ current_status = fields.Selection(string="Attending?", related="current_attendee.state", readonly=False)
+ should_show_status = fields.Boolean(compute="_compute_should_show_status")
partner_ids = fields.Many2many(
'res.partner', 'calendar_event_res_partner_rel',
string='Attendees', default=_default_partners)
@@ -248,6 +251,20 @@ class Meeting(models.Model):
awaiting_count = fields.Integer(compute="_compute_attendees_count")
user_can_edit = fields.Boolean(compute='_compute_user_can_edit')
+ @api.depends("attendee_ids")
+ def _compute_should_show_status(self):
+ for event in self:
+ event.should_show_status = event.current_attendee and any(attendee.partner_id != self.env.user.partner_id for attendee in event.attendee_ids)
+
+ @api.depends('attendee_ids', 'attendee_ids.state')
+ def _compute_current_attendee(self):
+ for event in self:
+ current_attendee = event.attendee_ids.filtered(lambda attendee: attendee.partner_id == self.env.user.partner_id)
+ event.current_attendee = current_attendee and current_attendee[0]
+
+ def _search_current_attendee(self, operator, value):
+ return [("id", operator, value)]
+
@api.depends('attendee_ids', 'attendee_ids.state', 'partner_ids')
def _compute_attendees_count(self):
for event in self:
diff --git a/addons/calendar/static/src/views/attendee_calendar/common/attendee_calendar_common_popover.xml b/addons/calendar/static/src/views/attendee_calendar/common/attendee_calendar_common_popover.xml
index f069e13da56..c2b3745e240 100644
--- a/addons/calendar/static/src/views/attendee_calendar/common/attendee_calendar_common_popover.xml
+++ b/addons/calendar/static/src/views/attendee_calendar/common/attendee_calendar_common_popover.xml
@@ -30,13 +30,13 @@