searcher on Function fields take only one domain clause as argument

This commit is contained in:
Cédric Krier committed 2010-03-23 11:26:52 +01:00
1 parent d826da57b1
commit b7cba0e0d9
5 files changed
+57 -100

No files matched your search

+20 -37
View File
@@ -359,19 +359,13 @@ class AccountTemplate(ModelSQL, ModelView):
res[template.id] = template.name
return res
def search_rec_name(self, cursor, user, name, args, context=None):
args2 = []
i = 0
while i < len(args):
ids = self.search(cursor, user, [
('code', args[i][1], args[i][2]),
], limit=1, context=context)
if ids:
args2.append(('code', args[i][1], args[i][2]))
else:
args2.append((self._rec_name, args[i][1], args[i][2]))
i += 1
return args2
def search_rec_name(self, cursor, user, name, clause, context=None):
ids = self.search(cursor, user, [
('code',) + clause[1:],
], limit=1, context=context)
if ids:
return [('code',) + clause[1:]]
return [(self._rec_name,) + clause[1:]]
def _get_account_value(self, cursor, user, template, context=None,
account=None):
@@ -862,19 +856,13 @@ class Account(ModelSQL, ModelView):
res[account.id] = account.name
return res
def search_rec_name(self, cursor, user, name, args, context=None):
args2 = []
i = 0
while i < len(args):
ids = self.search(cursor, user, [
('code', args[i][1], args[i][2]),
], limit=1, context=context)
if ids:
args2.append(('code', args[i][1], args[i][2]))
else:
args2.append((self._rec_name, args[i][1], args[i][2]))
i += 1
return args2
def search_rec_name(self, cursor, user, name, clause, context=None):
ids = self.search(cursor, user, [
('code',) + clause[1:],
], limit=1, context=context)
if ids:
return [('code',) + clause[1:]]
return [(self._rec_name,) + clause[1:]]
def copy(self, cursor, user, ids, default=None, context=None):
if default is None:
@@ -1065,17 +1053,12 @@ class AccountDeferral(ModelSQL, ModelView):
deferral.fiscalyear.rec_name
return res
def search_rec_name(self, cursor, user, name, args, context=None):
args2 = []
i = 0
while i < len(args):
ids = self.search(cursor, user, ['OR',
('account.rec_name', args[i][1], args[i][2]),
('fiscalyear.rec_name', args[i][1], args[i][2]),
], context=context)
args2.append(('id', 'in', ids))
i += 1
return args2
def search_rec_name(self, cursor, user, name, clause, context=None):
ids = self.search(cursor, user, ['OR',
('account.rec_name',) + clause[1:],
('fiscalyear.rec_name',) + clause[1:],
], context=context)
return [('id', 'in', ids)]
def write(self, cursor, user, ids, vals, context=None):
self.raise_user_error(cursor, 'write_deferral', context=context)
+7 -13
View File
@@ -150,19 +150,13 @@ class Journal(ModelSQL, ModelView):
types = type_obj.browse(cursor, user, type_ids, context=context)
return [(x.code, x.name) for x in types]
def search_rec_name(self, cursor, user, name, args, context=None):
args2 = []
i = 0
while i < len(args):
ids = self.search(cursor, user, [
('code', args[i][1], args[i][2]),
], limit=1, context=context)
if ids:
args2.append(('code', args[i][1], args[i][2]))
else:
args2.append((self._rec_name, args[i][1], args[i][2]))
i += 1
return args2
def search_rec_name(self, cursor, user, name, clause, context=None):
ids = self.search(cursor, user, [
('code',) + clause[1:],
], limit=1, order=[], context=context)
if ids:
return [('code',) + clause[1:]]
return [(self._rec_name,) + clause[1:]]
Journal()
+10 -21
View File
@@ -156,17 +156,12 @@ class Move(ModelSQL, ModelView):
return False
return True
def search_rec_name(self, cursor, user, name, args, context=None):
args2 = []
i = 0
while i < len(args):
ids = self.search(cursor, user, ['OR',
('reference', args[i][1], args[i][2]),
(self._rec_name, args[i][1], args[i][2]),
], context=context)
args2.append(('id', 'in', ids))
i += 1
return args2
def search_rec_name(self, cursor, user, name, clause, context=None):
ids = self.search(cursor, user, ['OR',
('reference',) + clause[1:],
(self._rec_name,) + clause[1:],
], context=context)
return [('id', 'in', ids)]
def write(self, cursor, user, ids, vals, context=None):
res = super(Move, self).write(cursor, user, ids, vals, context=context)
@@ -965,16 +960,10 @@ class Line(ModelSQL, ModelView):
name: value,
}, context=context)
def search_move_field(self, cursor, user, name, args, context=None):
args2 = []
i = 0
while i < len(args):
field = args[i][0]
if args[i][0] == 'move_state':
field = 'state'
args2.append(('move.' + field, args[i][1], args[i][2]))
i += 1
return args2
def search_move_field(self, cursor, user, name, clause, context=None):
if name == 'move_state':
name = 'state'
return [('move.' + name,) + clause[1:]]
def query_get(self, cursor, user, obj='l', context=None):
'''
+14 -17
View File
@@ -125,10 +125,8 @@ class Party(ModelSQL, ModelView):
res[name][party_id] = sum
return res
def search_receivable_payable(self, cursor, user_id, name, args,
def search_receivable_payable(self, cursor, user_id, name, clause,
context=None):
if not len(args):
return []
move_line_obj = self.pool.get('account.move.line')
company_obj = self.pool.get('company.company')
user_obj = self.pool.get('res.user')
@@ -167,22 +165,21 @@ class Party(ModelSQL, ModelView):
line_query, _ = move_line_obj.query_get(cursor, user_id, context=context)
cursor.execute('SELECT l.party ' \
'FROM account_move_line AS l, ' \
'account_account AS a ' \
'WHERE a.id = l.account ' \
'AND a.active ' \
'AND a.kind = %s ' \
'AND l.party IS NOT NULL ' \
'AND l.reconciliation IS NULL ' \
cursor.execute('SELECT l.party '
'FROM account_move_line AS l, '
'account_account AS a '
'WHERE a.id = l.account '
'AND a.active '
'AND a.kind = %s '
'AND l.party IS NOT NULL '
'AND l.reconciliation IS NULL '
'AND ' + line_query + ' ' \
+ today_query + \
'AND a.company = %s ' \
'GROUP BY l.party ' \
'HAVING ' + \
'AND'.join('(SUM((COALESCE(l.debit, 0) - COALESCE(l.credit, 0))) ' \
+ ' ' + x[1] + ' %s) ' for x in args),
[code] + today_value + [company_id] + [x[2] for x in args])
'AND a.company = %s '
'GROUP BY l.party '
'HAVING (SUM((COALESCE(l.debit, 0) - COALESCE(l.credit, 0))) ' \
+ clause[1] + ' %s)',
[code] + today_value + [company_id] + [clause[2]])
return [('id', 'in', [x[0] for x in cursor.fetchall()])]
Party()
+6 -12
View File
@@ -248,18 +248,12 @@ class Code(ModelSQL, ModelView):
res[code.id] = code.name
return res
def search_rec_name(self, cursor, user, name, args, context=None):
args2 = []
i = 0
while i < len(args):
ids = self.search(cursor, user, [('code', args[i][1], args[i][2])],
context=context)
if ids:
args2.append(('code', args[i][1], args[i][2]))
else:
args2.append(('name', args[i][1], args[i][2]))
i += 1
return args2
def search_rec_name(self, cursor, user, name, clause, context=None):
ids = self.search(cursor, user, [('code',) + clause[1:]], limit=1,
order=[], context=context)
if ids:
return [('code',) + clause[1:]]
return [('name',) + clause[1:]]
def delete(self, cursor, user, ids, context=None):
if isinstance(ids, (int, long)):