El 16/04/18 a les 15:54, Gloworms Glow ha escrit:
>  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

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

Puedes utilizar la propiedad _start_state para indicar que empieze en
ask. Así te ahorras la transición start.
> 
>     @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'

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

Responder a