Hello everyone,
I did Users page customization like wizard sequence.
- 1st sequence is "create user with username and their prefrences"
- 2nd sequence is "assign access rights to that users"
done above sequences by wizard style.
my code runs successfull, but when i come to 2nd sequence, i selected required access rights, but does not save this access rights.
and i got below errors.
Integrity Error
The operation cannot be completed, probably due to the following:
- deletion: you may be trying to delete a record while other records still reference it
- creation/update: a mandatory field is not correctly set
[object with reference: user_id - user.id]
here is my code (created a new file in base>res>res_users_wizard.xml
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data><!-- change password wizard -->
<record id="access_rights_wizard_user_form_view" model="ir.ui.view">
<field name="name">Access Rights for User</field>
<field name="model">create.access.rights.user</field>
<field name="arch" type="xml">
<!-- the user list is editable, but one cannot add or delete rows -->
<form string="Users" version="7.0">
<group string="Allowed Companies" groups="base.group_multi_company">
<field name="company_ids" nolabel="1" widget="many2many_tags"/>
</group>
<group col="4">
<field name="groups_id"/>
</group>
<footer>
<button string="Save Rights" name="save_access_rights_button" type="object" class="oe_highlight"/>
</footer>
</form>
</field>
</record>
<act_window id="access_rights_wizard_action"
name="Access Rights"
src_model="res.users"
res_model="create.access.rights.user"
view_type="form" view_mode="form"
key2="client_action_multi" target="new"
groups="base.group_erp_manager"/>
<!-- res.users -->
<record id="view_users_form_wizard" model="ir.ui.view">
<field name="name">res.users.form.wiz</field>
<field name="model">res.users</field>
<field name="arch" type="xml">
<form string="Users" version="7.0">
<sheet>
<field name="id" invisible="1"/>
<field name="image" widget='image' class="oe_avatar oe_left" options='{"preview_image": "image_medium"}'/>
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
<h1><field name="name"/></h1>
<field name="email" invisible="1"/>
<label for="login" class="oe_edit_only" string="Email Address"/>
<h2><field name="login" on_change="on_change_login(login)"/></h2>
<label for="company_id" class="oe_edit_only" groups="base.group_multi_company"/>
<field name="company_id" context="{'user_preference': 0}" groups="base.group_multi_company"/>
<group>
<field name="partner_id" readonly="1" required="0" groups="base.group_no_one"
attrs="{'invisible': [('id', '=', False)]}"/>
<field name="active"/>
</group>
</div>
<group>
<group string="Localization" name="preferences">
<field name="lang"/>
<field name="tz"/>
</group>
<group string="Menus Customization" groups="base.group_no_one">
<field name="action_id"/>
<field domain="[('usage','=','menu')]" name="menu_id" required="True"/>
</group>
</group>
<group string="Messaging and Social" name="messaging">
<field name="signature"/>
</group>
</sheet>
<footer>
<button string="Continue" type="action" name="%(access_rights_wizard_action)d" class="oe_highlight"/>
or
<button string="Cancel" class="oe_highlight" special="cancel" />
</footer>
</form>
</field>
</record>
<record id="action_res_users_wiz" model="ir.actions.act_window">
<field name="name">Users</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.users</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
<field name="view_id" ref="view_users_form_wizard"/>
</record>
<menuitem action="action_res_users_wiz" id="menu_action_res_users_wiz" name="User creation by Wizard" parent="base.menu_users"/>
</data>
</openerp>
and base>res>res_users.py
class create_access_rights_user(osv.TransientModel):
_name = 'create.access.rights.user'
_description = 'Creating users access rights by wizard'
_columns = {
'user_id': fields.many2one('res.users', string='User', required=True),
'groups_id': fields.many2many('res.groups', 'res_groups_users_rel', 'uid', 'gid', 'Groups'),
'company_ids':fields.many2many('res.company','res_company_users_rel','user_id','cid','Companies'),
}def save_access_rights_button(self, cr, uid, ids, context=None):
for user in self.browse(cr, uid, ids, context=context):
self.pool.get('res.users').write(cr, uid, user.user_id.id, {'groups_id': user.groups_id, 'company_ids': user.company_ids})
please correct this code...
thanks in advance....