diff --git a/addons/http_routing/models/ir_http.py b/addons/http_routing/models/ir_http.py index 650de9ad74d..c2b8c92197f 100644 --- a/addons/http_routing/models/ir_http.py +++ b/addons/http_routing/models/ir_http.py @@ -99,8 +99,9 @@ def slug(value): return f"{slugname}-{identifier}" -# NOTE: as the pattern is used as it for the ModelConverter (ir_http.py), do not use any flags +# NOTE: the second pattern is used for the ModelConverter, do not use nor flags nor groups _UNSLUG_RE = re.compile(r'(?:(\w{1,2}|\w[A-Za-z0-9-_]+?\w)-)?(-?\d+)(?=$|\/|#|\?)') +_UNSLUG_ROUTE_PATTERN = r'(?:(?:\w{1,2}|\w[A-Za-z0-9-_]+?\w)-)?(?:-?\d+)(?=$|\/|#|\?)' def unslug(s): @@ -248,13 +249,13 @@ class ModelConverter(ir_http.ModelConverter): def __init__(self, url_map, model=False, domain='[]'): super(ModelConverter, self).__init__(url_map, model) self.domain = domain - self.regex = _UNSLUG_RE.pattern + self.regex = _UNSLUG_ROUTE_PATTERN def to_url(self, value): return slug(value) def to_python(self, value): - matching = re.match(self.regex, value) + matching = _UNSLUG_RE.match(value) _uid = RequestUID(value=value, match=matching, converter=self) record_id = int(matching.group(2)) env = api.Environment(request.cr, _uid, request.context)