OdooWiki OCA HUB

Readonly publishing of calendars

base_ical folder_open OCA/server-backend open_in_new
Tools Licencia: AGPL-3

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.0

Permite 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

web

Menús que añade

menu_ical
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-03
Confirmado (verificado en repositorio y rama) Estimado (sin verificar) Sin información

Estado 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.0

Para 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 user para 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.

info

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.