Re: [zope-pt] Obrigatoriedade condicional no Archetypes

2006-07-31 Por tôpico Elisandra Fidler Pez
Dorneles, obrigada pela ajuda, funcionou direitinho.

Mas o Ruda tem razão, isso é pura magia negra.
Um livro hein... fico aguardando ansiosamente! ;-)
[]'s
Elisandra

Ruda Filgueiras escreveu:
> Deo..
> Isso é magia negra mesmo..! eheh
>
> De qualquer forma seria muito bom se esse tipo de coisa estivesse mais
> documentado. :-)
> /me acha que Deo deveria escrever um livro de AT recipes, um tipo de
> AT CookBook!
>
> PS: Se precisar de um ajudante para essa tarefa eu sou voluntário.
>
> On 7/28/06, Dorneles Treméa <[EMAIL PROTECTED]> wrote:
> > Oi Elisandra,
> >
> > > Fiz uma classe com dois campos em que um deles deve ser preenchido
> > > obrigatoriamente, o usuário que escolhe qual dos dois quer preencher,
> > > mas não sei como fazer isso no Achetypes, alguém poderia me dar 
> uma luz?
> >
> > campos 'condicionalmente obrigatórios', volta e meia alguém sempre
> > precisa disso... :-)
> >
> > Uma das saídas é usar um dos 3 hooks de validação existentes, que são
> > chamados na seguinte ordem:
> >
> > - pre_validate(self, REQUEST, errors)
> > - validate_CAMPO(value)
> > - post_validate(self, REQUEST, errors)
> >
> > Mesmo o segundo hook recebendo apenas o valor, ainda é possível
> > ter acesso ao REQUEST (self.REQUEST) e dessa forma, consultar os
> > valores de outros campos.
> >
> > A diferença entre os hooks está apenas na ordem em que eles são
> > chamados. Caso o pre_validate acuse algum erro, a validação é
> > interrompida e os erros são exibidos. Já o post_validate é sempre
> > executado após a validação individual de todos os campos, então
> > ele pode, caso necessário, mudar o resultado da validação, tanto
> > adicionando erros, como removendo.
> >
> > Os métodos {pre,post}_validate retornam None quando não há erro,
> > ou quando há, um dicionário contendo nas chaves o nome dos campos
> > e nos valores os erros a serem exibidos para cada campo. O método
> > validate_CAMPO (onde sim, CAMPO é o nome do campo...) retorna None
> > para informar que não há erro ou a mensagem a ser exibida, caso
> > tenha erro.
> >
> > Exemplo para o post_validate, definido na classe do teu conteúdo:
> >
> > def post_validate(self, REQUEST, errors):
> > # Caso nenhum dos dois campos tenha sido preenchido
> > if not REQUEST.get('campo1') and not REQUEST.get('campo2'):
> > msg = 'Você precisa preencher o campo1 ou o campo2.'
> > errors['campo1'] = msg
> > errors['campo2'] = msg
> > # Caso ambos tenham sido preenchido
> > if REQUEST.get('campo1') and REQUEST.get('campo2'):
> > msg = 'Você precisa preencher o campo1 ou o campo2, não ambos.'
> > errors['campo1'] = msg
> > errors['campo2'] = msg
> >
> > HTH,
> >
> > --
> >
> > Dorneles Treméa
> > X3ng Web Technology
> >
> >
> > Para enviar uma mensagem: zope-pt@yahoogrupos.com.br
> > Para desistir envie uma mensagem em branco para: 
> [EMAIL PROTECTED]
> > Links do Yahoo! Grupos
> >
> >
> >
> >
> >
> >
> >
> >
>
>
> -- 
> Rudá Porto Filgueiras
> Empresa Livre
> http://www.empresalivre.com.br
>  



Para enviar uma mensagem: zope-pt@yahoogrupos.com.br
Para desistir envie uma mensagem em branco para: [EMAIL PROTECTED] 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/zope-pt/

<*> Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html

 
begin:vcard
fn:Elisandra Fidler Pez
n:;Elisandra Fidler Pez
org;quoted-printable:Universidade de Caxias do Sul;N=C3=BAcleo de Processamento de Dados
adr;dom:;;;Caxias do Sul;RS
email;internet:[EMAIL PROTECTED]
title:Analista de Sistemas
tel;work:(54) 218-2198 Ramal 2306
version:2.1
end:vcard



Re: [zope-pt] Obrigatoriedade condicional no Archetypes

2006-07-31 Por tôpico Ruda Filgueiras
Deo..
Isso é magia negra mesmo..! eheh

De qualquer forma seria muito bom se esse tipo de coisa estivesse mais
documentado. :-)
/me acha que Deo deveria escrever um livro de AT recipes, um tipo de
AT CookBook!

PS: Se precisar de um ajudante para essa tarefa eu sou voluntário.

