Criar link para cadastrar novo usuário para site de afiliados

54 views
Skip to first unread message

Morganti

unread,
Jul 21, 2016, 3:17:35 PM7/21/16
to web2py-users-brazil
Boa tarde!

Estou trabalhando num projeto de loja virtual com ganhos de pontos para afiliados. O cliente me pediu que o novo associado dele possa se cadastrar com um link fácil como:

http://www.loja.com.br/joao

o 'joao' seria o login do associado. Esse 'id_associado', que é o campo que estou criando, seria já automaticamente preenchido pela URL.

Porém, estou num impasse, primeiro tento criar todos os campos de cadastro do associado/cliente na tabela de usuários normais do web2py (auth_user) mas aí vem o problema. Sou novo no web2py e não sei ainda se é possível customizar a tela de signup que já está pronta.

Segundo problema seria como capturar essa informação da URL e jogar para o campo direto no form.

Pensei em separar o processo de cadastramento deixando no signup padrão e na tabela
auth_user somente o básico:
-nome
-login (username
-email
-senha
Numa segunda tela completar os dados de cadastro com
-dt nascimento
-cpf
-id_associado
-etc...
Mas aí vem o segundo problema que encontrei, como fazer o user() jogar para essa segunda tela depois de finalizar a primeira que é padrão.
De qualquer forma, essa segunda idéia não foi ainda aceita pelo cliente, mas se for possível conseguir jogar nessa o id_associado preenchido, consigo convencer ele.

Não sei se enrolei na pergunta.
Agradeço desde já.
André

Marlysson Silva

unread,
Jul 22, 2016, 7:07:44 AM7/22/16
to web2py-users-brazil
Primeiro problema : Customizaçao da da tela de sign up.

Provavelmente é possível sim, tendo em vista que o que controla os dados vindos dela é o controller "user" , então basta deixar os campo com os names de formulário igual que o controller irá recuperar a informação.

Segundo problema : Pegar e jogar na url.

Primeiramente no formulário se fosse gerado de uma tabela teria que ter a campo de afiliado, com id da pessoa.
Para pegar o dado da url tem os valores de request.* , molezinha .. ai antes de gerar o formulário no controller, pega esse dado da url , faz uma busca pelo id de afiliado na tabela pessoas e retorna ela, e antes de gerar o sqlform ( provavel ) define o campo do formulário como o valor padrão, tipo:

formulario = SQLFORM(tabela)
formulario.afiliado = dados_buscados_do_afiliado.campo

Assim o formulário já virá com o campo com valor pre-definido.

Terceiro: Redirecionar depois do cadastro.

Nos parametros de Auth() autentication , tem os valores respectivos à ações após cada ação do controller, deve ter alguma responsável por definir a url redirecionada (sem usar redirect no controller ) após o cadastro.


Acho que é isso, é a idéia de como funciona, qualquer coisa só refinar :D.

Marlysson Silva

unread,
Jul 22, 2016, 7:09:57 AM7/22/16
to web2py-users-brazil
Complementando , nessa seção tem os valores que provavelmente deseja.


Em quinta-feira, 21 de julho de 2016 16:17:35 UTC-3, Morganti escreveu:

Fabiano Almeida

unread,
Jul 22, 2016, 12:19:53 PM7/22/16
to web2py-us...@googlegroups.com
Boa tarde, vc precisa editar o routes do web2py

--
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-us...@googlegroups.com
Para se desinscrever, envie email a: web2py-users-br...@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-br...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Fabiano Almeida

unread,
Jul 22, 2016, 12:36:44 PM7/22/16
to web2py-us...@googlegroups.com
Quanto a parte do routes, e para funcionar o loja.com.br/joao, tem uma thread no grupo internacional que o Massimo me auxiliou com isso: https://groups.google.com/forum/#!searchin/web2py/fabiano$20massimo$20routes/web2py/WefCd9O8tLI/KHqxKyPsFgAJ

No codigo passado por Massimo o $domain e' equivalente ao nome do cliente.

A questao e que isso vai mexer em toda a forma de estruturacao de url do seu aplicativo.

Se o /joao do seu exemplo for somente p cadastro do afiliado, vai ser um trabalhao por pouco, melhor seria algo como loja.com.b/cadastro/joao, que dai vc cria o controller cadastro (ou nome mais conveniente), o no index() dele captura o nome do assossiado passado na url. 

Volney Casas

unread,
Jul 22, 2016, 12:39:06 PM7/22/16
to web2py-users-brazil
Só pra complementar a resposta do Marlysson Silva, que eu acho q já respondeu tudo haha.


Sou novo no web2py e não sei ainda se é possível customizar a tela de signup que já está pronta.

Se você quer customizar o visual dessa tela, vc pode editar o arquivo views/default/user.html

Morganti

unread,
Jul 22, 2016, 12:59:54 PM7/22/16
to web2py-users-brazil
Olá Fabiano,

Poderia dar um exemplo do routes?

Obrigado
Para se desinscrever, envie email a: web2py-users-brazil+unsub...@googlegroups.com

Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsub...@googlegroups.com.

Morganti

unread,
Jul 22, 2016, 1:00:31 PM7/22/16
to web2py-users-brazil
Olá.
Estou vendo a documentação do Marylsson.

Obrigado

Fabiano Almeida

unread,
Jul 22, 2016, 1:02:46 PM7/22/16
to web2py-us...@googlegroups.com
https://groups.google.com/forum/#!searchin/web2py/fabiano$20massimo$20routes/web2py/WefCd9O8tLI/KHqxKyPsFgAJ

No codigo passado por Massimo o $domain e' equivalente ao nome do cliente.

Para se desinscrever, envie email a: web2py-users-br...@googlegroups.com

Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-br...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.

--
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-us...@googlegroups.com
Para se desinscrever, envie email a: web2py-users-br...@googlegroups.com

Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-br...@googlegroups.com.

Morganti

unread,
Jul 23, 2016, 8:04:43 AM7/23/16
to web2py-users-brazil
Olá,

Fiz um teste em formulário/tabela sem ser auth e funcionou.
Obrigado!
Agora, para não ter que mudar muito o padrão do auth, acho que vou deixar um campo ID Afiliado na tela e jogar esse valor para uma ação pós novo usuário cadastrado. Num futuro vou tentar usar o mapeamento do routes e tentar jogar esse valor no form.

Se fizer um form completamente novo para registrar usuário, há algum problema com o web2py, algo do tipo, cadastro()?

Uma última pergunta imbecil, sempre tratar campo data em qualquer linguagem é uma porcaria, enfim, tenho que validar a data de nascimento maior que 18 anos. Usando o datetime consigo pegar o ano normalmente para um variavel tipo date, porém, como fazer isso quando envio para uma outra função validar passando o vars na URL e na função recebendo o request.vars.anonasc (exemplo)? Qual o bendidto tipo de campo que fica nisso que não consigo descobrir?

Muito obrigado a todos!
André

Marlysson Silva

unread,
Jul 25, 2016, 11:10:36 AM7/25/16
to web2py-users-brazil
1) Ainda não tentei, mais porque o do user/register atendia bem ( só o layout que não agradava, mas para isso mudava o design ) , esse controller já provê as funcionalidades básicas para cada função registrada nele.Se for customização de design muda na view, se for de comportamento , trata no controller.

