123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- # -*- 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 = {
- 'id': self.env['ir.model']._get('calendar.event').id,
- '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
|