28
28
from openerp import SUPERUSER_ID
29
29
from openerp import pooler, tools
30
30
import openerp.exceptions
31
from openerp.osv import fields,osv
31
from openerp.osv import fields,osv, expression
32
32
from openerp.osv.orm import browse_record
33
33
from openerp.tools.translate import _
51
51
def _search_group(self, cr, uid, obj, name, args, context=None):
52
52
operand = args[0][2]
53
53
operator = args[0][1]
54
values = operand.split('/')
55
group_name = values[0]
56
where = [('name', operator, group_name)]
58
application_name = values[0]
59
group_name = values[1]
60
where = ['|',('category_id.name', operator, application_name)] + where
55
if isinstance(operand, bool):
56
domains = [[('name', operator, operand)], [('category_id.name', operator, operand)]]
57
if operator in expression.NEGATIVE_TERM_OPERATORS == (not operand):
58
return expression.AND(domains)
60
return expression.OR(domains)
61
if isinstance(operand, basestring):
66
values = filter(bool, group.split('/'))
67
group_name = values.pop().strip()
68
category_name = values and '/'.join(values).strip() or group_name
69
group_domain = [('name', operator, lst and [group_name] or group_name)]
70
category_domain = [('category_id.name', operator, lst and [category_name] or category_name)]
71
if operator in expression.NEGATIVE_TERM_OPERATORS and not values:
72
category_domain = expression.OR([category_domain, [('category_id', '=', False)]])
73
if (operator in expression.NEGATIVE_TERM_OPERATORS) == (not values):
74
sub_where = expression.AND([group_domain, category_domain])
76
sub_where = expression.OR([group_domain, category_domain])
77
if operator in expression.NEGATIVE_TERM_OPERATORS:
78
where = expression.AND([where, sub_where])
80
where = expression.OR([where, sub_where])