Odoo Help

Welcome!

This community is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.

0

Integrity Error in Wizard Creation

By
Jo
on 8/14/14, 7:00 AM 1,986 views

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....

Your Answer

Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!

About This Community

This community is for professionals and enthusiasts of our products and services. Read Guidelines

Question tools

1 follower(s)

Stats

Asked: 8/14/14, 7:00 AM
Seen: 1986 times
Last updated: 3/16/15, 8:10 AM