2)Essa outra função está em outro controller, outra view..Se for pra transitar dados eu usaria o session.data_nascimento , ai poderia capturar ela nos locais e tratá-la.

Meu caso: Usa a url só quando for para pegar o valor e usar em alguma renderização. Se for operações ou session ou post para db. IMHO :D

Fabiano Almeida

unread,
Jul 26, 2016, 1:28:28 PM7/26/16
to web2py-us...@googlegroups.com
Outra sugestão (não testada)

Na tua url de exemplo http://www.loja.com.br/joao , joao é equivalente a nome de controller, como não existe de fato um controller joao.py, gera erro, daí o redirecionamento e tratamento deste erro.

No routes.py tem a opção routes_onerror, creio que alterando ela vc consegue redirecionar chamadas inválidas para uma função tua que pega o controller da url informada, e com este nome vc consegue consultar se é um associado ou realmente erro, e dar o devido tratamento.

Atenciosamente,

Fabiano.


--

Andre Morganti

unread,
Jul 27, 2016, 7:22:40 AM7/27/16
to web2py-us...@googlegroups.com
Fabiano, boa idéia, vou testar e retorno se deu certo. Pode ajudar outros com casos parecidos.
Obrigado

Você recebeu essa mensagem porque está inscrito em um tópico no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse tópico, acesse https://groups.google.com/d/topic/web2py-users-brazil/tTZh9i--a8w/unsubscribe.
Para cancelar inscrição nesse grupo e todos os seus tópicos, envie um e-mail para web2py-users-br...@googlegroups.com.

Fabiano Almeida

unread,
Jul 27, 2016, 12:03:22 PM7/27/16
to web2py-us...@googlegroups.com
Testa e manda p gente ver como q vc resolveu!

Atenciosamente,

Fabiano.
Reply all
Reply to author
Forward
0 new messages