У меня есть "встреча" сущности с атрибутом 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>  
1
tico1993 15 Июн 2020 в 23:18

1 ответ

Лучший ответ

Согласно документации, нет возможности отключить щелчок по определенному дню в представлении календаря.

Вы можете добавить ограничение, чтобы предупреждать пользователей, когда они пытаются назначить встречу на будние дни.

Если вам нужно избегать открытия формы при нажатии на будние дни, переопределите метод _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.
  • не забудьте обновить страницу!
  • или, может быть, для сохранения файла с кодом
1
MaartenDev 18 Июн 2020 в 20:04