繁体   English   中英

Odoo 10 生成 xlsx 报告时出错

[英]Odoo 10 Error when generating a xlsx report

我想在xlsx导出自定义报告。 我尝试下面的代码,但是当我按下按钮导出时,它错误AccessDenied: Access denied

odoo.addons.web.controllers.main: An exception occured during an http request
Traceback (most recent call last):
  File "C:\Program Files (x86)\Odoo 10.0\server\odoo\addons\web\controllers\main.py", line 72, in wrap
  File "C:\Program Files (x86)\Odoo 10.0\server\odoo\addons\web\controllers\main.py", line 1480, in index
  File "C:\Program Files (x86)\Odoo 10.0\server\odoo\http.py", line 118, in dispatch_rpc
  File "C:\Program Files (x86)\Odoo 10.0\server\odoo\service\report.py", line 32, in dispatch
  File "C:\Program Files (x86)\Odoo 10.0\server\odoo\service\security.py", line 13, in check
  File "C:\Program Files (x86)\Odoo 10.0\server\odoo\addons\base\res\res_users.py", line 507, in check
AccessDenied: Access denied

报告 XML:

<report 
    id="action_report_excel"
    model="account.invoice"
    string="Export to XLSX"
    report_type="xlsx"
    name="module_name.report_name.xlsx"
    file="module_name.report_name.xlsx"
    attachment_use="False"
/>

蟒蛇代码:

from report_xlsx.report.report_xlsx import ReportXlsx

class CustomReportXlsx(ReportXlsx):

    def generate_xlsx_report(self, workbook, data, objs):
        for obj in objs:
            report_name = obj.name
            # One sheet by partner
            sheet = workbook.add_worksheet(report_name[:31])
            bold = workbook.add_format({'bold': True})
            sheet.write(0, 0, obj.name, bold)

CustomReportXlsx('report.module_name.report_name.xlsx', 'account.invoice')

Python 向导:

def check_report(self):
    data = {}
    return self.env['report'].sudo().get_action(self, 'module_name.report_name.xlsx', data=data)

请帮帮我

为模型account.invoice添加适当的访问权限。 您当前的用户无权从account.invoice模型读取/写入数据

在玩了一些与 xlsx 和其他东西相关的包配置后,我在我的 odoov10 社区中遇到了这个问题。 在此处输入图片说明

请注意,如果此问题与单个自定义 xlsx 报告有关,则肯定与访问级别有关(不幸的是,我在所有 xls 中都遇到了此问题)。 我可以将我的问题和发现总结为如下几点:

  • 我无法从 odoo 打印任何 XLSX 文件
  • 从 odoo 获取错误框“ AccessDenied:拒绝访问”,用于“所有”我的 excel 报告。
  • 错误是从“ odoo\\addons\\base\\res\\res_users.py ”第 503 行(根据您的 odoo 克隆可能略有不同。)并且该函数被命名为“ def check(cls, db, uid, passwd):
  • 当我检查一些工作时,我发现参数“ passwd ”正在变为“False”,这导致此访问被拒绝错误。

乳白色溶液:

由于这个问题是在我的本地主机上,而且时间有限,我只是手动将我的管理员密码传递到该函数中(即使它根本不是傻瓜)。

  • 我的“odoo\\addons\\base\\res\\res_users.py”代码如下所示:
  • passwd = '<MY_ADMIN_USER_PASSWORD' if not passwd: # empty passwords disallowed for obvious security reasons raise AccessDenied()

在这个硬代码导致函数失败的地方,我修复了这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM