Skip to content

[19.0][MIG] report_py3o: Migration to 19.0#1132

Open
kopeyev wants to merge 153 commits intoOCA:19.0from
kopeyev:19.0-mig-report_py3o
Open

[19.0][MIG] report_py3o: Migration to 19.0#1132
kopeyev wants to merge 153 commits intoOCA:19.0from
kopeyev:19.0-mig-report_py3o

Conversation

@kopeyev
Copy link
Copy Markdown

@kopeyev kopeyev commented Feb 11, 2026

No description provided.

lmignon and others added 30 commits February 11, 2026 18:39
Replace README.md by README.rst (not finished)
Remove <data> in views
Protect import of py3o libs
Remove dep on base module
Other small changes
Rename __openerp__.py to __manifest__.py
@kopeyev kopeyev force-pushed the 19.0-mig-report_py3o branch 18 times, most recently from d72b1dd to af7e4f6 Compare February 13, 2026 02:50
Copy link
Copy Markdown
Contributor

@glitchov glitchov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How do you deal with the [report_py3o] section of the Odoo conf file which contains the root_tmpl_path key ?
Shouldn't you have something like this ?https://github.com/OCA/queue/blob/d2a8e902eef111cee495e96bd8bc903155ba29ae/queue_job/jobrunner/__init__.py#L13

@em230418
Copy link
Copy Markdown
Contributor

em230418 commented Feb 16, 2026

How do you deal with the [report_py3o] section of the Odoo conf file which contains the root_tmpl_path key ?
Shouldn't you have something like this ?

Hi, @glitchov!
Me and @kopeyev did not understand what you mean. Could you explain please?

Nevermind, understood

"""Check if the path is a trusted path for py3o templates."""
real_path = os.path.realpath(path)
root_path = tools.config.get_misc("report_py3o", "root_tmpl_path")
root_path = tools.config.get("root_tmpl_path")
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Почему убрал? Должен читать секцию report_py3o и данные оттуда

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

в 19.0 убрали misc/get_misc, поэтому заменил на tools.config.get("root_tmpl_path")

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've also seen that get_misc was removed but there is no automatic mechanism to get the report_py3o section in tools.config. So apart from the tests where you 'artificially' put root_tmpl_path directly into tools.config it won't work.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

тогда добавь реализацию, похожую на это https://github.com/OCA/queue/blob/d2a8e902eef111cee495e96bd8bc903155ba29ae/queue_job/jobrunner/__init__.py#L13

Как glitchov предложил

@kopeyev kopeyev force-pushed the 19.0-mig-report_py3o branch 5 times, most recently from 92af02a to 62ca952 Compare February 17, 2026 08:54
@kopeyev kopeyev force-pushed the 19.0-mig-report_py3o branch from 62ca952 to c4731ee Compare March 2, 2026 16:17
Comment on lines +18 to +40
def report_routes(self, reportname, docids=None, converter=None, **data):
if converter != "py3o":
return super().report_routes(
reportname=reportname, docids=docids, converter=converter, **data
)
context = dict(request.env.context)

if docids:
docids = [int(i) for i in docids.split(",")]
if data.get("options"):
data.update(json.loads(data.pop("options")))
if data.get("context"):
# Ignore 'lang' here, because the context in data is the
# one from the webclient *but* if the user explicitely wants to
# change the lang, this mechanism overwrites it.
data["context"] = json.loads(data["context"])
if data["context"].get("lang"):
del data["context"]["lang"]
context.update(data["context"])

ir_action = request.env["ir.actions.report"]
action_py3o_report = ir_action.get_from_report_name(
reportname, "py3o"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Traceback (most recent call last):
  File "/opt/odoo/odoo/http.py", line 2298, in _serve_db
    return service_model.retrying(serve_func, env=self.env)
  File "/opt/odoo/odoo/service/model.py", line 188, in retrying
    result = func()
  File "/opt/odoo/odoo/http.py", line 2353, in _serve_ir_http
    response = self.dispatcher.dispatch(rule.endpoint, args)
  File "/opt/odoo/odoo/http.py", line 2475, in dispatch
    return self.request.registry['ir.http']._dispatch(endpoint)
  File "/opt/odoo/odoo/addons/base/models/ir_http.py", line 355, in _dispatch
    result = endpoint(**request.params)
  File "/opt/odoo/odoo/http.py", line 808, in route_wrapper
    result = endpoint(self, *args, **params_ok)
  File "/mnt/data/odoo-addons-dir/report_py3o/controllers/main.py", line 39, in report_routes
    action_py3o_report = ir_action.get_from_report_name(
  File "/mnt/data/odoo-addons-dir/report_py3o/models/ir_actions_report.py", line 154, in get_from_report_name
    return self.search(
  File "/opt/odoo/odoo/orm/models.py", line 1378, in search
    return self.search_fetch(domain, [], offset=offset, limit=limit, order=order)
  File "/opt/odoo/odoo/orm/models.py", line 1408, in search_fetch
    query = self._search(domain, offset=offset, limit=limit, order=order or self._order)
  File "/opt/odoo/odoo/orm/models.py", line 5351, in _search
    self.browse().check_access('read')
  File "/opt/odoo/odoo/orm/models.py", line 4115, in check_access
    raise result[1]()
odoo.exceptions.AccessError: You are not allowed to access 'Report Action' (ir.actions.report) records.

This operation is allowed for the following groups:
	- Role / Administrator
	- Role / User

Contact your administrator to request access if necessary.

Воспроизвел при попытке открыть демо-отчет о портального пользователя портальным пользователем.

В ранбоате это можно воспроизвести через portal:portal в базе "baseony".

http://oca-reporting-engine-19-0-pr1132-c4731eee88b5.runboat.odoo-community.org/report/py3o/py3o_user/6?debug=1

Заодно добавь пожалуйста тест, что обращение к такому отчету от имени портального пользователя не возвращал 403

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.