2008/6/4 illidam <[EMAIL PROTECTED]>:
> --- Em zope-pt@yahoogrupos.com.br, "Luciano Ramalho" <[EMAIL PROTECTED]>
> escreveu
>>
>> 2008/6/3 illidam <[EMAIL PROTECTED]>:
>> > Meu primeiro post aqui, tipo dei uma olhada não vi ninguem com esse
>> > problema aqui no grupo então vai ai o problema pra quem pduer me
> ajudar.
>> > Eu criei um formulario no ploneFormGen certinho e tudo mais...criei
>> > zSqlMethod q insere os dados do formulario na banco e tb criei um
>> > script que tb esta funcionando corretamente inserindo no banco..o
>> > problema é que quando clico em enviar no formulario, aparece o
>> > seguinte erro...
>> >
>> > TypeError: pegar_do_formulario() takes exactly 4 arguments (0 given)
>> > (Also, the following error occurred while attempting to render the
>> > standard error message, please see the event log for full details:
>> > name 'plone_context_state' is not defined)
>> >
>> > tipo eu entendi +- o erro, fala q o pegar formulario tem 4 parametros
>> > e ele nao esta recendo nenhum ou 0, e ai oq faço!?
>> > vo postar o meu pegar pegar parametro pra casa tenha algo
>> > errado...alguem me falar...
>> > segue o pegar_formulario:
>> >
>>
>> Eu nunca usei o PloneFormGen, mas evidentemente o problema está em
>> como você está chamando o script. Se fosse um formulário normal,
>> bastaria colocar a URL do script no actio do form, assim: <FORM
>> ACTION="pegar_do_formulario">
>>
>> > o parameters list dele é:
>> > cliente,checador,numerodaproposta,valordaproposta
>>
>> OK, esta parte está certa. Com esta lista de parâmetros, o Zope busca
>> automaticamente os dados no request, não precisa fazer manualmente
>> como você faz.
>>
>> >
>> > e depois vem o codigo:
>> >
>>
>> Vou comentar trecho por trecho.
>>
>> O trecho abaixo é absolutamente desnecessário, porque como eu disse o
>> Zope busca os parâmetros do script no request automaticamente.
>>
>> > # Pega as variáveis do Ambiente
>> > ################################################
>> > request = container.REQUEST
>> > RESPONSE =  request.RESPONSE
>> >
>> > ################################################
>> > # Recebe os valores da Pagina
>> > ################################################
>> > cliente = request.get('cliente')
>> > checador = request.get('checador')
>> > numerodaproposta = request.get('numerodaproposta')
>> > valordaproposta = request.get('valordaproposta')
>>
>> Bastaria o trecho abaixo:
>>
>> >
>> > ################################################
>> > # Insere as informações no banco
>> > ################################################
>> >
>> > context.insereir_banco(cliente=cliente,checador=checador,
>> > numero_da_proposta=numerodaproposta,
>> > valor_da_proposta=valordaproposta)
>> >
>> > return "Adicionado com sucesso!"
>>
>> Normalmente você não vai querer retornar uma string, e sim uma página.
>> Um jeito de fazer isso é assim:
>>
>> return context.pagina_de_resposta()
>>
>> Onde pagina_de_resposta é o nome de um template.
>>
>> Infelizmente eu nao conheco o PloneFormGen então não posso ser mais
>> específico, mas tudo o que eu disse aí em cima funciona para
>> formulários normais no Zope.
>>
>> [ ]s
>> Luciano
>>
>
> Aew Luciano valeu pelas dicas consegui resolver.
> Eu mantive os request, e apaguei os parameters list dessa maneira
> funcionou.
>
> Agora vem a segunda parte que não consegui fazer por ter pouco
> conhecimento.
> Se por acaso eu quisesse pegar o nome do usuario logado e salva-lo no
> banco, como faço isso?
> Pois os exemplos que vi foram feitos com dtml-call e tals... no meu
> caso não consegui entender onde eu faria a obteção do nome do do
> usuario se seria no ZsqlMethod ou no script python ou em nehum deles e
> sim no formulario!?
>
> att.
> Guilherme

No script python:

from AccessControl import getSecurityManager
user = getSecurityManager().getUser()
username = user.getUserName()

Zénrique.

Responder a