diff --git a/bin/addons/base/res/partner/partner.py b/bin/addons/base/res/partner/partner.py
index 72f06c0b2dd..6f2b5135fb8 100644
--- a/bin/addons/base/res/partner/partner.py
+++ b/bin/addons/base/res/partner/partner.py
@@ -118,6 +118,15 @@ def _partner_title_get(self, cr, uid, context={}):
res = obj.read(cr, uid, ids, ['shortcut','name'], context)
return [(r['shortcut'], r['name']) for r in res]
+def _lang_get(self, cr, uid, context={}):
+ obj = self.pool.get('res.lang')
+ ids = obj.search(cr, uid, [], context=context)
+ res = obj.read(cr, uid, ids, ['code', 'name'], context)
+ return [(r['code'], r['name']) for r in res] + [('','')]
+
+
+
+
class res_partner(osv.osv):
_description='Partner'
_name = "res.partner"
@@ -129,7 +138,7 @@ class res_partner(osv.osv):
'parent_id': fields.many2one('res.partner','Main Company', select=2),
'child_ids': fields.one2many('res.partner', 'parent_id', 'Partner Ref.'),
'ref': fields.char('Code', size=64),
- 'lang': fields.many2one('res.lang', 'Language', help="If the selected language is loaded in the system, all documents related to this partner will be printed in this language. If not, it will be english."),
+ 'lang': fields.selection(_lang_get, 'Language', size=5, help="If the selected language is loaded in the system, all documents related to this partner will be printed in this language. If not, it will be english."),
'user_id': fields.many2one('res.users', 'Dedicated Salesman', help='The internal user that is in charge of communicating with this partner if any.'),
'vat': fields.char('VAT',size=32 ,help="Value Added Tax number. Check the box if the partner is subjected to the VAT. Used by the VAT legal statement."),
'bank_ids': fields.one2many('res.partner.bank', 'partner_id', 'Banks'),
diff --git a/bin/addons/base/res/partner/partner_view.xml b/bin/addons/base/res/partner/partner_view.xml
index 2a3796b127d..127a44e4549 100644
--- a/bin/addons/base/res/partner/partner_view.xml
+++ b/bin/addons/base/res/partner/partner_view.xml
@@ -229,7 +229,7 @@
-
+
diff --git a/bin/addons/base/res/res_lang.py b/bin/addons/base/res/res_lang.py
index 4a0763afdce..c3ae956f0ec 100644
--- a/bin/addons/base/res/res_lang.py
+++ b/bin/addons/base/res/res_lang.py
@@ -26,13 +26,13 @@ from locale import localeconv
class lang(osv.osv):
_name = "res.lang"
_description = "Languages"
-
+
def _get_default_date_format(self,cursor,user,context={}):
return '%m/%d/%Y'
-
+
def _get_default_time_format(self,cursor,user,context={}):
return '%H:%M:%S'
-
+
_columns = {
'name': fields.char('Name', size=64, required=True),
'code': fields.char('Code', size=5, required=True),
@@ -59,7 +59,6 @@ class lang(osv.osv):
('name_uniq', 'unique (name)', 'The name of the language must be unique !'),
('code_uniq', 'unique (code)', 'The code of the language must be unique !'),
]
-
def _group(self,cr,uid,ids,s, monetary=False):
conv = localeconv()
diff --git a/bin/osv/expression.py b/bin/osv/expression.py
index 9cad5137387..c7817cfb637 100644
--- a/bin/osv/expression.py
+++ b/bin/osv/expression.py
@@ -254,11 +254,12 @@ class expression(object):
query = '(%s OR %s IS NULL)' % (query, left)
else:
params = []
- if right == False and table._columns[leaf[0]]._type=="boolean" and (operator == '='):
+
+ if right == False and (leaf[0] in table._columns) and table._columns[leaf[0]]._type=="boolean" and (operator == '='):
query = '%s.%s IS NULL or %s.%s = false ' % (table._table, left,table._table, left)
elif (((right == False) and (type(right)==bool)) or (right is None)) and (operator == '='):
query = '%s.%s IS NULL ' % (table._table, left)
- elif right == False and table._columns[leaf[0]]._type=="boolean" and (operator in ['<>', '!=']):
+ elif right == False and (leaf[0] in table._columns) and table._columns[leaf[0]]._type=="boolean" and (operator in ['<>', '!=']):
query = '%s.%s IS NOT NULL and %s.%s != false' % (table._table, left,table._table, left)
elif (((right == False) and (type(right)==bool)) or right is None) and (operator in ['<>', '!=']):
query = '%s.%s IS NOT NULL' % (table._table, left)