I've created the next wizard form in XML:
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record model="ir.ui.view" id="confirm_unlink_res_partner_bank_wizard_form">
<field name="name">confirm.unlink.res.partner.bank.wizard.form</field>
<field name="model">confirm.unlink.res.partner.bank.wizard</field>
<field name="arch" type="xml">
<form string="Confirm removing bank account" version="7.0">
<group colspan="8">
<group colspan="8">
<label string="Do you want to continue?"/>
</group>
<footer>
<button string="Confirm" name="unlink_res_partner_bank" type="object" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel" />
</footer>
</group>
</form>
</field>
</record>
</data>
</openerp>
Here is its Python code (from the moment, the button does nothing):
class confirm_unlink_res_partner_bank_wizard(osv.TransientModel):
_name = 'confirm.unlink.res.partner.bank.wizard'def unlink_res_partner_bank(self, cr, uid, ids, context=None):
returnconfirm_unlink_res_partner_bank_wizard()
What I want to manage: If the user tries to remove a res.partner.bank record, show them a pop-up (my wizard). So for that, I did the next:
class res_partner_bank(orm.Model):
_inherit = 'res.partner.bank'def unlink(self, cr, uid, id, context=None):
data_obj = self.pool.get('ir.model.data')
form_data_id = data_obj._get_id(cr, uid, 'res_partner_extended', 'confirm_unlink_res_partner_bank_wizard_form')
form_view_id = False
if form_data_id:
form_view_id = data_obj.browse(cr, uid, form_data_id, context=context).res_id
return {
'name': 'Confirm removing bank account',
'view_type': 'form',
'view_mode': 'form',
'view_id': False,
'views': [(form_view_id, 'form'),],
'res_model': 'confirm.unlink.res.partner.bank.wizard',
'type': 'ir.actions.act_window',
'target': 'new',
'flags': {'form': {'action_buttons': True},}
}
But the wizard form is not showing up. However, I've checked the value of the variable form_view_id and it's right.
There must be anything else I'm missing. Can anyone help me, please?
I've just copied the code of other function I have which calls a simple form (not wizard) from Python (the function works perfectly) and pasted it into the unlink function. Nothing happens, so I'm starting to guess that there's any problem about calling a form from an unlink function, but I don't know.
You forgot that you need to pool.get('model_to_unlink') and call unlink action on thatmodel.. not on current(self) because current working model is in fact wizard model.. so confirm button should return self.pool.get('some_model').unlink(cr, uid, some_id)
Thank you @Bole! I'll do that but first I only wanted to see my wizard, in spite of this having no functionality for the moment.
try to check your function been called from the unlink, try to print "hello" ... and check the server...
Thank you @Ahmed M.Elmubarak, I've checked and the code inside unlink function is being executed. But for some reason the return isn't working as expected.
Is it possible to call a wizard from the unlink function of a model? Because I'm starting to think that it's not.
it is possible, but the unlink action is't called at all because you are actualy writing in different model.. see my comen below... you should call the wizard form res_partner write action,
Ok, I've just tried to execute the code I write in unlink from other function, one made by me. When I click on the button, the wizard is showing up, so it's work well!! The problem is when I try to call it from unlink, I don't know why...