--- Em zope-pt@yahoogrupos.com.br, Luciano Pacheco lucm...@... escreveu
2009/3/31 vinicius_marco marco_vinic...@...
Pessoal,
Preciso criar uma validação que impeça a transição para determinado estado
enquanto as condições não forem atendidas.
Assim, por exemplo, caso se deseje publicar um objeto inconsistente, a
transição deve ser abortada e uma mensagem exibida.
Tentei utilizar os scripts nos eventos de pre e pos transição, mas não vi
forma de abortar a transição uma vez iniciada.
Na transição tem como usar um expression, pense nele como sendo um condition
(do template). Eu já utilizei e funcionou.
A diferença de usar o expression é que enquanto o objeto estiver
incosistente a transição não poderá ser feita.
Crie um método no seu objeto que diga se ele está insconsistente e no
expression use algo como here/estaInconsistente.
Ou crie uma browser view que diga se o objeto está incosistente e use algo
como here/@@estaInconsistente no expression.
Lá na tela da transition na ZMI tem uma ajuda ao lado do campo Expression,
lá vc encontra mais informações.
Até mais,
--
Luciano Pacheco
Simples Consultoria
www.simplesconsultoria.com.br
Obrigado Luciano, mas desta forma o usuário fica sem saber que há transição
possível até que uma determinada condição seja atendida. Isto é, até que o
usuário preencha uma informação a transição não aparecerá no combo superior.
Precisávamos de uma solução onde a transição estivesse sempre lá, mas houvesse
uma validação prévia sempre que a mesma fosse disparada de modo a permitir ou
não a continuidade do processo.
Acabamos por utilizar uma solução de contorno. Consiste em alterar no
workflow o parâmetro URL da transição específica. Ao invés de invocar o
content_status_modify, alteramos para um cpt ou cpy que se encarrega de dar o
devido tratamento e decidir pela execução da transição.
Não foi como imaginávamos, mas não ficou tão deselegante.
[]'s