From 30b7335e6624073a0979807201a55a66e5c9f8e9 Mon Sep 17 00:00:00 2001 From: Alexandre Fayolle Date: Tue, 27 Aug 2024 12:01:36 +0200 Subject: [PATCH 1/3] [FIX] monitoring_log_requests: response_status_code the response status code would not be properly logged -> fix the code --- .pre-commit-config.yaml | 1 - monitoring_log_requests/models/ir_http.py | 4 ++-- .../odoo/addons/monitoring_log_requests | 1 + setup/monitoring_log_requests/setup.py | 6 ++++++ 4 files changed, 9 insertions(+), 3 deletions(-) create mode 120000 setup/monitoring_log_requests/odoo/addons/monitoring_log_requests create mode 100644 setup/monitoring_log_requests/setup.py diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index dbf92ff..b518033 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,7 +6,6 @@ exclude: | ^base_fileurl_field/| ^cloud_platform_exoscale/| ^cloud_platform_ovh/| - ^monitoring_log_requests/| ^monitoring_statsd/| ^test_base_fileurl_field/| # END NOT INSTALLABLE ADDONS diff --git a/monitoring_log_requests/models/ir_http.py b/monitoring_log_requests/models/ir_http.py index 3df4923..25a7f57 100644 --- a/monitoring_log_requests/models/ir_http.py +++ b/monitoring_log_requests/models/ir_http.py @@ -62,8 +62,8 @@ class IrHttp(models.AbstractModel): # response things "response_status_code": None, } - if hasattr(request, "status_code"): - info["status_code"] = response.status_code + if hasattr(response, "status_code"): + info["response_status_code"] = response.status_code if hasattr(request, "session"): info.update( { diff --git a/setup/monitoring_log_requests/odoo/addons/monitoring_log_requests b/setup/monitoring_log_requests/odoo/addons/monitoring_log_requests new file mode 120000 index 0000000..8bcfc7a --- /dev/null +++ b/setup/monitoring_log_requests/odoo/addons/monitoring_log_requests @@ -0,0 +1 @@ +../../../../monitoring_log_requests \ No newline at end of file diff --git a/setup/monitoring_log_requests/setup.py b/setup/monitoring_log_requests/setup.py new file mode 100644 index 0000000..28c57bb --- /dev/null +++ b/setup/monitoring_log_requests/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) From 5f36852b9a768e672444b96e0bb173692b5ffc9d Mon Sep 17 00:00:00 2001 From: Alexandre Fayolle Date: Tue, 27 Aug 2024 12:26:54 +0200 Subject: [PATCH 2/3] filter out websocket requests --- monitoring_log_requests/models/ir_http.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monitoring_log_requests/models/ir_http.py b/monitoring_log_requests/models/ir_http.py index 25a7f57..c263de1 100644 --- a/monitoring_log_requests/models/ir_http.py +++ b/monitoring_log_requests/models/ir_http.py @@ -30,7 +30,7 @@ class IrHttp(models.AbstractModel): @classmethod def _monitoring_blacklist(cls, request): path_info = request.httprequest.environ.get("PATH_INFO") - if path_info.startswith("/longpolling/"): + if path_info.startswith(("/longpolling/", "/websocket")): return True return False From 535b42ee4f7cb278cd320e52d26eb92c920e74a8 Mon Sep 17 00:00:00 2001 From: Alexandre Fayolle Date: Tue, 27 Aug 2024 12:30:06 +0200 Subject: [PATCH 3/3] [IMP] provide response_status_code when response is a dict/list --- monitoring_log_requests/models/ir_http.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/monitoring_log_requests/models/ir_http.py b/monitoring_log_requests/models/ir_http.py index c263de1..f0341f6 100644 --- a/monitoring_log_requests/models/ir_http.py +++ b/monitoring_log_requests/models/ir_http.py @@ -6,7 +6,7 @@ import logging import time from odoo import models -from odoo.http import request as http_request +from odoo.http import Response, request as http_request from odoo.tools.config import config _logger = logging.getLogger("monitoring.http.requests") @@ -62,8 +62,10 @@ class IrHttp(models.AbstractModel): # response things "response_status_code": None, } - if hasattr(response, "status_code"): + if isinstance(response, Response) and hasattr(response, "status_code"): info["response_status_code"] = response.status_code + else: + info["response_status_code"] = 200 if hasattr(request, "session"): info.update( {