Блог

Как создать календарное представление в Odoo 19

post-title

В этом блоге объясняется, как создать представление календаря в Odoo 19, используя простой пример пользовательского модуля.

Как работает представление календаря в Odoo.

Календарный вид позволяет пользователям просматривать записи, упорядоченные по дням, неделям или месяцам. Каждая запись отображается в календаре как событие на основе полей даты начала и окончания. Пользователи могут взаимодействовать с этими событиями непосредственно из интерфейса календаря.

Календарный вид особенно полезен в следующих случаях:

  • Записи зависят от дат начала и окончания.
  • Необходимо составить график и спланировать действия.
  • Визуальный обзор эффективнее, чем списковые или формальные представления.

Перед созданием календарного представления убедитесь в следующем:

  • Создан пользовательский модуль.
  • Модель содержит как минимум одно поле типа Datetime или Date.

Шаг 1: Создание модели

Сначала определите модель, содержащую необходимые поля дат . Календарный вид должен иметь поле начальной даты и, при необходимости, поле конечной даты.

from odoo import models, fields
class CustomEvent(models.Model):
    _name = 'custom.event'
    _description = 'Custom Calendar Event'
    name = fields.Char(string='Event Title', required=True)
    start_date = fields.Datetime(string='Start Date', required=True)
    end_date = fields.Datetime(string='End Date')
    description = fields.Text(string='Description')

Поле start_date является обязательным для корректной работы календаря. Поле end_date является необязательным, но рекомендуется для лучшей визуализации.

Шаг 2: Настройка представления календаря

Далее создайте представление календаря с помощью XML.

<odoo>
    <record id="view_custom_event_calendar" model="ir.ui.view">
        <field name="name">custom.event.calendar</field>
        <field name="model">custom.event</field>
        <field name="arch" type="xml">
            <calendar
                string="Custom Events"
                date_start="start_date"
                date_stop="end_date">
                <field name="name"/>
                <field name="description"/>
            </calendar>
        </field>
    </record>
</odoo>

В режиме календаря доступно несколько атрибутов, таких как date_start и date_end . Давайте рассмотрим их по порядку.

  • date_start : Поле, используемое в качестве даты начала события.
  • date_stop : Поле, используемое в качестве даты окончания события.
  • строка : Заголовок, отображаемый в календаре

Шаг 3: Создайте окно действий

Для отображения календаря в Odoo его необходимо связать с действием.

<record id="action_custom_event" model="ir.actions.act_window">
    <field name="name">Custom Events</field>
    <field name="res_model">custom.event</field>
    <field name="view_mode">calendar,list,form</field>
</record>

Параметр view_mode включает календарь, поэтому отображение календаря доступно по умолчанию.

Шаг 4: Добавьте пункт меню

Наконец, добавьте пункт меню для доступа к календарю из интерфейса Odoo.

<menuitem id="menu_custom_event_root"
          name="Custom Events"/>
<menuitem id="menu_custom_event"
          name="Calendar"
          parent="menu_custom_event_root"
          action="action_custom_event"/>

После обновления модуля календарный вид станет доступен из меню.

  • В режиме календаря поддерживается перетаскивание, что позволяет пользователям изменять даты событий непосредственно из пользовательского интерфейса.
  • Фильтры и группировки можно применять прямо в окне поиска.
  • Если вместо поля "Дата и время" используется только поле "Дата", события будут отображаться как события на весь день.
  • Календарные представления также можно раскрашивать, используя дополнительные атрибуты, такие как цвет.

Календарные представления в Odoo 19 предоставляют понятный и интерактивный способ управления записями, привязанными ко времени. Определив соответствующие поля модели, создав XML-файл календарного представления и связав его с действиями и меню, вы можете легко интегрировать функциональность планирования в свои пользовательские модули.

Этот подход может быть распространен на различные бизнес-сценарии, такие как планирование задач, составление графиков встреч и управление ресурсами.