94 lines
3.2 KiB
JavaScript
94 lines
3.2 KiB
JavaScript
/** @odoo-module **/
|
|
|
|
// ensure mail override is applied first.
|
|
import '@mail/../tests/helpers/mock_server';
|
|
|
|
import { patch } from '@web/core/utils/patch';
|
|
import { MockServer } from '@web/../tests/helpers/mock_server';
|
|
|
|
import { datetime_to_str } from 'web.time';
|
|
|
|
patch(MockServer.prototype, 'calendar', {
|
|
//--------------------------------------------------------------------------
|
|
// Private
|
|
//--------------------------------------------------------------------------
|
|
|
|
/**
|
|
* @override
|
|
*/
|
|
async _performRPC(route, args) {
|
|
// mail.activity methods
|
|
if (args.model === 'mail.activity' && args.method === 'action_create_calendar_event') {
|
|
return {
|
|
type: 'ir.actions.act_window',
|
|
name: "Meetings",
|
|
res_model: 'calendar.event',
|
|
view_mode: 'calendar',
|
|
views: [[false, 'calendar']],
|
|
target: 'current',
|
|
};
|
|
}
|
|
// calendar.event methods
|
|
if (args.model === 'calendar.event' && args.method === 'check_access_rights') {
|
|
return true;
|
|
}
|
|
return this._super(...arguments);
|
|
},
|
|
|
|
//--------------------------------------------------------------------------
|
|
// Private Mocked Methods
|
|
//--------------------------------------------------------------------------
|
|
|
|
/**
|
|
* Simulates `_systray_get_calendar_event_domain` on `res.users`.
|
|
*
|
|
* @private
|
|
*/
|
|
_mockResUsers_SystrayGetCalendarEventDomain() {
|
|
const startDate = new Date();
|
|
startDate.setUTCHours(0, 0, 0, 0);
|
|
const endDate = new Date();
|
|
endDate.setUTCHours(23, 59, 59, 999);
|
|
const currentPartnerAttendeeIds = this.pyEnv['calendar.attendee'].search([['partner_id', '=', this.currentPartnerId]]);
|
|
return [
|
|
'&',
|
|
'|',
|
|
'&',
|
|
'|',
|
|
['start', '>=', datetime_to_str(startDate)],
|
|
['stop', '>=', datetime_to_str(startDate)],
|
|
['start', '<=', datetime_to_str(endDate)],
|
|
'&',
|
|
['allday', '=', true],
|
|
['start_date', '=', datetime_to_str(startDate)],
|
|
['attendee_ids', 'in', currentPartnerAttendeeIds],
|
|
];
|
|
},
|
|
|
|
/**
|
|
* Simulates `systray_get_activities` on `res.users`.
|
|
*
|
|
* @override
|
|
*/
|
|
_mockResUsersSystrayGetActivities() {
|
|
const activities = this._super(...arguments);
|
|
const meetingsLines = this.pyEnv['calendar.event'].searchRead(
|
|
this._mockResUsers_SystrayGetCalendarEventDomain(),
|
|
{
|
|
fields: ['id', 'start', 'name', 'allday', 'attendee_status'],
|
|
order: 'start',
|
|
}
|
|
).filter(meetingLine => meetingLine['attendee_status'] !== 'declined');
|
|
if (meetingsLines.length) {
|
|
activities.unshift({
|
|
id: 'calendar.event', // for simplicity
|
|
meetings: meetingsLines,
|
|
model: 'calendar.event',
|
|
name: 'Today\'s Meetings',
|
|
type: 'meeting',
|
|
});
|
|
}
|
|
return activities;
|
|
},
|
|
});
|