如何在odoo日历中禁用天数?

  • 本文关键字:odoo 日历 odoo
  • 更新时间 :
  • 英文 :


我有一个具有date_appointment属性的实体"约会"。我还为该约会创建了一个日历视图。约会永远不应该安排在周末,所以我在odoo日期选择器中禁用了那些日子(在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);
},
});
});  

编辑:

要在资源包中添加文件,您需要:

  • views/文件夹中添加assets.xml文件
  • 在清单文件的data键中添加字符串views/assets.xml
  • 创建所需捆绑包的继承视图(此处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打开(以确保没有明显的错误
  • 尝试在文件的开头(在任何模块定义之前(添加控制台.log以便查看文件是否已加载
  • 在用户界面的调试模式下(在此处插入调试模式的链接(,有一个选项可以强制服务器更新其资产文件。
  • 使用debug=assets模式。这实际上将绕过资源包(请注意,它实际上并不能解决问题。服务器仍然使用过时的捆绑包(
  • 最后,对于开发人员来说,最方便的方法是使用 –dev=all 选项启动服务器。这将激活文件观察程序选项,这些选项将在必要时自动使资产失效。请注意,如果操作系统是Windows,则它不能很好地工作。
  • 记得刷新您的页面!
  • 或者也许是为了保存您的代码文件...

最新更新