门户网站用户如何在Odoo 8中修改自己的合作伙伴数据?

Mar*_*elo 6 python openerp odoo-8

我试图创建一个模块,门户网站用户可以修改相关的合作伙伴数据.但我收到一个安全错误,只有管理员用户可以修改配置.

文件".../server/openerp/addons/base/res/res_config.py",第541行,执行提升openerp.exceptions.AccessError(_("只有管理员可以更改设置"))

我尝试过这样的安全访问:

access_config_portal,portal_partner_config.settings,model_portal_partner_config_settings,base.group_portal,1,1,0,0

但是没有用......我认为这是因为错误显示在res_config.py执行函数时它会检查用户是否为SUPERUSER:

 if uid != SUPERUSER_ID and not self.pool['res.users'].has_group(cr, uid, 'base.group_erp_manager'):
            raise openerp.exceptions.AccessError(_("Only administrators can change the settings"))
Run Code Online (Sandbox Code Playgroud)

像这样:

class Configuration(models.TransientModel):
    _inherit = 'res.config.settings'
    _name = 'portal_partner_config.settings'

    name = fields.Char()
    street = fields.Char()
    city = fields.Char()

    @api.model
    def get_default_inova_values(self,fields):
       users = self.pool.get('res.users')
       current_user = users.browse(self._cr, self._uid, self._uid, context=self._context)
       name = current_user.partner_id.name
       street = current_user.partner_id.street
       city = current_user.partner_id.city

       return {
            'name': name,
            'street': street,
            'city': city,}

    @api.one
    def set_inova_values(self):
        users = self.pool.get('res.users')
        current_user = users.browse(self._cr, self._uid, self._uid, context=self._context)
        users.sudo().write(self._cr, self._uid, current_user.id, {'name': self.name,
                                                           'street': self.street,
                                                           'city': self.city,
                                                          },
                                                            context=self._context)
Run Code Online (Sandbox Code Playgroud)

有一种方法可以让门户网站用户更改自定义数据,关联者是支付来源,比如信用卡?

Mar*_*elo 2

解决了!

在视图定义中更改 res_config 的调用方法,如下所示:

<button string="Apply" type="object" name="execute2" class="oe_highlight" />
Run Code Online (Sandbox Code Playgroud)

并在 res_config 模型中复制执行 def 并删除 SUPERUSERID 检查。我不会覆盖执行函数,因此在其他配置中执行 SUPERUSERID 检查