Pular para o conteúdo
Odoo Menu
  • Entrar
  • Experimente grátis
  • Aplicativos
    Finanças
    • Financeiro
    • Faturamento
    • Despesas
    • Planilhas (BI)
    • Documentos
    • Assinar Documentos
    Vendas
    • CRM
    • Vendas
    • PDV Loja
    • PDV Restaurantes
    • Assinaturas
    • Locação
    Websites
    • Criador de Sites
    • e-Commerce
    • Blog
    • Fórum
    • Chat ao Vivo
    • e-Learning
    Cadeia de mantimentos
    • Inventário
    • Fabricação
    • PLM - Ciclo de Vida do Produto
    • Compras
    • Manutenção
    • Qualidade
    Recursos Humanos
    • Funcionários
    • Recrutamento
    • Folgas
    • Avaliações
    • Indicações
    • Frota
    Marketing
    • Redes Sociais
    • Marketing por E-mail
    • Marketing por SMS
    • Eventos
    • Automação de Marketing
    • Pesquisas
    Serviços
    • Projeto
    • Planilhas de Horas
    • Serviço de Campo
    • Central de Ajuda
    • Planejamento
    • Compromissos
    Produtividade
    • Mensagens
    • Aprovações
    • Internet das Coisas
    • VoIP
    • Conhecimento
    • WhatsApp
    Aplicativos de terceiros Odoo Studio Plataforma Odoo Cloud
  • Setores
    Varejo
    • Loja de livros
    • Loja de roupas
    • Loja de móveis
    • Mercearia
    • Loja de ferramentas
    • Loja de brinquedos
    Comida e hospitalidade
    • Bar e Pub
    • Restaurante
    • Fast Food
    • Hospedagem
    • Distribuidor de bebidas
    • Hotel
    Imóveis
    • Imobiliária
    • Escritório de arquitetura
    • Construção
    • Administração de propriedades
    • Jardinagem
    • Associação de proprietários de imóveis
    Consultoria
    • Escritório de Contabilidade
    • Parceiro Odoo
    • Agência de marketing
    • Escritório de advocacia
    • Aquisição de talentos
    • Auditoria e Certificação
    Fabricação
    • Têxtil
    • Metal
    • Móveis
    • Alimentação
    • Cervejaria
    • Presentes corporativos
    Saúde e Boa forma
    • Clube esportivo
    • Loja de óculos
    • Academia
    • Profissionais de bem-estar
    • Farmácia
    • Salão de cabeleireiro
    Comércio
    • Handyman
    • Hardware e Suporte de TI
    • Sistemas de energia solar
    • Sapataria
    • Serviços de limpeza
    • Serviços de climatização
    Outros
    • Organização sem fins lucrativos
    • Agência Ambiental
    • Aluguel de outdoors
    • Fotografia
    • Aluguel de bicicletas
    • Revendedor de software
    Navegar por todos os setores
  • Comunidade
    Aprenda
    • Tutoriais
    • Documentação
    • Certificações
    • Treinamento
    • Blog
    • Podcast
    Empodere a Educação
    • Programa de educação
    • Scale Up! Jogo de Negócios
    • Visite a Odoo
    Obtenha o Software
    • Baixar
    • Comparar edições
    • Releases
    Colaborar
    • Github
    • Fórum
    • Eventos
    • Traduções
    • Torne-se um parceiro
    • Serviços para parceiros
    • Cadastre seu escritório contábil
    Obtenha os serviços
    • Encontre um parceiro
    • Encontre um Contador
    • Conheça um consultor
    • Serviços de Implementação
    • Referências de Clientes
    • Suporte
    • Upgrades
    Github YouTube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Faça uma demonstração
  • Preços
  • Ajuda

Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:

  • CRM
  • e-Commerce
  • Financeiro
  • Inventário
  • PoS
  • Projeto
  • MRP
All apps
É necessário estar registrado para interagir com a comunidade.
Todas as publicações Pessoas Emblemas
Marcadores (Ver tudo)
odoo accounting v14 pos v15
Sobre este fórum
É necessário estar registrado para interagir com a comunidade.
Todas as publicações Pessoas Emblemas
Marcadores (Ver tudo)
odoo accounting v14 pos v15
Sobre este fórum
Ajuda

Change filename of binary field

Inscrever

Seja notificado quando houver atividade nesta publicação

Esta pergunta foi sinalizada
v7model
12 Respostas
25837 Visualizações
Avatar
Vitaliy

I have in my model function filed returning binary. How can I change returning filname?

Function:

def _get_vcard(self, cr, uid, ids, prop, unknow_none, context=None):
            res = []
            for id in ids:
                res.append((id, base64.b64encode("test".encode('utf-8'))))
            return dict(res)

Model:

 _columns = {
        'vcard': fields.function(_get_vcard, type='binary', string='vCard')
    }
3
Avatar
Cancelar
Avatar
Alexander
Melhor resposta

Hi, try to use something like this:

py file:

_columns = {
    'vcard_stream': fields.binary('File Stream', readonly=True),
    'vcard_name': fields.char('File name', 40, readonly=True),
}

_defaults = {
    'vcard_name': 'your_filname.vcard',
}

xml file:

<field name="vcard_stream" string="File Stream" filename="vcard_name"/>
3
Avatar
Cancelar
Prakash

