# Copyright 2016-2019 Camptocamp SA # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) from odoo import models from odoo.http import request from ..statsd_client import customer, environment, statsd class IrHttp(models.AbstractModel): _inherit = "ir.http" @classmethod def _dispatch(cls, endpoint): if not statsd: return super()._dispatch(endpoint) path_info = request.httprequest.environ.get("PATH_INFO") if path_info.startswith("/longpolling/"): return super()._dispatch(endpoint) parts = [ "http", ] if path_info.startswith("/web/dataset/call_button"): parts += [ "button", customer, environment, request.params["model"].replace(".", "_"), request.params["method"], ] elif path_info.startswith("/web/dataset/exec_workflow"): parts += [ "workflow", customer, environment, request.params["model"].replace(".", "_"), request.params["signal"], ] else: parts += [ "request", customer, environment, ] with statsd.timer(".".join(parts)): return super()._dispatch(endpoint)