summaryrefslogtreecommitdiff
path: root/addons/calendar/models/res_users.py
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/calendar/models/res_users.py
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/calendar/models/res_users.py')
-rw-r--r--addons/calendar/models/res_users.py55
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