Hi Alexandar, I followed the same steps in my custom module but download file name always shows Model name used in the xml File For example Download file name shows "model_name" <field name="model">model.name</field> Not downloaded with defined _defaults file name. Any idea? How to fix this issue. Thanks

Alexander

Hi. Can you show your source code? Perhaps you missed something.

Prakash

Updated the source code

Abhishek H Menon

I have also done the same thing above, but I did not get the result. The name is shown as a pdf extension but, it is downloaded/opened as binary file which has no extension. How we can embedd the extension along with the file generation?

Avatar
Sarender Reddy
Melhor resposta

Use like below in xml file.

as per Odoo11 


<field widget="binary" name="datas" filename="datas_fname"/>

                  <field name="datas_fname" readonly = "1" invisible="1"  force_save="1"/>


Get the uploaded file in py file.


curr_obj = self  

        if not curr_obj.datas:

            raise UserError(_('Please Choose The File!'))

        file_name = curr_obj.datas_fname

        print "curr_obj.datas_fname here",curr_obj.datas_fname

        print "file namr here",file_name

        fname = str(file_name.split('.')[1])

        if fname != 'xls':

            raise UserError(_('Please Choose The File With .xls extension and proper format!'))

        try:

            val=base64.decodestring(curr_obj.datas)

            fp = StringIO.StringIO()

            fp.write(val)     

            wb = xlrd.open_workbook(file_contents=fp.getvalue())

            wb.sheet_names()

            sheet_name=wb.sheet_names()

            sh = wb.sheet_by_index(0)

            sh = wb.sheet_by_name(sheet_name[0])

            n_rows = sh.nrows

2
Avatar
Cancelar
Avatar
Aurelien
Melhor resposta

Hi Vitaly!

The answer posted by Prakash should work fine, i would just change this part 

<group>

<field name="edi_filename"/>

<field name="edi_data" filename="edi_filename"/>

</group>

to  

<group>

<field name="edi_filename" invisible='1'/>

<field name="edi_data" filename="edi_filename"/>

</group>


Because filename already shows up following Download in your view and as this is "readonly" you do really need to display it two times.

But with the code you're showing above i am not sure if the previous answers reached your expectation.

I advise you to go to have a look on the ir.attachment model in the Base module of odoo. You will find all the answer you want to find there.

However, you will indeed need a field filename in order to have a name (plus an extension?) to your downloaded file. 

1
Avatar
Cancelar
Avatar
Prakash
Melhor resposta

In Wizard using the below code

Python File

_columns = {
        'edi_data': fields.binary('File Stream', readonly=True),
        'edi_filename': fields.char('File Name', size=32, readonly=True),
        }



_defaults = {
   'edi_filename': 'Invoice.txt',
 }

XML File

<field name="arch" type="xml">
            <form string="Form">
                <group>
                    <field name="edi_filename"/>
                    <field name="edi_data" filename="edi_filename"/>
             </group>
0
Avatar
Cancelar
Alexander

As far as I know "name" is something like function word. Try to rename fields. Also _defaults = { 'name': 'Invoice.txt', } should be in py file.

Alexander

I don't know. My example works. Try to use it without any changes first. Maybe _stream and _name are "magic" words.

Prakash

Can you please post your web\controllers\main.py File saveas_ajax Method code i think in my case issues in that file. I am using latest version 7 but still issues. Thanks

Abhishek H Menon

In my case, it is a wizard which has a readonly binary field for storing file, and I am getting the file, but when I suppose to download it, it is getting downloaded as a binary file which has no specific extension. I need the file in pdf. Can anyone please suggest a way to do that?

Está gostando da discussão? Não fique apenas lendo, participe!

Crie uma conta hoje mesmo para aproveitar os recursos exclusivos e interagir com nossa incrível comunidade!

Inscreva-se
Publicações relacionadas Respostas Visualizações Atividade
Duplicate all the project model
v7 model
Avatar
Avatar
Avatar
2
mar. 15
7996
How to execute function immediately after adding new record?
v7 model
Avatar
Avatar
1
mar. 15
9664
Get notebook current tab string and save it to my model
v7 tabs model
Avatar
Avatar
1
mar. 15
4845
How to add a "Delete" button on the popup form? Resolvido
v7
Avatar
Avatar
1
out. 25
5885
Minimum Lot Charge For Sales Order Line Items
v7
Avatar
0
dez. 24
10680
Comunidade
  • Tutoriais
  • Documentação
  • Fórum
Open Source
  • Baixar
  • Github
  • Runbot
  • Traduções
Serviços
  • Odoo.sh Hosting
  • Suporte
  • Upgrade
  • Desenvolvimentos personalizados
  • Educação
  • Encontre um Contador
  • Encontre um parceiro
  • Torne-se um parceiro
Sobre nós
  • Nossa empresa
  • Ativos da marca
  • Contato
  • Empregos
  • Eventos
  • Podcast
  • Blog
  • Clientes
  • Legal • Privacidade
  • Segurança
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk slovenščina Español (América Latina) Español ภาษาไทย Türkçe українська Tiếng Việt

Odoo é um conjunto de aplicativos de negócios em código aberto que cobre todas as necessidades de sua empresa: CRM, comércio eletrônico, contabilidade, estoque, ponto de venda, gerenciamento de projetos, etc.

A proposta de valor exclusiva Odoo é ser, ao mesmo tempo, muito fácil de usar e totalmente integrado.

Site feito com

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now