Erro ao pegar campo na tabela Auth.User

28 views
Skip to first unread message

Jose Carlos Vicente Pereira

unread,
Jun 25, 2014, 9:39:58 PM6/25/14
to web2py-us...@googlegroups.com
Ola, boa noite... no controller estou tentando ver o conteudo do campo "'user_idcid'" mas dá a seguinte mensagem:

Traceback (most recent call last):
File "C:\web2py\gluon\restricted.py", line 217, in restricted
exec ccode in environment
File "C:/web2py/applications/infoprev/controllers/default.py", line 179, in <module>
print auth.user_idcid
AttributeError: 'Auth' object has no attribute 'user_idcid'

o campo existe, esta preenchido... mas nao me mostrar o conteudo... agora  se eu pedir "user_id" é exibido sem erro

esse campo eu criei atraves do codigo, no db.py:
auth.settings.extra_fields ['auth_user'] = [Field ("idcid", "integer", default=request.vars.cidade)]


fiz o teste assim:
vars=request.vars.cidade
print vars
print auth.user_idcid

se for 'user_id" dá certo... se for 'user_idcid' dá erro....

alguma dica?



Vinicius Assef

unread,
Jun 25, 2014, 11:31:18 PM6/25/14
to web2py-us...@googlegroups.com
auth_user.idcid

2014-06-25 22:39 GMT-03:00 Jose Carlos Vicente Pereira
<carly...@hotmail.com>:
> --
> 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
> quot;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.

Carlos Costa

unread,
Jun 26, 2014, 7:49:12 AM6/26/14
to web2py-us...@googlegroups.com
José Carlos,

auth é o objeto que gerencia autenticação.
O nome da tabela de usuários é auth_user.


Você está recebendo esta mensagem porque se inscreveu 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 obter mais opções, acesse https://groups.google.com/d/optout.



--
Att.

Carlos J. Costa
Cientista da Computação
Esp. Gestão em Telecom
<º))><

Jose Carlos Vicente Pereira

unread,
Jun 26, 2014, 9:01:16 AM6/26/14
to web2py-us...@googlegroups.com
Ola, bom dia... conforme foi orientado, fiz a alteracao.. coloquei  'auth_user.idcid", mas deu esse erro

Traceback

1.
2.
3.
4.
5.
6.
7.
Traceback (most recent call last):
File "C:\web2py\gluon\restricted.py", line 217, in restricted
exec ccode in environment
File "C:/web2py/applications/infoprev/controllers/default.py", line 179, in <module
>
print auth_user.idcid
NameError: name 'auth_user' is not defined


so informando, o campo "auth.user_idcid" existe, ta preenchido, o cadastro login abre sem erro... so quero chamar ele aqui nesse controller...

estou testando pegar o conteudo dele assim:
vars=request.vars.cidade
print vars
print auth_user.idcid

Diogo Munaro

unread,
Jun 26, 2014, 9:06:13 AM6/26/14
to web2py-us...@googlegroups.com
session.auth_user.idcid ou auth.user.idcid... Só escolher um, isso se o usuário estiver logado


Jose Carlos Vicente Pereira

unread,
Jun 26, 2014, 8:50:28 PM6/26/14
to web2py-us...@googlegroups.com
ola, boa noite... a questao do USER.IDCID consegui resolver... agora so preciso finalizar fazendo 2 testes no usuario logado...

estou tentando utilizando esse codigo:

#@auth.requires(auth.has_membership('admin') or auth.has_membership('gestor', auth.user.idcid==vars))

se o usuario for ADMIN acesso livre...

se o usuario for GESTOR, tera q preencher dois requisitos, ser GESTOR e o IDCID ser igual ao VARS

o VARS ta carregado com o codigo da cidade q esta sendo clicada no momento...

mas nao funciona, acho q a parte do teste do gestor falta algo...

alguma dic??




Em quarta-feira, 25 de junho de 2014 22h39min58s UTC-3, Jose Carlos Vicente Pereira escreveu:

Isvaldo Fernandes

unread,
Jun 26, 2014, 9:06:05 PM6/26/14
to web2py-us...@googlegroups.com

Ler o livro do web2py

Diogo Munaro

unread,
Jun 26, 2014, 9:33:48 PM6/26/14
to web2py-us...@googlegroups.com

O Isvaldo tem razão, seria legal ler o livro para sanar algumas dúvidas básicas.

Outra coisa legal seria não aproveitar as threads para resolver problemas na sua aplicação inteira, mas sim abrir várias threads com problemas diferentes.

