Duvida em campos na db

29 views
Skip to first unread message

Luís Felipe Almeida

unread,
Jun 24, 2014, 8:18:04 AM6/24/14
to web2py-us...@googlegroups.com
Fala pessoal ,  Tenho a seguinte tabela na minha db , o problema é o seguinte no campo usuário , preciso que ele receba  o nome do usuário logado que postou determinada regra juntamente  com a hora e data automaticamente  e esses campos serão ocultos ao usuário que postou .

db.define_table('regras',
                Field('regra1'),
                Field('regra2'),
                Field('regra3'),
                Field('usuario'),
                Field('data' )


        
                )

abraços !

Carlos Costa

unread,
Jun 24, 2014, 8:42:57 AM6/24/14
to web2py-us...@googlegroups.com
Tenta assim:

db.define_table('regras',
                Field('regra1'),
                Field('regra2'),
                Field('regra3'),
                Field('usuario',db.auth_user, default=auth.user_id if auth.is_logged_in() ele None),
                Field('data', 'date', default=request.now )       
                )




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



--
Att.

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

Luís Felipe Almeida

unread,
Jun 24, 2014, 8:49:11 AM6/24/14
to web2py-us...@googlegroups.com
Vou tentar aqui , obrigado mesmo pela ajuda  ! xD

Ari Sobel

unread,
Jun 24, 2014, 8:50:48 AM6/24/14
to web2py googlegroups
Ola Yamandu, 
Nao dava pra fazer tb usando o auth.signature?

db.define_table('regras',
                Field('regra1'),
                Field('regra2'),
                Field('regra3'),
                auth.signature )       
                )

Por padrão os campos gerados pelo auth.signature sao ocultos em qualquer formulario, a nao ser que vc o exiba.
Podendo, no controller, para exibir fazer:
db.t_orcamento.created_by.readable = db.t_orcamento.created_on.readable = True
db.t_orcamento.created_on.readable = db.t_orcamento.created_on.readable = True

sds

Ari Sobel

unread,
Jun 24, 2014, 8:51:42 AM6/24/14
to web2py googlegroups
mudar t_orcamento por 'regars'...


Em 24 de junho de 2014 09:49, Luís Felipe Almeida <lfa.lui...@gmail.com> escreveu:
Vou tentar aqui , obrigado mesmo pela ajuda  ! xD

Luís Felipe Almeida

unread,
Jun 24, 2014, 9:00:09 AM6/24/14
to web2py-us...@googlegroups.com
e o campo da data ari ?





abraços !

Ari Sobel

unread,
Jun 24, 2014, 9:32:18 AM6/24/14
to web2py googlegroups
Os campos auth.signature sao 4
'created_on'  -Data de Criação 
'created_by',  - User que Criou
'updated_on'  - Data de Atualização
'updated_by' - User que atualizou


Em 24 de junho de 2014 10:00, Luís Felipe Almeida <lfa.lui...@gmail.com> escreveu:
e o campo da data ari ?





abraços !

--

Luís Felipe Almeida

unread,
Jun 24, 2014, 9:53:33 AM6/24/14
to web2py-us...@googlegroups.com
Fala cara tentei dessa maneira aparece seguinte erro
DAL' object has no attribute 'auth_user'
e no campo data tem alguma coisa de errado :\

abraços !


Em terça-feira, 24 de junho de 2014 09h42min57s UTC-3, yamandu escreveu:
Tenta assim:

db.define_table('regras',
                Field('regra1'),
                Field('regra2'),
                Field('regra3'),
                Field('usuario',db.auth_user, default=auth.user_id if auth.is_logged_in() ele None),
                Field('data', 'date', default=request.now )       
                )


Em 24 de junho de 2014 09:18, Luís Felipe Almeida <lfa.lui...@gmail.com> escreveu:
Fala pessoal ,  Tenho a seguinte tabela na minha db , o problema é o seguinte no campo usuário , preciso que ele receba  o nome do usuário logado que postou determinada regra juntamente  com a hora e data automaticamente  e esses campos serão ocultos ao usuário que postou .

db.define_table('regras',
                Field('regra1'),
                Field('regra2'),
                Field('regra3'),
                Field('usuario'),
                Field('data' )


        
                )

abraços !

--
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-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 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-brazil+unsub...@googlegroups.com.

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

Carlos Costa

unread,
Jun 24, 2014, 11:27:31 AM6/24/14
to web2py-us...@googlegroups.com
Esse código tem que ser executado depois de auth.define_tables().

Ari, confesso que ainda não experimentei essa solução na prática, por isso nem lembrava que ela existia, mas é legal sim.


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.

Ari Sobel

unread,
Jun 24, 2014, 12:26:11 PM6/24/14
to web2py googlegroups
Legal, Yamandu, 

Sim, é só vc colocar iso na definição das Tables, e esquecer. O Web2py faz todo o trabalho para pra vc :)

abcs

Luís Felipe Almeida

unread,
Jun 24, 2014, 12:26:50 PM6/24/14
to web2py-us...@googlegroups.com
vlw pessoal consegui aqui muito obrigado .
abraços xD

