From 31fd68de92383716976af97fdfb05a23042ea867 Mon Sep 17 00:00:00 2001 From: Laurent Mignon Date: Mon, 23 Mar 2015 08:25:14 +0100 Subject: [PATCH] [IMP] Sanitize acc_number to upper case Use wildcard on both sides when opertor contains 'like' --- account_bank_statement_import/res_partner_bank.py | 13 ++++++------- .../tests/test_res_partner_bank.py | 8 ++++++++ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/account_bank_statement_import/res_partner_bank.py b/account_bank_statement_import/res_partner_bank.py index 2ed1219..ae6961d 100644 --- a/account_bank_statement_import/res_partner_bank.py +++ b/account_bank_statement_import/res_partner_bank.py @@ -35,16 +35,15 @@ class ResPartnerBank(models.Model): compute='_get_sanitized_account_number', store=True, index=True) def _sanitize_account_number(self, acc_number): - return re.sub(r'\W+', '', acc_number) + if acc_number: + return re.sub(r'\W+', '', acc_number).upper() + return False @api.one @api.depends('acc_number') def _get_sanitized_account_number(self): - value = self.acc_number - if not value: - self.sanitized_acc_number = False - else: - self.sanitized_acc_number = self._sanitize_account_number(value) + self.sanitized_acc_number = self._sanitize_account_number( + self.acc_number) @api.returns('self') def search(self, cr, user, args, offset=0, limit=None, order=None, @@ -59,7 +58,7 @@ class ResPartnerBank(models.Model): else: value = self._sanitize_account_number(value) if 'like' in op: - value = value + '%' + value = '%' + value + '%' args[pos] = ('sanitized_acc_number', op, value) pos += 1 return super(ResPartnerBank, self).search( diff --git a/account_bank_statement_import/tests/test_res_partner_bank.py b/account_bank_statement_import/tests/test_res_partner_bank.py index b98540a..d93d855 100644 --- a/account_bank_statement_import/tests/test_res_partner_bank.py +++ b/account_bank_statement_import/tests/test_res_partner_bank.py @@ -60,3 +60,11 @@ class TestResPartnerBank(TransactionCase): self.assertEquals(partner_bank, vals[0]) self.assertEqual(partner_bank.sanitized_acc_number, sanitized_acc_number) + + # search is case insensitive + vals = partner_bank_model.search( + [('acc_number', '=', sanitized_acc_number.lower())]) + self.assertEquals(1, len(vals)) + vals = partner_bank_model.search( + [('acc_number', '=', acc_number.lower())]) + self.assertEquals(1, len(vals))