Discussion:
[tryton-es] Mensaje de alerta/error dentro de Wizard (StateView)
Gloworms Glow
2018-04-16 13:12:58 UTC
Permalink
Hola! A ver si alguien me puede ayudar..
Hice un wizard que me pide una fecha. Y si la fecha no es correcta le digo
que me mande un mensaje de error con "_error_messages".
Al probar, cuando pongo la fecha me aparece el cartel que dice el error,
pero cuando apreto el boton de 'Ok' me sale el error:

ERROR:tryton.common.common:Traceback (most recent call last):
File ".../tryton-4.6.0/tryton/common/common.py", line 1196, in process
rpc_execute=rpc_execute)
File ".../tryton-4.6.0/tryton/common/common.py", line 1057, in
process_exception
raise RPCException(exception)
RPCException: <Fault u'UserError': [u'No puede cambiarse la fecha', u'']>

<Fault u'UserError': [u'No puede cambiarse la fecha', u'']>

Alguien sabe porque me aparece este error? O como hago para poner un
mensaje dentro de una ventana de wizard?
Gracias!
Sergi Almacellas Abellana
2018-04-16 13:34:21 UTC
Permalink
Post by Gloworms Glow
Hola! A ver si alguien me puede ayudar..
Hice un wizard que me pide una fecha. Y si la fecha no es correcta le
digo que me mande un mensaje de error con "_error_messages".
Al probar, cuando pongo la fecha me aparece el cartel que dice el error,
  File ".../tryton-4.6.0/tryton/common/common.py", line 1196, in process
    rpc_execute=rpc_execute)
  File ".../tryton-4.6.0/tryton/common/common.py", line 1057, in
process_exception
    raise RPCException(exception)
RPCException: <Fault u'UserError': [u'No puede cambiarse la fecha', u'']>
<Fault u'UserError': [u'No puede cambiarse la fecha', u'']>
Alguien sabe porque me aparece este error? O como hago para poner un
mensaje dentro de una ventana de wizard?
Gracias!
Debes utilizar el siguiente estructura:

class Wizard:

@classmethod
def __setup__(cls):
super(Wizard, cls).__setup__()
cls._error_messages.update({'my_error': 'No puede...'})

def transition_ok(self):
self.raise_user_error('my_error')

Si no publicas el código de tu assitente te podremos ayudar mejor.

Un saludo,
--
Sergi Almacellas Abellana
www.koolpi.com
Twitter: @pokoli_srk
Gloworms Glow
2018-04-16 13:54:54 UTC
Permalink
El lunes, 16 de abril de 2018, 10:34:23 (UTC-3), Sergi Almacellas Abellana
Post by Sergi Almacellas Abellana
@classmethod
super(Wizard, cls).__setup__()
cls._error_messages.update({'my_error': 'No puede...'})
self.raise_user_error('my_error')
Si no publicas el código de tu assitente te podremos ayudar mejor.
Un saludo,
--
Sergi Almacellas Abellana
www.koolpi.com
Si, así lo tengo y hasta el mensaje de error funciona, el problema es
después. Cuando apreto 'Ok' al mensaje de error, no me vuelve a llevar a la
ventana del wizard, sino que me da el error que dije antes.

Acá escribo el código que tengo:

class ChangeStateAsk(ModelView):
__name__ = 'change_state.ask'
date = fields.Date('Date')

class ChangeDate(Wizard):
__name__ = 'change_state.date'

start = StateTransition()
ask = StateView('change_state.ask',
'md_hhrr.change_state_ask_view_form', [
Button('Cancel', 'end', 'tryton-cancel'),
Button('Activate', 'confirm', 'tryton-ok',
default=True),
])
confirm = StateTransition()

def transition_start(self):
return 'ask'

@classmethod
def __setup__(cls):
super(ChangeDate, cls).__setup__()
cls._error_messages.update({
'incorrect_date': 'No se puede cambiar la fecha',
})

def transition_confirm(self):
if (self.ask.date > date.today()):
self.raise_user_error('incorrect_date')
return 'end'
Sergi Almacellas Abellana
2018-04-16 13:59:30 UTC
Permalink
 Si, así lo tengo y hasta el mensaje de error funciona, el problema es
