Google Groups

Re: [web2py-users-brazil:3096] Modificar campos ao fazer upload de uma imagem? Web2Py é tão difícil assim?


rochacbruno Apr 20, 2012 5:25 PM
Posted in group: web2py-users-brazil
Eu faria isso com um computed field.

def REDIMENSIONATOR(image, size):
    # codigo que pega a imagem original e redimensiona
    return imagem_menor

db.marcas.t_logotipo_50.compute = lambda row: REDIMENSIONATOR(row.upl_logotipo, 50)


2012/4/20 Alex BENFICA <alexb...@gmail.com>
Pessoal,

Passei o dia tentando fazer isto abaixo funcionar.
Alguém poderia me ajudar, por favor?

Consegui criar as miniaturas das imagens usando a lib de Images do Google, mas não consigo modificar os campos da tabela com o blob destas miniaturas.
Quero fazer isso no instante em que a imagem é subida para o servidor, mas estou em dúvida...

Posso incluir variáveis no "request" para que elas sejam inseridas na base de dados ao chamar o form.accepts() ?
É normal inserir numa tabela, ao fazer um post, e logo depois de inserir, na mesma função, fazer buscas para fazer modificações no registro inserido?

É o que estou fazendo e funciona local no SDK do GAE, mas NÃO funciona no GAE remoto! Como?



# insere uma marca a partir do formulario
def criar():       
    form=SQLFORM(db.marcas)
    if request.vars:                

        #redimensiona a imagem e gera os logotipos nos tamanhos informados...
        imagens = validaImagemOriginal(request.vars.upl_logotipo,[50,100,200],request.vars.nome)                        

        # zera a imagem original do usuario para evitar que tente gravar e de erro pelo tamanho > 1MB
        request.vars.pop('upl_logotipo')
    
        # se de algum erro ao gerar ou redimensionar as imagens retorna... (tratar)
        if not 'original' in imagens: 
            return dict(form=form)
        else:
            pass
            #return dict(form=form)
        
        if form.accepts(request.vars):        
            
            # busca a marca que acabou de ser inserida
            marca = db(db.marcas.nome == request.post_vars['nome']).select().first()
            
            # atualiza a url_key (usado para achar a imagem pelo nome)

            marca.update_record(url_key=textoParaURL(request.post_vars['nome']))            
            
            # atualiza a imagem e os thumbs
            marca.update_record(img_logotipo=imagens['original'])
            marca.update_record(t_logotipo_50=imagens['t50'])
            marca.update_record(t_logotipo_100=imagens['t100'])
            marca.update_record(t_logotipo_200=imagens['t200'])
         
    return dict(form=form)   





Este é o modelo da tabela de marcas....



db.define_table('marcas', 
    Field('nome',
            unique=True, 
            label="Nome",
            required = True,            
            ),

    
    # serve para a entrada da imagem do logotipo, apenas.   
    Field('upl_logotipo', 'upload', 
          uploadfield='img_logotipo', 
          label="Logotipo",
          length = 1000*1024,
          required = True,
          ),
                
    # logotipo, efetivamente armazenado
    Field('img_logotipo', 'blob'),    
    
    # copias do logotipo, de vários tamanhos
    Field('t_logotipo_50', 'blob'),                
    Field('t_logotipo_100', 'blob'),                
    Field('t_logotipo_200', 'blob'),
                
    # armazena o valor que vem na URL para identificar a marca    
    Field('url_key', 
          readable=False, 
          writable=False,
          ),
    
)







--
--

Atenciosamente,
Alex BENFICA

--
"O que não se mede não se gerencia."




--
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+unsubscribe@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en



--