Agora para tentar resolver o problema, aonde está declarado esse vars?

Tente usar isso:

@auth.requires(auth.has_ membership('admin') or auth.has_membership('gestor') and auth.user.idcid==vars))

Lembre que sempre é melhor usar permissões ao invés de grupos para dar acesso as funções do seu sistema.

Ainda acho que uns boa saída para seu problema seria multitenancy. Tem no livro do web2py explicadinho... Você tá fazendo na mão o que ele há tem quase pronto.

Fala depois o resultado! Abraços!

Em 26/06/2014 21:50, "Jose Carlos Vicente Pereira" <carly...@hotmail.com> escreveu:

Cláudio Torcato

unread,
Jun 27, 2014, 8:44:59 AM6/27/14
to web2py-users-brazil
A leitura do livro é essencial mesmo. Lá descobrimos que o framework já tem muitas soluções. Só não encontrando lá é que a pessoa deveria buscar em outros lugares, correndo o risco de refazer a roda.
--
"Não sou eu quem cria a mim mesmo, e sim eu aconteço para mim mesmo."
-- Carl G. Jung, psicólogo

Jose Carlos Vicente Pereira

unread,
Jun 27, 2014, 1:29:27 PM6/27/14
to web2py-us...@googlegroups.com
Ola, boa tarde... Concordo com todos, é essencial ler o livro sim, ja li a parte q trata sobre essa autenticacao, entendi como fazer teste de usuario, so q minha questao agora é fazer 2 testes no mesmo login.. isso nao consegui resolver lendo o livro, afinal nao vi um exemplo que se encaixasse ao meu caso, dai fica dificil ficar tentando advinhar qual a sintaxe correta, e se pedir ajudar  fica mais facil... nesse momento, esse codigo:

vars=request.vars.cidade
@auth.requires(auth.has_membership('admin') or (auth.has_membership('gestor') and auth.user.idcid==vars))

esse segunda validaçao, quando o usario for "gestor" era pra ver GESTOR e COD CID, mas esta ignorando a validacao do IDCID, ou seja, se a pessoa for gestor na ta importando qual o codigo da cidade, passa direto... e ja fiz varias alteracoes e so dá erro, por isso fica dificil so seguir o livro

ate coloquei entre parenteses pra ve se faz a procedencia, mas nao adiantou...



Em quarta-feira, 25 de junho de 2014 22h39min58s UTC-3, Jose Carlos Vicente Pereira escreveu:

Carlos Costa

unread,
Jun 27, 2014, 3:37:54 PM6/27/14
to web2py-us...@googlegroups.com
Pelo que entendi tem um erro na lógica.

Você usou OR então apenas a primeira condição sendo verdadeira já é o suficiente.
Talvez deveria ser AND porque o usuário precisa ser do grupo admin E ser gestor E ser da cidade tal no vars
vars=request.vars.cidade
@auth.requires(auth.has_membership('admin') and auth.has_membership('gestor') and auth.user.idcid==vars)


--
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 quot;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.



--

Jose Carlos Vicente Pereira

unread,
Jun 27, 2014, 3:58:41 PM6/27/14
to web2py-us...@googlegroups.com
Ola, é o seguinte... tenho somente 2 tipos de usuario ADMIN e GESTOR

vars=request.vars.cidade

se for ADMIN, ele podera acessar qualquer cidade, livre acesso ao sistema
@auth.requires(auth.has_membership('admin') 


se for GESTOR, ele ira acessar somente o link da cidade q eu defini no cadatro dele "IDCID"... entao ele tera q ver dois criterios aqui, ser GESTOR e ter o IDCID da cidade clicada (q ta dentro da VARS)...
... or auth.has_membership('gestor') and auth.user.idcid==vars)

Tenho a relacao de tabelas "links"
1 - Cidade Um
2 - Cidade Dois

quando eu clicar na CIDADE UM (sou gestor), esse AUTH dever olhar meu cadastro e conferi: é GESTOR e o IDCID = 1... entao to liberado na CIDADE UM

diferente se eu clicasse na CIDADE DOIS: apos a conferencia iria ver: é GESTOR e o IDCID = 1... entao nao tem acesso a CIDADE DOIS

auth.has_membership('gestor') and auth.user.idcid==vars)

nesse momento esse AND... ta sendo ignorado




Em quarta-feira, 25 de junho de 2014 22h39min58s UTC-3, Jose Carlos Vicente Pereira escreveu:
Reply all
Reply to author
Forward
0 new messages