【问题标题】:Odoo 8 Error Downloading a file in the Website ModuleOdoo 8 在网站模块中下载文件时出错
【发布时间】:2016-08-16 12:28:38
【问题描述】:

Good Day 我已经更改了 website_hr_recruitment 模块以添加一些功能来下载一些文件。但是当我尝试在没有用户访问权限的情况下下载文件时发生错误。错误是

{"message": "Odoo 服务器错误", "code": 200, "data": {"debug": "Traceback (最近一次调用最后):\n 文件\"/opt/odoo/odoo- server/addons/web/controllers/main.py\",第 70 行,换行\n return f(*args, **kwargs)\n File \"/opt/odoo/odoo-server/addons/web/controllers /main.py\",第 1092 行,在 saveas\n res = Model.read(cr, uid, [int(id)], fields, context)[0]\n File \"/opt/odoo/odoo- server/openerp/api.py\",第 268 行,在包装器中\n return old_api(self, *args, **kwargs)\n File \"/opt/odoo/odoo-server/openerp/addons/base/ir /ir_attachment.py\",第 318 行,在 read\n self.check(cr, uid, ids, 'read', context=context)\n File \"/opt/odoo/odoo-server/openerp/api. py\",第 268 行,在包装器中\n return old_api(self, *args, **kwargs)\n File \"/opt/odoo/odoo-server/openerp/addons/base/ir/ir_attachment.py\" ,第 260 行,检查中\n raise except_orm(_('Access Denied'), _(\"抱歉,您无权访问此文档。\"))\nexcept_orm: (u'Access Denied', u'抱歉,您无权访问此文档。 )\n", "exception_type": "except_osv", "message": "Access Denied\n抱歉,您无权访问此文档。", "name": "openerp.exceptions.except_orm", "arguments": ["拒绝访问", "抱歉,您无权访问此文档。"]}}

这是模型

@http.route('/jobs/apply/<model("hr.job"):job>', type='http', auth="public", website=True)
def jobs_apply(self, job):
    error = {}
    default = {}
    #Added by SDS 19022016
    attachment = http.request.env['ir.attachment'].sudo().search([('name', '=', 'Application-Form-rev2.docx')])

    #str_url = 'http://localhost:8069'+'/web/binary/saveas?model=ir.attachment&field=datas&filename_field=name&id='+str(attachment.id)
    str_url = request.httprequest.host_url +'web/binary/saveas?model=ir.attachment&field=datas&filename_field=name&id='+str(attachment.id)
    if 'website_hr_recruitment_bahia_error' in request.session:
        error = request.session.pop('website_hr_recruitment_bahia_error')
        default = request.session.pop('website_hr_recruitment_bahia_default')
    return request.render("website_hr_recruitment_bahia.apply", {
        'job': job,
        'error': error,
        'default': default,
        'url_link': str_url,
    })

这是模板

  <div t-attf-class="form-group #{error.get('first_name') and 'has-error' or ''}">
                            Click ”<a t-att-href="url_link" >Apply Now</a> ” to download, fill-out and upload below
                            <label class="col-md-3 col-sm-4 control-label" for="first_name">First Name</label>
                            <div class="col-md-7 col-sm-8">
                                <input type="text" t-att-value="default.get('first_name')" class="form-control" name="first_name" required="True"/>
                            </div>
  </div>

我尝试添加 sudo 访问权限,但没有用,谁能帮帮我

谢谢

【问题讨论】:

    标签: openerp odoo-8


    【解决方案1】:

    请创建一个名为 - ir.model.access.csv 的安全文件 像这样添加到 __openerp__.py -

    'data': [
        'security/ir.model.access.csv',
        'views/your_view.xml',
            ]
    

    security上方是文件夹名称,其中存在ir.model.access.csv文件。

    并将以下行添加到您的 csv 文件中-

    id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
    
    access_YOUR_CLASS_NAME,access_YOUR_CLASS_NAME,model_YOUR_CLASS_NAME,,1,1,1,1
    

    这应该可以解决访问问题。

    【讨论】:

      【解决方案2】:

      不幸的是,v8 对 ir.attachment 对象有更严格的策略,它只让员工 (base.group_user) 组读取所有文档,即用户必须登录才能访问文档。所以添加记录规则或访问控制列表规则对你没有帮助。

      这里最好的解决方案是覆盖 ir.attachment 上的 def check 方法,并更加放松地检查公开访问文档的安全性,或者您可以直接覆盖而不添加任何逻辑并制作由 ir.attachment 驱动的对象安全性。或者你也可以让一些模型文档绕过安全检查。

      希望这会对你有所帮助。

      最佳

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多