On 7/28/06, Dorneles Treméa <[EMAIL PROTECTED]> wrote:
> Oi Elisandra,
>
> > Fiz uma classe com dois campos em que um deles deve ser preenchido
> > obrigatoriamente, o usuário que escolhe qual dos dois quer preencher,
> > mas não sei como fazer isso no Achetypes, alguém poderia me dar uma luz?
>
> campos 'condicionalmente obrigatórios', volta e meia alguém sempre
> precisa disso... :-)
>
> Uma das saídas é usar um dos 3 hooks de validação existentes, que são
> chamados na seguinte ordem:
>
> - pre_validate(self, REQUEST, errors)
> - validate_CAMPO(value)
> - post_validate(self, REQUEST, errors)
>
> Mesmo o segundo hook recebendo apenas o valor, ainda é possível
> ter acesso ao REQUEST (self.REQUEST) e dessa forma, consultar os
> valores de outros campos.
>
> A diferença entre os hooks está apenas na ordem em que eles são
> chamados. Caso o pre_validate acuse algum erro, a validação é
> interrompida e os erros são exibidos. Já o post_validate é sempre
> executado após a validação individual de todos os campos, então
> ele pode, caso necessário, mudar o resultado da validação, tanto
> adicionando erros, como removendo.
>
> Os métodos {pre,post}_validate retornam None quando não há erro,
> ou quando há, um dicionário contendo nas chaves o nome dos campos
> e nos valores os erros a serem exibidos para cada campo. O método
> validate_CAMPO (onde sim, CAMPO é o nome do campo...) retorna None
> para informar que não há erro ou a mensagem a ser exibida, caso
> tenha erro.
>
> Exemplo para o post_validate, definido na classe do teu conteúdo:
>
> def post_validate(self, REQUEST, errors):
> # Caso nenhum dos dois campos tenha sido preenchido
> if not REQUEST.get('campo1') and not REQUEST.get('campo2'):
> msg = 'Você precisa preencher o campo1 ou o campo2.'
> errors['campo1'] = msg
> errors['campo2'] = msg
> # Caso ambos tenham sido preenchido
> if REQUEST.get('campo1') and REQUEST.get('campo2'):
> msg = 'Você precisa preencher o campo1 ou o campo2, não ambos.'
> errors['campo1'] = msg
> errors['campo2'] = msg
>
> HTH,
>
> --
>
> Dorneles Treméa
> X3ng Web Technology
>
>
> Para enviar uma mensagem: zope-pt@yahoogrupos.com.br
> Para desistir envie uma mensagem em branco para: [EMAIL PROTECTED]
> Links do Yahoo! Grupos
>
>
>
>
>
>
>
>


-- 
Rudá Porto Filgueiras
Empresa Livre
http://www.empresalivre.com.br


Para enviar uma mensagem: zope-pt@yahoogrupos.com.br
Para desistir envie uma mensagem em branco para: [EMAIL PROTECTED] 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/zope-pt/

<*> Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html

 


Re: [zope-pt] Obrigatoriedade condicional no Archetypes

2006-07-27 Por tôpico Dorneles Treméa
Oi Elisandra,

> Fiz uma classe com dois campos em que um deles deve ser preenchido
> obrigatoriamente, o usuário que escolhe qual dos dois quer preencher,
> mas não sei como fazer isso no Achetypes, alguém poderia me dar uma luz?

campos 'condicionalmente obrigatórios', volta e meia alguém sempre
precisa disso... :-)

Uma das saídas é usar um dos 3 hooks de validação existentes, que são
chamados na seguinte ordem:

- pre_validate(self, REQUEST, errors)
- validate_CAMPO(value)
- post_validate(self, REQUEST, errors)

Mesmo o segundo hook recebendo apenas o valor, ainda é possível
ter acesso ao REQUEST (self.REQUEST) e dessa forma, consultar os
valores de outros campos.

A diferença entre os hooks está apenas na ordem em que eles são
chamados. Caso o pre_validate acuse algum erro, a validação é
interrompida e os erros são exibidos. Já o post_validate é sempre
executado após a validação individual de todos os campos, então
ele pode, caso necessário, mudar o resultado da validação, tanto
adicionando erros, como removendo.

Os métodos {pre,post}_validate retornam None quando não há erro,
ou quando há, um dicionário contendo nas chaves o nome dos campos
e nos valores os erros a serem exibidos para cada campo. O método
validate_CAMPO (onde sim, CAMPO é o nome do campo...) retorna None
para informar que não há erro ou a mensagem a ser exibida, caso
tenha erro.

Exemplo para o post_validate, definido na classe do teu conteúdo:

def post_validate(self, REQUEST, errors):
# Caso nenhum dos dois campos tenha sido preenchido
if not REQUEST.get('campo1') and not REQUEST.get('campo2'):
msg = 'Você precisa preencher o campo1 ou o campo2.'
errors['campo1'] = msg
errors['campo2'] = msg
# Caso ambos tenham sido preenchido
if REQUEST.get('campo1') and REQUEST.get('campo2'):
msg = 'Você precisa preencher o campo1 ou o campo2, não ambos.'
errors['campo1'] = msg
errors['campo2'] = msg

HTH,

-- 

Dorneles Treméa
X3ng Web Technology


Para enviar uma mensagem: zope-pt@yahoogrupos.com.br
Para desistir envie uma mensagem em branco para: [EMAIL PROTECTED] 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/zope-pt/

<*> Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html

 




[zope-pt] Obrigatoriedade condicional no Archetypes

2006-07-27 Por tôpico Elisandra Fidler
Olá pessoal!!

Fiz uma classe com dois campos em que um deles deve ser preenchido
obrigatoriamente, o usuário que escolhe qual dos dois quer preencher,
mas não sei como fazer isso no Achetypes, alguém poderia me dar uma luz?

obrigada,

Elisandra





Para enviar uma mensagem: zope-pt@yahoogrupos.com.br
Para desistir envie uma mensagem em branco para: [EMAIL PROTECTED] 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/zope-pt/

<*> Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html