This question has been flagged
2 Replies
2937 Views

i make a module profile to add groups into profile. when make a new user, we can add profile for user profiles and user will auto authorized groups in profile. but i cant make user auto add groups from profile. cant someone help me pls. thanks a lot. i had thit error: TypeError: update_groups() missing 1 required positional argument: 'uids'.

There is my code: profile.py



# -*- coding: utf-8 -*- from odoo import models,fields, api,tools import string from odoo.tools.translate import _ class Users(models.Model): _inherit = 'res.users' profile_id = fields.Many2one('res.profiles',string="Profile") profiles_ids = fields.Many2many('res.profiles','profile_user_rel','user_id','profile_id', string='Profile Name') def update_groups(self,uids): users_pool = self.env["res.profiles"] if uids: for user in users_pool.browse(uids): if not user.profiles_ids and user.id != 2: user.write({'groups_id':[[6,0,[]]]}) if user.profiles_ids: sql = """UPDATE FROM res_groups_users_rel WHERE uid = %s"""%(user.id) self._cr.execute(sql) groups_ids = [] for profile in user.profiles_ids: groups_ids += [x.id for x in profile.groups_ids if x.id not in groups_ids] user.write({'groups_id':[[6,0,groups_ids]]}) return True def update_profile(self): self.env["user.profiles"].update_groups(self.ids) return True class GroupInherit(models.Model): _inherit = 'res.groups' profiles_groups_ids = fields.Many2many('res.profiles','profile_group_rel','group_id','profile_id', string='Profile Name') class UserProfile(models.Model): _name = 'res.profiles' _description = 'Profile Record' _rec_name = 'profile_name' _sql_constraints = [('name_uniq','unique(name)', 'Profile name must be unique!'),] _order = "profile_name" profile_name = fields.Char(string='Name', required=True) groups_ids = fields.Many2many('res.groups','profile_group_rel','profile_id','group_id',string='Authorized Group') user_ids = fields.Many2many('res.users','profile_user_rel','profile_id','user_id', string='User Name') ``` profile.xml: ``` <?xml version="1.0" encoding="UTF-8"?> <odoo> <!-- tree view --> <record id="profile_tree" model="ir.ui.view"> <field name="name">user.profile.tree</field> <field name="model">res.profiles</field> <field name="arch" type="xml"> <tree string= "profile"> <field name="profile_name"/> <field name="user_ids"/> <field name="groups_ids"/> </tree> </field> </record> <!-- view form --> <record id="student_form" model="ir.ui.view"> <field name="name">user.profile.form</field> <field name="model">res.profiles</field> <field name="arch" type="xml"> <form string="Profile"> <sheet> <div class="oe_title"> </div> <group> <group><field name="profile_name"/></group> <group><field name="user_ids" widget="many2many_tags"/></group> <group><field name="groups_ids"/></group> </group> </sheet> </form> </field> </record> <!--action of the student menu--> <record id="action_profile" model="ir.actions.act_window"> <field name="name">Profile</field> <field name="type">ir.actions.act_window</field> <field name="res_model">res.profiles</field> <field name="view_mode">tree,form</field> <field name="help" type="html"> <p class="o_view_nocontent_smiling_face"> Create First profile ! </p> </field> </record> <!-- profile name in group view --> <record id="group_inherit" model="ir.ui.view"> <field name="name">group.inherit</field> <field name="model">res.groups</field> <field name="inherit_id" ref="base.view_groups_form"></field> <field name="arch" type="xml"> <field name="name" position="after"> <field name="profiles_groups_ids"/> </field> </field> </record> <!-- profile name in user view --> <record id="user_inherit" model="ir.ui.view"> <field name="name">user.inherit</field> <field name="model">res.users</field> <field name="inherit_id" ref="base.view_users_form"></field> <field name="arch" type="xml"> <field name="login" position="after"> <field name="profiles_ids"/> </field> <field name="profiles_ids" position="after"> <div class='oe_button_box' name="button_box"><button name='update_groups' type="object" class="oe_stat_button" string="update"></button></div> </field> <button name="action_show_groups" position="attributes"> <attribute name="invisible">1</attribute> </button> <field name="groups_count" position="attributes"> <attribute name="invisible">1</attribute> </field> </field> </record> <menuitem id="profiles" name="User Profile" parent="base.menu_users" sequence="4" action="action_profile"/> <menuitem id="user_root" name="Profile" sequence="0"/> <menuitem id="user_profile" name ="Profile" parent="user_root" action="action_profile"/> </odoo> ```
Avatar
Discard
Author Best Answer

Hi Hemangi Rupareliya, 

it cant be solved

i think my browse is wrong but i dont no how to fix

Avatar
Discard

Hello Trung,

Have you renamed the argument in following all lines?

1. def update_groups(self,uids):

users_pool = self.env["res.profiles"]

2. if uids:

3. for user in users_pool.browse(uids):

Best Answer

Hello Trung,

Try to use another argument name instead of 'uids'.

Avatar
Discard