diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/calendar/models/res_users.py | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/calendar/models/res_users.py')
| -rw-r--r-- | addons/calendar/models/res_users.py | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/addons/calendar/models/res_users.py b/addons/calendar/models/res_users.py new file mode 100644 index 00000000..bdb25f75 --- /dev/null +++ b/addons/calendar/models/res_users.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +import datetime + +from odoo import api, fields, models, modules, _ +from pytz import timezone, UTC + + +class Users(models.Model): + _inherit = 'res.users' + + def _systray_get_calendar_event_domain(self): + tz = self.env.user.tz + start_dt = datetime.datetime.utcnow() + if tz: + start_date = timezone(tz).localize(start_dt).astimezone(UTC).date() + else: + start_date = datetime.date.today() + end_dt = datetime.datetime.combine(start_date, datetime.time.max) + if tz: + end_dt = timezone(tz).localize(end_dt).astimezone(UTC) + + return ['&', '|', + '&', + '|', + ['start', '>=', fields.Datetime.to_string(start_dt)], + ['stop', '>=', fields.Datetime.to_string(start_dt)], + ['start', '<=', fields.Datetime.to_string(end_dt)], + '&', + ['allday', '=', True], + ['start_date', '=', fields.Date.to_string(start_date)], + ('attendee_ids.partner_id', '=', self.env.user.partner_id.id)] + + @api.model + def systray_get_activities(self): + res = super(Users, self).systray_get_activities() + + meetings_lines = self.env['calendar.event'].search_read( + self._systray_get_calendar_event_domain(), + ['id', 'start', 'name', 'allday', 'attendee_status'], + order='start') + meetings_lines = [line for line in meetings_lines if line['attendee_status'] != 'declined'] + if meetings_lines: + meeting_label = _("Today's Meetings") + meetings_systray = { + 'type': 'meeting', + 'name': meeting_label, + 'model': 'calendar.event', + 'icon': modules.module.get_module_icon(self.env['calendar.event']._original_module), + 'meetings': meetings_lines, + } + res.insert(0, meetings_systray) + + return res |
