Browse Source

[RFR] make operator code reusable

pull/161/head
Holger Brunn 5 years ago
parent
commit
9293c8cf8f
No known key found for this signature in database GPG Key ID: 5306CE414AFC231E
  1. 21
      analytic_entries_report_fiscalyear/models/analytic_entries_report.py

21
analytic_entries_report_fiscalyear/models/analytic_entries_report.py

@ -83,10 +83,7 @@ class AnalyticEntriesReport(models.Model):
(AsIs(self._table), AsIs(str(statement)[:-1]))) (AsIs(self._table), AsIs(str(statement)[:-1])))
@api.model @api.model
def read_group(self, domain, fields, groupby, offset=0, limit=None,
orderby=False, lazy=True):
'''Override read_group to respect filters whose domain can't be
computed on the client side'''
def _apply_custom_operators(self, domain):
adjusted_domain = [] adjusted_domain = []
for proposition in domain: for proposition in domain:
@ -98,11 +95,11 @@ class AnalyticEntriesReport(models.Model):
adjusted_domain.append(proposition) adjusted_domain.append(proposition)
continue continue
field, operator, value = proposition field, operator, value = proposition
if field == 'fiscalyear_id' and operator == 'offset':
if field.endswith('fiscalyear_id') and operator == 'offset':
date = datetime.date.today() + relativedelta(years=value) date = datetime.date.today() + relativedelta(years=value)
fiscalyear_id = self.env['account.fiscalyear'].find(dt=date) fiscalyear_id = self.env['account.fiscalyear'].find(dt=date)
adjusted_domain.append(('fiscalyear_id', '=', fiscalyear_id))
elif field == 'period_id' and operator == 'offset':
adjusted_domain.append((field, '=', fiscalyear_id))
elif field.endswith('period_id') and operator == 'offset':
current_period = self.env['account.period'].with_context( current_period = self.env['account.period'].with_context(
account_period_prefer_normal=True).find() account_period_prefer_normal=True).find()
@ -118,10 +115,18 @@ class AnalyticEntriesReport(models.Model):
('asc' if direction == '>=' else 'desc') ('asc' if direction == '>=' else 'desc')
) )
adjusted_domain.append(('period_id', '=', periods[value].id))
adjusted_domain.append((field, '=', periods[value].id))
else: else:
adjusted_domain.append(proposition) adjusted_domain.append(proposition)
return adjusted_domain
@api.model
def read_group(self, domain, fields, groupby, offset=0, limit=None,
orderby=False, lazy=True):
'''Override read_group to respect filters whose domain can't be
computed on the client side'''
adjusted_domain = self._apply_custom_operators(domain)
return super(AnalyticEntriesReport, self).read_group( return super(AnalyticEntriesReport, self).read_group(
adjusted_domain, fields, groupby, adjusted_domain, fields, groupby,
offset=offset, limit=limit, orderby=orderby, lazy=lazy) offset=offset, limit=limit, orderby=orderby, lazy=lazy)
Loading…
Cancel
Save