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