19.0 vanilla

This commit is contained in:
Ernad Husremovic 2026-03-09 09:32:34 +01:00
parent 5faf7397c5
commit 2696f14ed7
721 changed files with 220375 additions and 91221 deletions

View file

@ -0,0 +1,5 @@
import { models } from "@web/../tests/web_test_helpers";
export class CalendarAttendee extends models.ServerModel {
_name = "calendar.attendee";
}

View file

@ -0,0 +1,17 @@
import { models, fields, serverState } from "@web/../tests/web_test_helpers";
export class CalendarEvent extends models.ServerModel {
_name = "calendar.event";
user_id = fields.Generic({ default: serverState.userId });
partner_id = fields.Generic({ default: serverState.partnerId });
partner_ids = fields.Generic({ default: [[6, 0, [serverState.partnerId]]] });
has_access() {
return true;
}
get_default_duration() {
return 3.25;
}
}

View file

@ -0,0 +1,5 @@
import { models } from "@web/../tests/web_test_helpers";
export class CalendarFilters extends models.ServerModel {
_name = "calendar.filters";
}

View file

@ -0,0 +1,39 @@
import { mailModels, openView } from "@mail/../tests/mail_test_helpers";
import { fields } from "@web/../tests/web_test_helpers";
export class MailActivity extends mailModels.MailActivity {
name = fields.Char();
async action_create_calendar_event() {
await openView({
res_model: "calendar.event",
views: [[false, "calendar"]],
});
return {
type: "ir.actions.act_window",
name: "Meetings",
res_model: "calendar.event",
view_mode: "calendar",
views: [[false, "calendar"]],
target: "current",
};
}
unlink_w_meeting() {
const eventIds = this.map((act) => act.calendar_event_id);
const res = this.unlink(arguments[0]);
this.env["calendar.event"].unlink(eventIds);
return res;
}
/** @param {number[]} ids */
_to_store(store) {
super._to_store(...arguments);
for (const activity of this) {
if (activity.calendar_event_id) {
store._add_record_fields(this.browse(activity.id), {
calendar_event_id: activity.calendar_event_id,
});
}
}
}
}

View file

@ -0,0 +1,67 @@
import { mailModels } from "@mail/../tests/mail_test_helpers";
import { serverState } from "@web/../tests/web_test_helpers";
import { serializeDateTime } from "@web/core/l10n/dates";
const { DateTime } = luxon;
export class ResUsers extends mailModels.ResUsers {
/**
* Simulates `_systray_get_calendar_event_domain` on `res.users`.
*
* @private
*/
_systray_get_calendar_event_domain() {
const startDate = DateTime.fromObject({
hours: 0,
minutes: 0,
seconds: 0,
milliseconds: 0,
});
const endDate = DateTime.fromObject({
hours: 23,
minutes: 59,
seconds: 59,
milliseconds: 999,
});
const currentPartnerAttendeeIds = this.env["calendar.attendee"].search([
["partner_id", "=", serverState.partnerId],
["state", "!=", "declined"],
]);
return [
"&",
"|",
"&",
"|",
["start", ">=", serializeDateTime(startDate)],
["stop", ">=", serializeDateTime(startDate)],
["start", "<=", serializeDateTime(endDate)],
// FIXME: Makes "activity_menu.test.js" fail
// "&",
// ["allday", "=", true],
// ["start_date", "=", serializeDateTime(startDate)],
["attendee_ids", "in", [...currentPartnerAttendeeIds]],
];
}
/** @override */
_get_activity_groups() {
const activities = super._get_activity_groups();
const meetingsLines = this.env["calendar.event"].search_read(
this._systray_get_calendar_event_domain(),
{
fields: ["id", "start", "name", "allday"],
order: "start",
}
);
if (meetingsLines.length) {
activities.unshift({
id: "calendar.event", // for simplicity
meetings: meetingsLines,
model: "calendar.event",
name: "Today's Meetings",
type: "meeting",
});
}
return activities;
}
}