Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
2 Trả lời
4880 Lượt xem

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> ```
Ảnh đại diện
Huỷ bỏ
Tác giả Câu trả lời hay nhất

Hi Hemangi Rupareliya, 

it cant be solved

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

Ảnh đại diện
Huỷ bỏ

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):

Câu trả lời hay nhất

Hello Trung,

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

Ảnh đại diện
Huỷ bỏ
Bài viết liên quan Trả lời Lượt xem Hoạt động
7
thg 9 21
28273
0
thg 7 16
5107
2
thg 6 16
6716
2
thg 8 25
2163
1
thg 7 25
704