[IMP] prepare performance optimization to fetch only used balances (WIP)
parent
d3a4f6d492
commit
6becf7af03
|
@ -68,6 +68,17 @@ def _python_bal_var(account_code):
|
|||
return 'bal_' + re.sub(r'\W', '_', account_code)
|
||||
|
||||
|
||||
def _get_bal_vars_in_expr(expr):
|
||||
return re.findall(expr, r'\bbal_\w+')
|
||||
|
||||
|
||||
def _get_vars_in_expr(expr, varnames=None):
|
||||
if not varnames:
|
||||
return []
|
||||
varnames_re = r'\b' + r'\b|\b'.join(varnames) + r'\b'
|
||||
return re.findall(expr, varnames_re)
|
||||
|
||||
|
||||
class mis_report_kpi(orm.Model):
|
||||
|
||||
""" A KPI is an element of a MIS report.
|
||||
|
@ -548,6 +559,13 @@ class mis_report_instance_period(orm.Model):
|
|||
|
||||
return res
|
||||
|
||||
def _get_bal_vars_in_report(self, report):
|
||||
res = set()
|
||||
for kpi in report.kpi_ids:
|
||||
for bal_var in _get_bal_vars_in_expr(kpi.expression):
|
||||
res.add(bal_var)
|
||||
return res
|
||||
|
||||
def _compute(self, cr, uid, c, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
|
|
Loading…
Reference in New Issue