Ir al contenido

Licitación para el desarrollo de "Versionado de Páginas Web" (Website Page Versioning)

16 de septiembre de 2026 por
Licitación para el desarrollo de "Versionado de Páginas Web" (Website Page Versioning)
Asociación Española de Odoo
| Sin comentarios aún

Licitación para desarrollo

Objeto

La presente licitación tiene por objeto:

Desarrollar, con licencia AGPL-3 y conforme a las convenciones de OCA, un módulo para Odoo Community 19 que aporte a las páginas del sitio web una gestión del ciclo de vida de los contenidos para la que actualmente no existe una solución equivalente en Odoo Community ni en los repositorios de OCA: versionado con instantáneas congeladas, edición de borradores sin publicar sobre la misma URL y activación programada por rango de fechas. 

El antecedente conocido, el módulo website_version que Odoo SA publicó en saas-6 y luego pasó a Enterprise, se eliminó en la versión 12 por incompatibilidad con el multi-sitio web. No hay nada equivalente en el core ni en los repositorios de OCA para las versiones 16 a 19. Esta licitación cubre ese hueco.

La URL pública de la página no cambia; es una condición del diseño. Todo el ciclo de versionado trabaja sobre la misma dirección, sin generar URLs alternativas ni enlaces rotos como consecuencia del versionado.

Versionado de páginas

El módulo debe permitir:

  • Capturar una instantánea congelada del contenido completo de cualquier página del sitio: la vista específica que la sirve y los bloques oe_structure embebidos, con todos los idiomas activos.
  • Crear versiones desde el editor del sitio web (“Guardar como versión”) y desde el backend, con nombre, autor y fecha de captura obligatorios, nota opcional y una huella del contenido que permita detectar duplicados.
  • Crear una versión en blanco y copiar el contenido de una versión existente, sin tocar la página publicada.
  • Editar un borrador sobre la misma URL que sirve la página publicada. El guardado cae sobre la instantánea, nunca sobre la página: el visitante no ve cambio alguno hasta la activación.
  • Comparar una versión con el contenido publicado, lado a lado y por idioma.
  • Activar una versión desde el backend. La activación aplica el contenido de la versión a la página publicada en todos los idiomas a la vez, archiva cualquier otra versión publicada de esa página y crea una copia de seguridad automática del contenido anterior.
  • Restaurar el contenido anterior activando esa copia de seguridad, con el mismo mecanismo y sin perder idiomas.
  • Mantener el ciclo de estados borrador, programada, publicada y archivada, con una sola versión publicada por página y bloqueo de activaciones concurrentes.

Programación de campañas

  • Programar la activación de una versión en un rango de fechas (inicio y fin), con dos comportamientos al cierre: restaurar la versión anterior o mantener la activada.
  • Impedir campañas solapadas sobre la misma página.
  • Ejecutar automáticamente la activación y el cierre mediante un planificador, con una frecuencia configurable y de forma idempotente: la reejecución no puede duplicar efectos.
  • Anotar cada activación y cada cierre en un registro de ejecución consultable desde la propia campaña, y permitir cancelar una campaña programada antes de su inicio.

Versionado de fichas de producto (PDP)

  • Extender el mismo ciclo de vida (capturar, editar borrador, comparar, activar, restaurar) al contenido editable de la ficha de producto: los textos comerciales en cada idioma, el nombre, el precio, la imagen principal y la galería, y las líneas de atributos que definen las variantes.
  • Servir el contenido versionado manteniendo la URL pública existente de cada ficha de producto, sin crear páginas duplicadas ni URLs alternativas como consecuencia del versionado.
  • La restauración devolverá la ficha a su estado original campo a campo, incluidos los textos por idioma.

Condiciones técnicas

  • Compatibilidad con Odoo 19 Community, con dependencias únicamente del core y de OCA (website y website_sale), y sin dependencia de módulos enterprise.
  • Multiidioma: capturas, activaciones y restauraciones tratan el contenido por idioma; activar una versión no puede perder una traducción.
  • Multi-sitio web: versiones y campañas pertenecen a la página y solo afectan al sitio web de esa página.
  • Permisos: los editores del sitio web gestionan versiones y campañas; el usuario interno solo lectura.
  • Caché: la activación invalida la caché de la página; las previsualizaciones de borrador no se sirven desde la caché pública.
  • Las versiones se almacenan como datos, no como vistas duplicadas: las actualizaciones de módulos no deben propagarse al contenido guardado en una versión.
  • Separar modularmente lo que es dependiente de website, de lo que depende de website_sale.

Fuera de alcance

  • Versionar las definiciones de snippets del sitio (vistas s_*). El contenido embebido en las páginas sí queda cubierto por las instantáneas.
  • Combinar campañas con el campo date_publish del core, que gobierna la visibilidad de la página de forma independiente.
  • Migrar versiones del website_version histórico.

Componentes Clave

Módulo de versionado: un modelo de versión con su ciclo de estados (borrador, programada, publicada, archivada), autoría, fecha de captura y una huella del contenido para detectar duplicados. La activación escribirá el contenido sobre la vista específica que sirve la página y aprovechará la invalidación de caché nativa en lugar de duplicar vistas.

Integración con el editor web: la edición de borradores debe funcionar dentro del builder del sitio web: los cambios se guardan en la instantánea, no en la página publicada, y el editor debe indicar en todo momento el estado de la versión que se está editando. Se incluirá también una vista de comparación lado a lado entre la versión y el contenido publicado.

