Odoo - 在注册后立即更改用户组ID(电子商务)

问题描述 投票:3回答:2

我正在使用Odoo 10.在新用户注册后(通过localhost:8069 / web / signup)我想让他自动分配到我在我自己的自定义模块上创建的组中(用户需要来自管理员的身份验证)稍后他就可以转换为常规门户用户;注册后他将获得限制访问权限。

我尝试了很多东西。我的最新努力看起来像这样:

class RestrictAccessOnSignup(auth_signup_controller.AuthSignupHome):

      def do_signup(self, *args):
        super(RestrictAccessOnSignup, self).do_signup(*args)
        request.env['res.groups'].sudo().write({'groups_id': 'group_unuser'})

请注意,我有import odoo.addons.auth_signup.controllers.main as auth_signup_controller,以便我可以覆盖auth_signup控制器。

我已将该方法定位为负责进行注册。所以我在我的新方法中调用它,然后尝试更改新创建的用户的group_id。

我想念的是对如何从控制器方法上下文中的另一个模型覆盖字段值的基本理解。我正在使用“请求”对象,虽然我不确定。我见过人们使用'self.pool ['res.users'](例如)用于此类目的,但我不明白如何在我的问题的上下文中应用它。

我也相信,有一种方法可以在用户创建后更改默认组(我想知道),但我也想了解如何解决一般问题(访问和覆盖字段的值)另一个模块)。

另一个奇怪的事情是,字段groups_id确实存在于'res.users'模型中,但是当我点击查看'res.users'表时,它在我的pgAdmin界面中不会显示为列...任何想法为什么?

非常感谢!

python openerp override odoo-10 controllers
2个回答
0
投票

我不知道在打电话后:

   super(RestrictAccessOnSignup,self).do_signup(*args)

您可以访问请求对象中的用户记录,但如果是这样,只需将组添加到用户,如果不是,您必须在调用do_signup后找到保存用户记录或ID的位置,因为您需要将该记录更新为此组。

   # create env variable i hate typing even i'm typing here ^^
   env = request.env
   env.user.sudo().write({'groups_id': [
                           # in odoo relation field accept a list of commands
                            # command 4 means add the id in the second position must be an integer
                            # ref return an object so we return the id
                            ( 4, env.ref('your_module_name.group_unuser').id),
                              ]
                          })

如果未在数据库中提交更改,则可能需要提交更改

          request.env.cr.commit()

注意:self.env.ref必须传递完整的xmlID。


0
投票

这对我有用:

def do_signup(self, *args):

    super(RestrictAccessOnSignup, self).do_signup(*args)
    group_id = request.env['ir.model.data'].get_object('academy2', 'group_unuser')
    group_id.sudo().write({'users': [(4, request.env.uid)]})

在get_object中,我作为参数传递了我想要获取的组的“模块”和“xmlID”。

我仍然不清楚为什么'ir.model.data'是使用的环境,但这是一个魅力。请注意,这里我们将向用户添加用户,而不是向用户添加组,对我来说实际上更有意义。

任何进一步的解释或并行解决方案都是受欢迎的,这些方法并不像我们应该那样清楚。

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.