Ari Sobel

unread,
Jun 24, 2014, 12:28:24 PM6/24/14
to web2py googlegroups
Por favor, especifique qual solução


Em 24 de junho de 2014 13:26, Luís Felipe Almeida <lfa.lui...@gmail.com> escreveu:
vlw pessoal consegui aqui muito obrigado .
abraços xD

--

Luís Felipe Almeida

unread,
Jun 24, 2014, 12:39:29 PM6/24/14
to web2py-us...@googlegroups.com
ah desculpe utilizei o  que yamandu disse
coloquei desta forma :
    Field('usuario',db.auth_user,default=me,writable=False,readable=False),
    Field('data','datetime',default=request.now,writable=False,readable=False))


abraços

Ari Sobel

unread,
Jun 24, 2014, 1:02:17 PM6/24/14
to web2py googlegroups
Beleza, Legal


--

Diogo Munaro

unread,
Jun 24, 2014, 8:12:31 PM6/24/14
to web2py-us...@googlegroups.com

default = request.now vai dar problema por causa da definição da tabela. Use um lambda ao invés disso.

Luís Felipe Almeida

unread,
Jun 25, 2014, 7:46:26 AM6/25/14
to web2py-us...@googlegroups.com
Fala Diogo como assim um lambda ?
abraços


Em terça-feira, 24 de junho de 2014 21h12min31s UTC-3, Diogo escreveu:

default = request.now vai dar problema por causa da definição da tabela. Use um lambda ao invés disso.

Em 24/06/2014 14:02, "Ari Sobel" <arieh...@gmail.com> escreveu:
Beleza, Legal


Em 24 de junho de 2014 13:39, Luís Felipe Almeida <lfa.lui...@gmail.com> escreveu:
ah desculpe utilizei o  que yamandu disse
coloquei desta forma :
    Field('usuario',db.auth_user,default=me,writable=False,readable=False),
    Field('data','datetime',default=request.now,writable=False,readable=False))


abraços

--
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-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 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-brazil+unsub...@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-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 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-brazil+unsub...@googlegroups.com.

Carlos Costa

unread,
Jun 25, 2014, 7:55:42 AM6/25/14
to web2py-us...@googlegroups.com
Problema?


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.



--

Diogo Munaro

unread,
Jun 25, 2014, 8:06:39 AM6/25/14
to web2py-us...@googlegroups.com

Carlos Costa

unread,
Jun 25, 2014, 12:46:29 PM6/25/14
to web2py-us...@googlegroups.com
Entendi.

Mas essa questão é mais genérica então.
Só pra ficar claro aqui na thread. O problema é quando você não executa seus models na requisição.
Se você vai chamar um método de uma cron, a não ser que use um wget para executar a URL, realmente não faz sentido usar request, pois não há request.

Usar lambda sempre é uma questão interessante demais.
Mas acho que não existe esse aconselhamento no book.

Vinicius Assef

unread,
Jun 25, 2014, 1:43:12 PM6/25/14
to web2py-us...@googlegroups.com
2014-06-25 13:46 GMT-03:00 Carlos Costa <yamand...@gmail.com>:

> Só pra ficar claro aqui na thread. O problema é quando você não executa seus
> models na requisição.

É impossível deixar de executar os models do Web2py numa requisição http.

Entretanto é possível configurar como eles serão executados através de
alguns recursos, como models condicionais ou usando o
response.models_ro_run. Veja mais na seção Workflow do manual [1]

Os models só não são executados quando o Web2py roda em modo shell sem
o parâmetro -M. Nesse caso, nada que estiver no diretório models da
sua aplicação será executado. Por consequência os objetos Table não
são criados e também não existe um objeto db e, por consequência dados
não serão atualizados no BD, certo? Portanto, esse cenário não é o
assunto dessa thread.

O problema, Carlos, é que a atualização de dados não acontece no mesmo
instante da criação do objeto Request. A diferença pode ser de
milissegundos, mas é outro instante. Quando você precisa garantir
registros exatos de data/hora de atualização, não deve se basear em
request.now.

O objeto Request é criado quando o Web2py entra em ação, recebendo a
requisição http. O objeto Table é criado quando o db.define_table() é
criado. Se, no db.define_table() o campo de data ou data+hora estiver
com o lambda, ele será executado quando esse campo for necessário
realmente, ou seja, normalmente quando o registro for incluído ou
atualizado.

Essa é a questão: o momento em que o conteúdo é associado a o campo da tabela.


> Se você vai chamar um método de uma cron, a não ser que use um wget para
> executar a URL, realmente não faz sentido usar request, pois não há request.

Não há o http request, mas o objeto Request do Web2py existe. E o
request.now está lá.

>
> Usar lambda sempre é uma questão interessante demais.
> Mas acho que não existe esse aconselhamento no book.

Não existe e, ao meu ver, não precisa existir. Esse comportamento do
lambda não tem nada de especial. Isso é Python e não Web2py. E, para
usar Web2py, Python é pré-requisito, certo?


[1] http://web2py.com/books/default/chapter/29/04/the-core#Workflow
Reply all
Reply to author
Forward
0 new messages