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