diff --git a/addons/base_address_extended/models/res_partner.py b/addons/base_address_extended/models/res_partner.py index 7ddb2acc6c6..87afa90fb27 100644 --- a/addons/base_address_extended/models/res_partner.py +++ b/addons/base_address_extended/models/res_partner.py @@ -93,10 +93,18 @@ class Partner(models.Model): if separator and field_name: #maxsplit set to 1 to unpack only the first element and let the rest untouched tmp = street_raw.split(separator, 1) + if previous_greedy in vals: + # attach part before space to preceding greedy field + append_previous, sep, tmp[0] = tmp[0].rpartition(' ') + street_raw = separator.join(tmp) + vals[previous_greedy] += sep + append_previous if len(tmp) == 2: field_value, street_raw = tmp vals[field_name] = field_value if field_value or not field_name: + previous_greedy = None + if field_name == 'street_name' and separator == ' ': + previous_greedy = field_name # select next field to find (first pass OR field found) # [2:-2] is used to remove the extra chars '%(' and ')s' field_name = re_match.group()[2:-2] diff --git a/addons/base_address_extended/tests/test_street_fields.py b/addons/base_address_extended/tests/test_street_fields.py index 6133e56663e..8d27ad3a178 100644 --- a/addons/base_address_extended/tests/test_street_fields.py +++ b/addons/base_address_extended/tests/test_street_fields.py @@ -35,6 +35,7 @@ class TestStreetFields(TransactionCase): {'country_id': us_id, 'street': '40 Chaussee de Namur'}, {'country_id': us_id, 'street': 'Chaussee de Namur'}, {'country_id': mx_id, 'street': 'Av. Miguel Hidalgo y Costilla 601'}, + {'country_id': mx_id, 'street': 'Av. Miguel Hidalgo y Costilla 601/40'}, {'country_id': ch_id, 'street': 'header Chaussee de Namur, 40 - 2b trailer'}, {'country_id': ch_id, 'street': 'header Chaussee de Namur, 40 trailer'}, {'country_id': ch_id, 'street': 'header Chaussee de Namur trailer'}, @@ -43,7 +44,8 @@ class TestStreetFields(TransactionCase): {'street_name': 'Chaussee de Namur', 'street_number': '40', 'street_number2': '2b'}, {'street_name': 'Chaussee de Namur', 'street_number': '40', 'street_number2': False}, {'street_name': 'de Namur', 'street_number': 'Chaussee', 'street_number2': False}, - {'street_name': 'Av.', 'street_number': 'Miguel Hidalgo y Costilla 601', 'street_number2': False}, + {'street_name': 'Av. Miguel Hidalgo y Costilla', 'street_number': '601', 'street_number2': False}, + {'street_name': 'Av. Miguel Hidalgo y Costilla', 'street_number': '601', 'street_number2': '40'}, {'street_name': 'Chaussee de Namur', 'street_number': '40', 'street_number2': '2b'}, {'street_name': 'Chaussee de Namur', 'street_number': '40', 'street_number2': False}, {'street_name': 'Chaussee de Namur', 'street_number': False, 'street_number2': False} @@ -108,6 +110,7 @@ class TestStreetFields(TransactionCase): {'country_id': us_id, 'street': '40 Chaussee de Namur'}, {'country_id': us_id, 'street': 'Chaussee de Namur'}, {'country_id': mx_id, 'street': 'Av. Miguel Hidalgo y Costilla 601'}, + {'country_id': mx_id, 'street': 'Av. Miguel Hidalgo y Costilla 601/40'}, {'country_id': ch_id, 'street': 'header Chaussee de Namur, 40 - 2b trailer'}, {'country_id': ch_id, 'street': 'header Chaussee de Namur, 40 trailer'}, {'country_id': ch_id, 'street': 'header Chaussee de Namur trailer'}, @@ -116,7 +119,8 @@ class TestStreetFields(TransactionCase): {'street_name': 'Chaussee de Namur', 'street_number': '40', 'street_number2': '2b'}, {'street_name': 'Chaussee de Namur', 'street_number': '40', 'street_number2': False}, {'street_name': 'de Namur', 'street_number': 'Chaussee', 'street_number2': False}, - {'street_name': 'Av.', 'street_number': 'Miguel Hidalgo y Costilla 601', 'street_number2': False}, + {'street_name': 'Av. Miguel Hidalgo y Costilla', 'street_number': '601', 'street_number2': False}, + {'street_name': 'Av. Miguel Hidalgo y Costilla', 'street_number': '601', 'street_number2': '40'}, {'street_name': 'Chaussee de Namur', 'street_number': '40', 'street_number2': '2b'}, {'street_name': 'Chaussee de Namur', 'street_number': '40', 'street_number2': False}, {'street_name': 'Chaussee de Namur', 'street_number': False, 'street_number2': False}