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>
```
Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:
- CRM
- e-Commerce
- Accounting
- Inventory
- PoS
- Project management
- MRP
This question has been flagged
2
Replies
3407
Views
Hi Hemangi Rupareliya,
it cant be solved
i think my browse is wrong but i dont no how to fix
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):
Hello Trung,
Try to use another argument name instead of 'uids'.
Enjoying the discussion? Don't just read, join in!
Create an account today to enjoy exclusive features and engage with our awesome community!
Sign upRelated Posts | Replies | Views | Activity | |
---|---|---|---|---|
|
7
Sep 21
|
25968 | ||
|
0
Jul 16
|
4172 | ||
|
2
Jun 16
|
5722 | ||
|
2
Nov 24
|
266 | ||
|
1
Oct 24
|
332 |