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.