después. Cuando apreto 'Ok' al mensaje de error, no me vuelve a llevar a
la ventana del wizard, sino que me da el error que dije antes.
Que versión del cliente tienes? Recuerdo que se incluyó alguna
corrección de errores de este tipo en la última versión menor.

Debería estar solucionado en la versión 4.6.5
    __name__ = 'change_state.ask'
    date = fields.Date('Date')
    __name__ = 'change_state.date'
    start = StateTransition()
    ask = StateView('change_state.ask',
                'md_hhrr.change_state_ask_view_form', [
                    Button('Cancel', 'end', 'tryton-cancel'),
                    Button('Activate', 'confirm', 'tryton-ok',
                        default=True),
                ])
    confirm = StateTransition()
        return 'ask'
Puedes utilizar la propiedad _start_state para indicar que empieze en
ask. Así te ahorras la transición start.
        super(ChangeDate, cls).__setup__()
        cls._error_messages.update({
            'incorrect_date': 'No se puede cambiar la fecha',
            })
            self.raise_user_error('incorrect_date')
        return 'end'
Esto lo puedes hacer también con un dominio en el campo:

date = fields.Date('Date', domain=[('date', '<=', Date())])

de forma que el cliente ya no te va a dejar confirmar si pones un valor
incorrecto.

Un saludo,
--
Sergi Almacellas Abellana
www.koolpi.com
Twitter: @pokoli_srk
Gloworms Glow
2018-04-16 14:16:28 UTC
Permalink
El lunes, 16 de abril de 2018, 10:59:32 (UTC-3), Sergi Almacellas Abellana
Post by Gloworms Glow
Si, así lo tengo y hasta el mensaje de error funciona, el problema es
después. Cuando apreto 'Ok' al mensaje de error, no me vuelve a llevar a
la ventana del wizard, sino que me da el error que dije antes.
Que versión del cliente tienes? Recuerdo que se incluyó alguna
corrección de errores de este tipo en la última versión menor.
Debería estar solucionado en la versión 4.6.5
Estoy usando la version 4.6.0
Post by Gloworms Glow
__name__ = 'change_state.ask'
date = fields.Date('Date')
__name__ = 'change_state.date'
start = StateTransition()
ask = StateView('change_state.ask',
'md_hhrr.change_state_ask_view_form', [
Button('Cancel', 'end', 'tryton-cancel'),
Button('Activate', 'confirm', 'tryton-ok',
default=True),
])
confirm = StateTransition()
return 'ask'
Puedes utilizar la propiedad _start_state para indicar que empieze en
ask. Así te ahorras la transición start.
Lo tengo así porque pensaba poner otra transición mas adelante.
Post by Gloworms Glow
@classmethod
super(ChangeDate, cls).__setup__()
cls._error_messages.update({
'incorrect_date': 'No se puede cambiar la fecha',
})
self.raise_user_error('incorrect_date')
return 'end'
date = fields.Date('Date', domain=[('date', '<=', Date())])
de forma que el cliente ya no te va a dejar confirmar si pones un valor
incorrecto.
Esta forma la sabía. Pero mi pregunta es como poner el mensaje de error,
porque también tengo que usar el mensaje (más adelante) para otros campos
que tengo que comparar con campos de otras clases y no puedo ponerlos en el
'domain'

No se si me hago entender. Disculpa!

Un saludo,
--
Sergi Almacellas Abellana
www.koolpi.com
Sergi Almacellas Abellana
2018-04-16 14:18:53 UTC
Permalink
Post by Gloworms Glow
El lunes, 16 de abril de 2018, 10:59:32 (UTC-3), Sergi Almacellas
 Si, así lo tengo y hasta el mensaje de error funciona, el
problema es
después. Cuando apreto 'Ok' al mensaje de error, no me vuelve a
llevar a
la ventana del wizard, sino que me da el error que dije antes.
Que versión del cliente tienes? Recuerdo que se incluyó alguna
corrección de errores de este tipo en la última versión menor.
Debería estar solucionado en la versión 4.6.5
Estoy usando la version 4.6.0
Entonces debes actualizar a la última versión menor del cliente para que
no te de el error.

Un saludo,
--
Sergi Almacellas Abellana
www.koolpi.com
Twitter: @pokoli_srk
Loading...