¿Se puede sobreescribir el método unlink para abrir un pop-up?

411 views
Skip to first unread message

Juan Formoso Vasco

unread,
Jan 14, 2015, 9:58:52 AM1/14/15
to openerp-s...@googlegroups.com
Hola a todos:

Llevo dándole vueltas y vueltas a esto y no encuentro la solución. Simplemente quiero abrir un formulario dentro del método unlink de un modelo (me valdría un ejemplo con cualquier formulario y modelo).

Para ser más exacto, lo estoy intentando con el modelo res.partner.bank y un formulario creado por mí llamado confirm_unlink_res_partner_bank_wizard_form. Quiero que cuando se haga click en suprimir un registro de res.partner.bank, se muestre un pop-up (mi formulario).

Mi formulario es el siguiente:

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

Para llamarlo, he sobreescrito la función unlink de la clase res.partner.bank, de la siguiente manera:

class res_partner_bank(orm.Model):
    _inherit
= 'res.partner.bank'

   
def unlink(self, cr, uid, ids, context=None):
        data_obj
= self.pool.get('ir.model.data')
        form_data_id
= data_obj.get_object_reference(cr, uid, 'res_partner_extended',
                                                     
'confirm_unlink_res_partner_bank_wizard_form')
        form_view_id
= form_data_id and form_data_id[1] or False
       
# raise orm.except_orm(_('¡Aviso!'), _('Sobreescritura correcta.'))
       
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},}
       
}

res_partner_bank
()

La sobreescritura es correcta, puesto que si descomento la excepción, ésta salta cuando trato de eliminar algún registro de res.partner.bank. Mi problema es que no está redirigiendo al formulario que quiero, simplemente, no hace nada. He probado a redirigir a otros formularios o trees y ocurre lo mismo. De hecho, tengo varias funciones en otras clases que redirigen correctamente a otras vistas, he copiado su código y lo he introducido en esta función, pero nada.

Todo esto me está empezando a hacer pensar que quizá no pueda llamar a una vista desde un método ORM, como lo es unlink. ¿Es esto así? ¿O me estoy equivocando en algún lado? Por más que busco el error y pregunto, no encuentro el problema.

Pedro Manuel Baeza Romero

unread,
Jan 14, 2015, 1:48:24 PM1/14/15
to openerp-s...@googlegroups.com

Efectivamente, no se puede devolver un diccionario en estos métodos ORM para que abra una vista. No está pensado así.

Un saludo.

--
Has recibido este mensaje porque estás suscrito al grupo "Usuarios OpenERP en España" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-u...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Juan Formoso Vasco

unread,
Jan 15, 2015, 3:31:22 AM1/15/15
to openerp-s...@googlegroups.com
Muchas gracias por la aclaración, Pedro. Entonces, ¿cómo podría hacer saltar un mensaje de confirmación antes de eliminar un registro de res.partner.bank si se cumple una determinada condición? Por ejemplo, que el mensaje de confirmación sólo saltase si acc_country_id (país del banco) es España, o cualquier otra condición.

--
Has recibido este mensaje porque estás suscrito a un tema del grupo "Usuarios OpenERP en España" de Grupos de Google.
Para anular la suscripción a este tema, visita https://groups.google.com/d/topic/openerp-spain-users/QhGNWGLF7iA/unsubscribe.
Para anular la suscripción a este grupo y a todos sus temas, envía un correo electrónico a openerp-spain-u...@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.



--

--
Juan Formoso Vasco
· · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

ANUBÍA, soluciones en la nube, S.L.

Plaza Fernando Conde Montero Ríos, 9
36201, Vigo (Pontevedra)

www.anubia.es


anubía_logo_2014_i_o_140x140.pngodoo_logo_odoo_ready_140x140.png

Pedro Manuel Baeza Romero

unread,
Jan 15, 2015, 3:38:08 AM1/15/15
to openerp-s...@googlegroups.com
Volvemos a lo que te he comentado otras veces, Juan. Los flujos de trabajo de Odoo están pensados de cierta manera, no como uno quiere. Lo que quieres hacer no está permitido. Puedes:
  • Restringir el borrado si se cumple una condición, lanzando un raise dentro del unlink.
  • Puedes tener un botón para realizar una acción que se muestre con determinada condición y que pida confirmación.

Pero no puedes interceptar el flujo de eliminación con un cuadro de diálogo de confirmación. Desde mi punto de vista, de hecho, no veo demasiado sentido a ello. O siempre se pide confirmación (como ya hace el cliente web al pulsar en suprimir), o nunca, pero no según qué casos...

Un saludo.

Juan Formoso Vasco

unread,
Jan 15, 2015, 3:46:16 AM1/15/15
to openerp-s...@googlegroups.com
Vale, lo tendré en cuenta. ¡Muchas gracias por tus respuestas!
Reply all
Reply to author
Forward
0 new messages