Este módulo permite a los administradores configurar iCalendars basados en una selección arbitraria sobre modelos arbitrarios.
Los usuarios pueden suscribirse selectivamente a ellos habilitándolos en el formulario de su perfil.
Esto es útil para exponer datos de Odoo a aplicaciones de calendario como Nextcloud.
Traducción automática al español (DeepSeek) de la descripción original de OCA, que está en inglés.
auto_awesome Qué hace este módulo
Generado por IA a partir del código · Odoo 18.0Permite a los administradores publicar fuentes de calendario de solo lectura (URLs .ics) desde cualquier modelo de Odoo, y permite a los usuarios suscribirse a esos calendarios desde su perfil.
Los administradores pueden definir calendarios en el menú iCalendars (área Settings). Cada calendario elige un modelo, un dominio de filtro y, o bien una asignación simple de campos a propiedades del calendario (DTSTAMP, UID, DTSTART, DTEND, SUMMARY), o bien un fragmento avanzado de Python para un control total. Una vista previa en vivo y una pestaña de ayuda muestran las variables disponibles.
Los usuarios ven una pestaña Calendars en su perfil donde pueden generar una URL personal para cada calendario que tienen permitido usar. La URL contiene un token de acceso y se puede pegar en aplicaciones de calendario externas como Nextcloud. Los tokens existentes se listan y se pueden eliminar.
Reglas de negocio: los calendarios se pueden marcar como automáticos, en cuyo caso se habilitan para todos los usuarios actuales y futuros, opcionalmente restringidos a grupos seleccionados. El dominio y las expresiones se validan al guardar. El feed se sirve en modo solo lectura por HTTP y admite peticiones condicionales (304 Not Modified). Solo los usuarios internos pueden crear URLs, y cada URL está vinculada al calendario para el que se generó.
Depende de
Menús que añade
Modelos y campos (4)
- base.ical · modelo nuevoauto (Allow automatically), code, mode (_get_operating_modes), name, model (Model Name), active, domain, preview, model_id, help_text, auto_group_ids (Groups), expression_uid (UID), expression_dtend (DTEND), allowed_users_ids, expression_dtstamp (DTSTAMP), expression_dtstart (DTSTART), expression_summary (SUMMARY)
- res.users · amplía un modelo existenteical_ids
- base.ical.url.show · modelo nuevoid, url
- base.ical.url.description · modelo nuevoname (Description), calendar_id
Texto generado por IA (DeepSeek) al leer el código de la versión 18.0 en GitHub; puede contener errores, así que verifícalo en el código antes de decidir. Ver el código en GitHub
Disponibilidad por versión
Revisado: 2026-11-03Estado de confirmación: 2 confirmadas, 7 sin información de 9 versiones.
Fuentes · Odoo 15.0
Confirmado el 2026-11-03 en la rama 15.0 de OCA/server-backend.
terminal Instalación y uso
Documentación de OCA · Odoo 18.0Configuración
Fuente · Odoo 18.0Para configurar este módulo, debe:
- Vaya a Settings/Technical/iCalendars
- Cree un iCalendar, rellene el modelo que desea exponer y, posiblemente, un dominio para restringir los registros. Puede usar la variable
userpara restringir cosas relativas al usuario que usa el iCalendar - Un iCalendar solo está disponible para los usuarios permitidos. Use Allow automatically para que el iCalendar esté disponible para todos los usuarios
- Consulte los ejemplos a continuación para empezar
Ejemplos
Ejemplo simple, para el modelo calendar.event, rellenaría record.allday and record.start_date or record.start como DTSTART y record.allday and record.stop_date or record.stop como DTEND.
Ejemplo avanzado, para el modelo calendar.event, usaría calendar = record._get_ics_file() en el código.
Ejemplo avanzado, para el modelo hr.leave, puede usar el siguiente código y [("employee_id.user_id", "=", user.id)] en el dominio para exportar las ausencias propias. Esto es un poco más complejo debido a la forma en que Odoo gestiona las horas de inicio y fin de las ausencias, y querrá el día extra ya que la mayoría de los clientes interpretan la fecha de fin como no inclusiva.:
confirmed = ("validate", "validate1")
if record.request_unit_half or record.request_unit_hours:
event = {
"dtstart": event["dtstart"].date(),
"dtend": event["dtend"].date() + timedelta(days=1),
}
else:
event = {
"dtstart": record.date_from,
"dtend": record.date_to,
}
event["summary"] = record.name
event["status"] = "CONFIRMED" if record.state in confirmed else "TENTATIVE"Ejemplo avanzado, para el modelo mail.activity, puede usar el siguiente código y [("user_id", "=", user.id)] y dominio para exportar todas las actividades del usuario.
todo = {
"summary": record.display_name,
"due": record.date_deadline,
"description": html2plaintext(record.note) if record.note else ""
}Para usar este módulo, necesita:
- Ir al formulario de su perfil
- Hacer clic en Enable en uno de los calendarios listados en la pestaña Calendars
- Copiar la URL a la aplicación que utilice
Traducción automática al español (DeepSeek) de la documentación original de OCA; los comandos y el código no se traducen. Sin información verificada en OCA: Instalación.
Las instrucciones de instalación, el paquete de distribución, las dependencias y los pasos de configuración no se muestran porque todavía no se han verificado en la documentación del módulo para ninguna versión.
Datos importados de GitHub: esta ficha refleja la última revisión del catálogo, no una consulta en directo. Verifica siempre en la documentación del módulo y en staging antes de instalar en producción.