Versionado de producto: instantánea del contenido editable de la ficha (textos traducidos por idioma, precio, imágenes, galería y líneas de atributos), con asistente de edición y comparación, y activación vinculada a la plantilla de rediseño servida en la misma URL.

Escalabilidad y Documentación Técnica

El código se publicará bajo licencia AGPL-3, cumplirá las convenciones de OCA disponibles en https://odoo-community.org/page/contributing y se propondrá para su incorporación a los repositorios de OCA mediante su proceso habitual de contribución y revisión.

Calendario

A continuación se detalla el calendario completo de la licitación:

Descripción Fecha Límite
Publicación de la licitación 16 de septiembre de 2026
Fecha final presentación de ofertas 6 de octubre de 2026
Evaluación de ofertas 10 de octubre de 2026
Firma del contrato 15 de octubre de 2026
Entrega y final del contrato Según plazo indicado en la oferta

Contacto

Para la resolución de dudas o consultas de esta licitación pueden ponerse en contacto con nosotros mediante el email hola+versioning@aeodoo.org.

Las dudas y preguntas serán resueltas de forma pública en la página de la licitación.

Requisitos

La empresa ofertante deberá:

  • Ser socio de la Asociación Española de Odoo con antigüedad mayor a un año.
  • Tener experiencia demostrable en el desarrollo de módulos Odoo bajo los estándares de calidad de OCA Guidelines (https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst).
  • Acreditar conocimiento del framework frontend de la versión 19 (el nuevo builder/html_builder), necesario para la edición de borradores dentro del editor del sitio web.

Formato de presentación de oferta

Se debe mandar la oferta por correo electrónico a la dirección hola+versioning@aeodoo.org con el asunto Licitación desarrollo “Website Page Versioning” antes de la fecha marcada en el calendario de esta licitación.

El correo debe contener la siguiente documentación:

  1. Un documento de 2 páginas en formato PDF que describa tu compañía y los servicios que ofrece, con un desglose del equipo de trabajo que realizará el proyecto con las diferentes responsabilidades de cada uno.
  2. Un documento en formato PDF que contenga la descripción de la implementación del desarrollo, así como la planificación del proyecto entre las fechas de inicio y final del mismo recogidas en el calendario de esta licitación.
  3. Un documento en formato PDF con la propuesta económica.
  4. [Opcional] Un informe jurídico de cumplimiento normativo del Reglamento (UE) 2016/679 y de la Ley Orgánica 3/2018, de Protección de Datos Personales y garantía de los derechos digitales.

Propiedad intelectual

Todos los códigos desarrollados específicamente para este proyecto en el marco de la presente contratación se licenciarán bajo AGPL-3 y se propondrán para su incorporación a los repositorios de OCA mediante su proceso habitual de contribución y revisión.

Evaluación de las ofertas

La junta directiva valorará cada una de las ofertas recibidas según los siguientes criterios:

  • Plazos de ejecución del proyecto.
  • Calidad de la descripción y planificación del desarrollo.
  • Experiencia previa con el builder del sitio web y la caché de páginas de la versión 19.
  • Precio.
  • Informe jurídico de cumplimiento normativo.

Anexo técnico (notas para los ofertantes)

Este anexo recoge el diseño de referencia contra el que se evaluará la propuesta técnica. No sustituye a los requerimientos: los describe con el detalle suficiente para que la oferta pueda planificarse con conocimiento de causa.

Dónde encaja cada pieza. La versión congelada se guarda como datos del módulo (un diccionario serializado {idioma: XML} más las instantáneas de los bloques oe_structure), no como vistas COW duplicadas. Así las versiones quedan fuera del catálogo de vistas y a salvo de las actualizaciones de módulos. La activación escribe el contenido sobre la vista específica que sirve la página, de modo que la identidad de la vista se mantiene estable y la invalidación de la caché de plantillas la hace el propio ORM.

Cómo se edita sin publicar. Cuando la URL lleva el parámetro de versión, un plugin del builder (cargado en el bundle website.website_builder_assets) redirige el guardado hacia la instantánea en lugar de hacia la vista publicada. La vista pública no se toca y el visitante normal sigue viendo el contenido vigente. Las previsualizaciones de borrador no se sirven nunca desde la caché pública.

La ficha de producto. El mismo modelo de versión se extiende con un tipo de destino “producto”: captura los campos editables de la PDP (textos traducidos, precio, imágenes y galería, líneas de atributos) y, al activarse, enlaza con una plantilla de rediseño que se sirve en la misma URL de /shop. El ciclo (borrador, comparación, activación con copia de seguridad) es idéntico al de las páginas.

Qué se pide validar con tests. Captura multiidioma y de bloques oe_structure, activación y restauración en todos los idiomas, copia de seguridad automática, no propagación de actualizaciones a las versiones, aislamiento multi-sitio, bloqueo de activaciones concurrentes, idempotencia del planificador, y el ciclo completo de versionado de producto. Se valorarán además tours de interfaz para la creación de versiones y la edición de borradores.

Licitación para el desarrollo de "Versionado de Páginas Web" (Website Page Versioning)
Asociación Española de Odoo 16 de septiembre de 2026
Etiquetas
Iniciar sesión para dejar un comentario
Oferta de empleo: Coordinador/a de AEOdoo