From 0bb010d4873e1d1b8fc123ad310f16d38dc111e2 Mon Sep 17 00:00:00 2001 From: qmo-odoo Date: Wed, 17 Mar 2021 13:56:18 +0000 Subject: [PATCH 1/2] [IMP] calendar: Add tracking on active field This commit is needed for the enterprise PR linked below. It will be needed to notify followers if a calendar event gets cancelled (archived) LINKS: TaskID: #2223519 Community PR: odoo/odoo#68022 Enterprise PR:odoo/enterprise#17141 --- addons/calendar/models/calendar_event.py | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/calendar/models/calendar_event.py b/addons/calendar/models/calendar_event.py index 87cbf19cbe1..194ff6dfe3d 100644 --- a/addons/calendar/models/calendar_event.py +++ b/addons/calendar/models/calendar_event.py @@ -122,6 +122,7 @@ class Meeting(models.Model): # filtering active = fields.Boolean( 'Active', default=True, + tracking=True, help="If the active field is set to false, it will allow you to hide the event alarm information without removing it.") categ_ids = fields.Many2many( 'calendar.event.type', 'meeting_category_rel', 'event_id', 'type_id', 'Tags') From c5a6a9661f32eb0e496c7c1c0ce5bd8120567b3b Mon Sep 17 00:00:00 2001 From: qmo-odoo Date: Thu, 1 Apr 2021 09:18:05 +0000 Subject: [PATCH 2/2] [IMP] calendar: Add route to join existing calendar.event Allow users to join an event via a route and an action method. See enterprise PR for more information on the use cases. LINKS: TaskID: #2223519 Community PR: https://github.com/odoo/odoo/pull/68022 Enterprise PR: https://github.com/odoo/enterprise/pull/17141 --- addons/calendar/controllers/main.py | 10 ++++++++++ addons/calendar/models/calendar_event.py | 8 ++++++++ 2 files changed, 18 insertions(+) diff --git a/addons/calendar/controllers/main.py b/addons/calendar/controllers/main.py index e68a5bab412..0d8a795733e 100644 --- a/addons/calendar/controllers/main.py +++ b/addons/calendar/controllers/main.py @@ -83,6 +83,16 @@ class CalendarController(http.Controller): }) return request.make_response(response_content, headers=[('Content-Type', 'text/html')]) + @http.route('/calendar/meeting/join', type='http', auth="user", website=True) + def calendar_join_meeting(self, token, **kwargs): + event = request.env['calendar.event'].sudo().search([ + ('access_token', '=', token)]) + if not event: + return request.not_found() + event.action_join_meeting(request.env.user.partner_id.id) + attendee = request.env['calendar.attendee'].sudo().search([('partner_id', '=', request.env.user.partner_id), ('event_id', '=', event.id)]) + return request.redirect('/calendar/meeting/view?token=%s&id=%s' % (attendee.access_token, event.id)) + # Function used, in RPC to check every 5 minutes, if notification to do for an event or not @http.route('/calendar/notify', type='json', auth="user") def notify(self): diff --git a/addons/calendar/models/calendar_event.py b/addons/calendar/models/calendar_event.py index 194ff6dfe3d..af692d5061a 100644 --- a/addons/calendar/models/calendar_event.py +++ b/addons/calendar/models/calendar_event.py @@ -590,6 +590,14 @@ class Meeting(models.Model): 'context': compose_ctx, } + def action_join_meeting(self, partner_id): + """ Method used when an existing user wants to join + """ + self.ensure_one() + partner = self.env['res.partner'].browse(partner_id) + if partner not in self.partner_ids: + self.write({'partner_ids': [(4, partner.id)]}) + # ------------------------------------------------------------ # MAILING # ------------------------------------------------------------