From 1ef791d1defc3054966ae000ced4f80ad9fed57b Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 18 Oct 2018 08:05:18 +0000 Subject: [PATCH] [FIX] base_import: date(time) columns matching * actually pass the flags as flags in re.sub, passing re.IGNORECASE as *count* doesn't actually ignore case * ensure the entire string is matched by the pattern, or we'll get shortest-matching-pattern which is *not* what the later strptime will do closes odoo/odoo#27925 --- addons/base_import/models/base_import.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/addons/base_import/models/base_import.py b/addons/base_import/models/base_import.py index bd7bc74161422..35d5692e95bac 100644 --- a/addons/base_import/models/base_import.py +++ b/addons/base_import/models/base_import.py @@ -954,17 +954,12 @@ def to_re(pattern): """ cut down version of TimeRE converting strptime patterns to regex """ pattern = re.sub(r'\s+', r'\\s+', pattern) - pattern = re.sub('%([a-z])', _replacer, pattern, re.IGNORECASE) - + pattern = re.sub('%([a-z])', _replacer, pattern, flags=re.IGNORECASE) + pattern = '^' + pattern + '$' return re.compile(pattern, re.IGNORECASE) def _replacer(m): return _P_TO_RE[m.group(1)] -def _joinre(patterns): - return '(' + '|'.join( - re.escape(p) - for p in sorted(patterns, key=len, reverse=True) - ) + ')' _P_TO_RE = { 'd': r"(3[0-1]|[1-2]\d|0[1-9]|[1-9]| [1-9])", 'H': r"(2[0-3]|[0-1]\d|\d)",