Vo Minh Thu (OpenERP) has proposed merging
lp:~openerp-dev/openobject-server/trunk-bug-1049653-translatable-unaccent-vmt
into lp:openobject-server.
Requested reviews:
OpenERP Core Team (openerp)
Related bugs:
Bug #1049653 in OpenERP Server: "--unaccent option does not work"
https://bugs.launchpad.net/openobject-server/+bug/1049653
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-bug-1049653-translatable-unaccent-vmt/+merge/131206
--
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-bug-1049653-translatable-unaccent-vmt/+merge/131206
Your team OpenERP R&D Team is subscribed to branch
lp:~openerp-dev/openobject-server/trunk-bug-1049653-translatable-unaccent-vmt.
=== modified file 'openerp/addons/base/test/test_osv_expression.yml'
--- openerp/addons/base/test/test_osv_expression.yml 2012-10-19 04:28:56 +0000
+++ openerp/addons/base/test/test_osv_expression.yml 2012-10-24 15:09:20 +0000
@@ -445,10 +445,15 @@
!record {model: res.company, id: ymltest_unaccent_company}:
name: Hélène
-
- Test the unaccent-enabled 'ilike'.
+ Unaccent. Create a user with an accent in its name (which is inherits'd from res.partner).
+-
+ !record {model: res.users, id: ymltest_unaccent_user}:
+ name: Pénélope
+ login: pp
+-
+ Test the unaccent-enabled 'ilike' on company.
-
!python {model: res.company}: |
- if self.pool.has_unaccent:
ids = self.search(cr, uid, [('name','ilike','Helene')], {})
assert ids == [ref('ymltest_unaccent_company')]
ids = self.search(cr, uid, [('name','ilike','hélène')], {})
@@ -458,6 +463,23 @@
ids = self.search(cr, uid, [('name','not ilike','hélène')], {})
assert ref('ymltest_unaccent_company') not in ids
-
+ Test the unaccent-enabled 'ilike' on user.
+-
+ !python {model: res.partner}: |
+ self._columns['name'].translate = True
+-
+ Test the unaccent-enabled 'ilike' on user.
+-
+ !python {model: res.users}: |
+ ids = self.search(cr, uid, [('name','ilike','Penelope')], {})
+ assert ids == [ref('ymltest_unaccent_user')]
+ ids = self.search(cr, uid, [('name','ilike','pénélope')], {})
+ assert ids == [ref('ymltest_unaccent_user')]
+ ids = self.search(cr, uid, [('name','not ilike','Penelope')], {})
+ assert ref('ymltest_unaccent_user') not in ids
+ ids = self.search(cr, uid, [('name','not ilike','pénélope')], {})
+ assert ref('ymltest_unaccent_user') not in ids
+-
Check that =like/=ilike expressions (no wildcard variants of like/ilike) are working on an untranslated field.
-
!python {model: res.partner }: |
=== modified file 'openerp/osv/expression.py'
--- openerp/osv/expression.py 2012-10-18 12:47:50 +0000
+++ openerp/osv/expression.py 2012-10-24 15:09:20 +0000
@@ -659,11 +659,18 @@
' FROM "' + working_table._table + '"' \
' WHERE "' + left + '" ' + sql_operator + ' ' +" (" + instr + "))"
else:
- subselect += ' AND value ' + sql_operator + instr + \
- ') UNION (' \
- ' SELECT id' \
- ' FROM "' + working_table._table + '"' \
- ' WHERE "' + left + '" ' + sql_operator + instr + ")"
+ if self.has_unaccent and sql_operator in ('ilike', 'not ilike'):
+ subselect += ' AND unaccent(value) ' + sql_operator + ' unaccent(' + instr + \
+ ')) UNION (' \
+ ' SELECT id' \
+ ' FROM "' + working_table._table + '"' \
+ ' WHERE unaccent("' + left + '") ' + sql_operator + ' unaccent(' + instr + '))'
+ else:
+ subselect += ' AND value ' + sql_operator + instr + \
+ ') UNION (' \
+ ' SELECT id' \
+ ' FROM "' + working_table._table + '"' \
+ ' WHERE "' + left + '" ' + sql_operator + instr + ")"
params = [working_table._name + ',' + left,
context.get('lang', False) or 'en_US',
_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help : https://help.launchpad.net/ListHelp