Skip to content

Commit

Permalink
Merge pull request OCA#493 from dzungtran89/oca-port-pr-416-from-15.0…
Browse files Browse the repository at this point in the history
…-to-16.0

[16.0][FWD] mis_builder: Forward updates from 15.0
  • Loading branch information
sbidoul committed Mar 14, 2023
2 parents 1af22ed + 8acda14 commit efe0c7e
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 13 deletions.
25 changes: 14 additions & 11 deletions mis_builder/models/mis_report.py
Expand Up @@ -427,7 +427,7 @@ class MisReport(models.Model):
_description = "MIS Report Template"

def _default_move_lines_source(self):
return self.env["ir.model"].search([("model", "=", "account.move.line")])
return self.env["ir.model"].sudo().search([("model", "=", "account.move.line")])

name = fields.Char(required=True, translate=True)
description = fields.Char(required=False, translate=True)
Expand Down Expand Up @@ -475,9 +475,11 @@ def _compute_all_kpi_ids(self):
@api.depends("move_lines_source")
def _compute_account_model(self):
for record in self:
record.account_model = record.move_lines_source.field_id.filtered(
lambda r: r.name == "account_id"
).relation
record.account_model = (
record.move_lines_source.sudo()
.field_id.filtered(lambda r: r.name == "account_id")
.relation
)

@api.onchange("subkpi_ids")
def _on_change_subkpi_ids(self):
Expand Down Expand Up @@ -575,7 +577,8 @@ def _fetch_queries(self, date_from, date_to, get_additional_query_filter=None):
self.ensure_one()
res = {}
for query in self.query_ids:
model = self.env[query.model_id.model]
query_sudo = query.sudo()
model = self.env[query_sudo.model_id.model]
eval_context = {
"env": self.env,
"time": safe_time,
Expand All @@ -588,11 +591,11 @@ def _fetch_queries(self, date_from, date_to, get_additional_query_filter=None):
domain = query.domain and safe_eval(query.domain, eval_context) or []
if get_additional_query_filter:
domain.extend(get_additional_query_filter(query))
if query.date_field.ttype == "date":
if query_sudo.date_field.ttype == "date":
domain.extend(
[
(query.date_field.name, ">=", date_from),
(query.date_field.name, "<=", date_to),
(query_sudo.date_field.name, ">=", date_from),
(query_sudo.date_field.name, "<=", date_to),
]
)
else:
Expand All @@ -601,11 +604,11 @@ def _fetch_queries(self, date_from, date_to, get_additional_query_filter=None):
datetime_to = _utc_midnight(date_to, tz, add_day=1)
domain.extend(
[
(query.date_field.name, ">=", datetime_from),
(query.date_field.name, "<", datetime_to),
(query_sudo.date_field.name, ">=", datetime_from),
(query_sudo.date_field.name, "<", datetime_to),
]
)
field_names = [f.name for f in query.field_ids]
field_names = [f.name for f in query_sudo.field_ids]
all_stored = all([model._fields[f].store for f in field_names])
if not query.aggregate:
data = model.search_read(domain, field_names)
Expand Down
7 changes: 5 additions & 2 deletions mis_builder/models/mis_report_instance.py
Expand Up @@ -365,11 +365,14 @@ def _onchange_dates(self):
def _onchange_source(self):
if self.source in (SRC_SUMCOL, SRC_CMPCOL):
self.mode = MODE_NONE
# Dirty hack to solve bug https://github.com/OCA/mis-builder/issues/393
if self.source and not self.report_instance_id.id:
self.report_instance_id = self.report_instance_id._origin.id

def _get_aml_model_name(self):
self.ensure_one()
if self.source == SRC_ACTUALS:
return self.report_id.move_lines_source.model
return self.report_id.sudo().move_lines_source.model
elif self.source == SRC_ACTUALS_ALT:
return self.source_aml_model_name
return False
Expand Down Expand Up @@ -587,7 +590,7 @@ def _onchange_company(self):
else:
prev = self.company_ids.ids
company = False
if self.env.company.id in prev:
if self.env.company.id in prev or not prev:
company = self.env.company
else:
for c_id in prev:
Expand Down
1 change: 1 addition & 0 deletions mis_builder/readme/CONTRIBUTORS.rst
Expand Up @@ -24,3 +24,4 @@
* `CorporateHub <https://corporatehub.eu/>`__

* Alexey Pelykh <alexey.pelykh@corphub.eu>
* Jairo Llopis (https://www.moduon.team/)
1 change: 1 addition & 0 deletions mis_builder/readme/newsfragments/415.bugfix
@@ -0,0 +1 @@
Fix access error when previewing or printing report.
6 changes: 6 additions & 0 deletions mis_builder/tests/test_mis_report_instance.py
Expand Up @@ -586,3 +586,9 @@ def test_raise_when_unknown_kpi_value_type(self):
def test_raise_when_wrong_tuple_length_with_subkpis(self):
with self.assertRaises(SubKPITupleLengthError):
self.report_instance_3.compute()

def test_unprivileged(self):
test_user = common.new_test_user(
self.env, "mis_you", groups="base.group_user,account.group_account_user"
)
self.report_instance.with_user(test_user).compute()

0 comments on commit efe0c7e

Please sign in to comment.