odoo - 如何禁用odoo日历中的天数?
问题描述
我有一个带有 date_appointment 属性的实体“约会”。我还为该约会创建了一个日历视图。约会永远不应该安排在周末,所以我在 odoo datepicker 中禁用了那些日子(在 doem 视图中)。但是,当我在日历视图中单击任何星期六或星期日时,它会显示表单视图,我可以在其中创建当天的约会。有什么办法可以在 Odoo 日历中禁用那些日子,这样用户就不能在任何周末点击创建约会。我已经禁用了 quick_add 选项
<record id="appointment_view_calendar" model="ir.ui.view">
<field name="name">appointment.view.calendar</field>
<field name="model">tico_hospital.appointment</field>
<field name="arch" type="xml">
<calendar string="Consultas programadas" mode="week" date_start="date_appointment" quick_add="False" color="patient_id">
<field name="patient_id"/>
<field name="reason"/>
</calendar>
</field>
</record>
解决方案
根据文档,没有选项可以禁用日历视图中特定日期的点击。
您可以添加约束以在用户尝试创建工作日约会时提醒他们。
如果您需要避免在单击工作日时打开表单视图,请覆盖_onOpenCreate
日历控制器中的方法。
以下示例检查用户是否单击了工作日,如果是,则显示警报并避免打开表单视图。
odoo.define('web.CustomCalendar', function (require) {
"use strict";
var core = require('web.core');
var Dialog = require('web.Dialog');
var _t = core._t;
var WebCalendarController = require('web.CalendarController');
WebCalendarController.include({
_onOpenCreate: function (event) {
if(event.target.model==='tico_hospital.appointment' && [0, 6].includes(event.data.start.day())) {
Dialog.alert(this, _t("You cannot create an appointment for Sunday or Saturday!"));
return;
}
return this._super(event);
},
});
});
编辑:
要在资产包中添加文件,您需要:
- 在文件夹中添加一个
assets.xml
文件views/
- 在清单文件
views/assets.xml
的键中添加字符串data
创建所需包的继承视图(此处
web.assets_backend
),并使用 XPath 表达式添加文件。例如,<template id="assets_backend" name="stack_overflow assets" inherit_id="web.assets_backend"> <xpath expr="." position="inside"> <script type="text/javascript" src="/stack_overflow/static/src/js/script.js"></script> </xpath> </template>
文件可能无法正确加载的原因有很多。以下是您可以尝试解决问题的一些方法:
- 一旦服务器启动,它不知道资产文件是否已被修改。因此,您只需重新启动服务器即可重新生成资产。
- 检查控制台(在开发工具中,通常以 开头
F12
)以确保没有明显的错误 - 尝试在文件开头(在任何模块定义之前)添加一个 console.log,这样您就可以查看文件是否已加载
- 在用户界面中,在调试模式下(在此处插入链接到调试模式),有一个选项可以强制服务器更新其资产文件。
- 使用
debug=assets
模式。这实际上会绕过资产包(请注意,它实际上并没有解决问题。服务器仍然使用过时的包) - 最后,对于开发人员来说,最方便的方法是使用 –dev=all 选项启动服务器。这将激活文件观察程序选项,这将在必要时自动使资产无效。请注意,如果操作系统是 Windows,它就不能很好地工作。
- 记得刷新你的页面!
- 或者保存你的代码文件……</li>
推荐阅读
- javascript - 在本地存储 JS 中存储对象
- python - Python Dataframe:从df行中删除奇数位置的数字?
- reactjs - 构建 React 应用程序时是否可能存在漏洞?
- python - 用户在 Django 中的表单中上传后,图像未加载到 HTML 中
- python - RuntimeWarning:在 double_scalars 和 TypeError 中遇到无效值:“NoneType”对象不可调用
- next.js - 在最新版本的 next.js 中使用 apollo 服务器
- c - STM32F103芯片大约每500ms保持一次复位
- python - 如何使用 python/bash 脚本在 Centos7 中列出所有早于“X”小时的文件?
- unix - Unix命令通过按文件类型和名称分组和排序列出所有文件
- mongodb - 如何对 MongoDB 聚合进行分组