From c01c10c4bd8adc13a0a043bd50e7157f89fec229 Mon Sep 17 00:00:00 2001 From: Jeremy Kersten Date: Wed, 9 Dec 2015 15:36:33 +0100 Subject: [PATCH] [FIX] base: override default int converter from werkzeug Default IntConverter (as well as Float, ...) doesn't support negative value by default with werkzeug. http://werkzeug.pocoo.org/docs/0.11/routing/ --- openerp/addons/base/ir/ir_http.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/openerp/addons/base/ir/ir_http.py b/openerp/addons/base/ir/ir_http.py index 9f08d09f170..9432c463045 100644 --- a/openerp/addons/base/ir/ir_http.py +++ b/openerp/addons/base/ir/ir_http.py @@ -54,12 +54,26 @@ class ModelsConverter(werkzeug.routing.BaseConverter): def to_url(self, value): return ",".join(i.id for i in value) +class SignedIntConverter(werkzeug.routing.BaseConverter): + def __init__(self, url_map): + super(SignedIntConverter, self).__init__(url_map) + + def to_python(self, value): + try: + return int(value) + except ValueError: + raise werkzeug.routing.ValidationError() + + def to_url(self, value): + return value + + class ir_http(osv.AbstractModel): _name = 'ir.http' _description = "HTTP routing" def _get_converters(self): - return {'model': ModelConverter, 'models': ModelsConverter} + return {'model': ModelConverter, 'models': ModelsConverter, 'int': SignedIntConverter} def _find_handler(self, return_rule=False): return self.routing_map().bind_to_environ(request.httprequest.environ).match(return_rule=return_rule)