Skip to content

Conversation

@joa-adhoc
Copy link
Contributor

No description provided.

Copilot AI review requested due to automatic review settings December 10, 2025 14:12
@roboadhoc
Copy link

Pull request status dashboard

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Este PR corrige un problema en el módulo base_bg al agregar soporte para el parámetro priority en el encolado de trabajos y filtrar valores no serializables del contexto para evitar errores de serialización JSON.

Cambios principales:

  • Extracción y uso del parámetro priority en bg_enqueue (con valor por defecto 10)
  • Filtrado del contexto para incluir solo valores serializables antes de guardar en context_json
  • Nuevo método helper is_serializable que verifica si un valor puede ser serializado a JSON

"""
Método que verifica si un valor es serializable.
:param self: Modelo ai.utils
Copy link

Copilot AI Dec 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

El parámetro :param self: Modelo ai.utils en el docstring es incorrecto. Debería ser base.bg en lugar de ai.utils, que es el modelo real donde se define este método.

Suggested change
:param self: Modelo ai.utils
:param self: base.bg

Copilot uses AI. Check for mistakes.
:return: A display notification
"""
priority = kwargs.pop("priority", 10)
Copy link

Copilot AI Dec 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Se ha agregado soporte para el parámetro priority (línea 28) pero falta documentarlo en el docstring del método. Considera agregar :param priority: Prioridad del trabajo (valor menor = mayor prioridad), default: 10 en la sección "Special kwargs" del docstring.

Copilot uses AI. Check for mistakes.
Comment on lines +73 to +84
def is_serializable(self, value: Any) -> bool:
"""
Método que verifica si un valor es serializable.
:param self: Modelo ai.utils
:param value: Valor a verificar
"""
try:
json.dumps(value)
return True
except Exception:
return False
Copy link

Copilot AI Dec 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

La nueva funcionalidad de is_serializable y el filtrado de contexto (líneas 30, 73-84) carecen de cobertura de tests. El repositorio tiene tests comprehensivos en base_bg/tests/test_bg_job.py, por lo que deberían agregarse casos de prueba que verifiquen:

  1. Que el método is_serializable retorne True para valores serializables (dict, list, str, int, etc.)
  2. Que retorne False para valores no serializables (objetos Odoo, recordsets, etc.)
  3. Que bg_enqueue filtre correctamente el contexto, removiendo valores no serializables

Copilot uses AI. Check for mistakes.
Comment on lines +28 to +36
priority = kwargs.pop("priority", 10)
max_retries = kwargs.pop("max_retries", 3)
context = {k: v for k, v in self.env.context.items() if self.is_serializable(v)}
name = kwargs.pop("name", f"{self._name}.{method}")
job_vals = {
"name": name,
"model": self._name,
"method": method,
"priority": priority,
Copy link

Copilot AI Dec 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Se están realizando cambios en el modelo base.bg (adición de campo priority en job_vals y lógica de filtrado de contexto), pero el __manifest__.py no incrementa la versión. Según las guías del proyecto, cuando se modifican modelos, vistas, seguridad o datos, se debe hacer un bump de versión. Se recomienda incrementar de 19.0.1.0.0 a 19.0.1.0.1.

Copilot generated this review using guidance from repository custom instructions.
try:
json.dumps(value)
return True
except Exception:
Copy link

Copilot AI Dec 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

El uso de una cláusula except Exception genérica puede ocultar errores inesperados. Se recomienda capturar excepciones específicas como TypeError y ValueError, que son las que lanza json.dumps cuando encuentra valores no serializables. Ejemplo:

except (TypeError, ValueError):
    return False
Suggested change
except Exception:
except (TypeError, ValueError):

Copilot uses AI. Check for mistakes.
@rov-adhoc
Copy link
Contributor

@roboadhoc r+

@roboadhoc roboadhoc closed this in 0e57b11 Dec 10, 2025
@roboadhoc roboadhoc added the 18.1 label Dec 10, 2025
@roboadhoc roboadhoc deleted the 19.0-base_bg_fix-joa-2 branch December 10, 2025 14:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants