Skip to Content
Odoo Menu
  • Prihlásiť sa
  • Vyskúšajte zadarmo
  • Aplikácie
    Financie
    • Účtovníctvo
    • Fakturácia
    • Výdavky
    • Tabuľka (BI)
    • Dokumenty
    • Podpis
    Predaj
    • CRM
    • Predaj
    • POS Shop
    • POS Restaurant
    • Manažment odberu
    • Požičovňa
    Webstránky
    • Tvorca webstránok
    • eShop
    • Blog
    • Fórum
    • Živý chat
    • eLearning
    Supply Chain
    • Sklad
    • Výroba
    • Správa životného cyklu produktu
    • Nákup
    • Údržba
    • Manažment kvality
    Ľudské zdroje
    • Zamestnanci
    • Nábor zamestnancov
    • Voľné dni
    • Hodnotenia
    • Odporúčania
    • Vozový park
    Marketing
    • Marketing sociálnych sietí
    • Email marketing
    • SMS marketing
    • Eventy
    • Marketingová automatizácia
    • Prieskumy
    Služby
    • Projektové riadenie
    • Pracovné výkazy
    • Práca v teréne
    • Helpdesk
    • Plánovanie
    • Schôdzky
    Produktivita
    • Tímová komunikácia
    • Schvalovania
    • IoT
    • VoIP
    • Znalosti
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Priemyselné odvetvia
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Reštaurácia
    • Fast Food
    • Guest House
    • Beverage distributor
    • Hotel
    Reality
    • Real Estate Agency
    • Architecture Firm
    • Konštrukcia
    • Estate Managament
    • Gardening
    • Property Owner Association
    Poradenstvo
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Výroba
    • Textile
    • Metal
    • Furnitures
    • Jedlo
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware and Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Iní
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Komunita
    Vzdelávanie
    • Tutoriály
    • Dokumentácia
    • Certifikácie
    • Školenie
    • Blog
    • Podcast
    Empower Education
    • Vzdelávací program
    • Scale Up! Business Game
    • Visit Odoo
    Softvér
    • Stiahnuť
    • Porovnanie Community a Enterprise vierzie
    • Releases
    Spolupráca
    • Github
    • Fórum
    • Eventy
    • Preklady
    • Staň sa partnerom
    • Services for Partners
    • Register your Accounting Firm
    Služby
    • Nájdite partnera
    • Nájdite účtovníka
    • Meet an advisor
    • Implementation Services
    • Zákaznícke referencie
    • Podpora
    • Upgrades
    ​Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Získajte demo
  • Cenník
  • Pomoc

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

  • CRM
  • e-Commerce
  • Účtovníctvo
  • Sklady
  • PoS
  • Projektové riadenie
  • MRP
All apps
You need to be registered to interact with the community.
All Posts People Badges
Tagy (View all)
odoo accounting v14 pos v15
About this forum
You need to be registered to interact with the community.
All Posts People Badges
Tagy (View all)
odoo accounting v14 pos v15
About this forum
Pomoc

Change filename of binary field

Odoberať

Get notified when there's activity on this post

This question has been flagged
v7model
12 Replies
25843 Zobrazenia
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
Zrušiť
Avatar
Alexander
Best Answer

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
Zrušiť
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
Best Answer

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
Zrušiť
Avatar
Aurelien
Best Answer

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
Zrušiť
Avatar
Prakash
Best Answer

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
Zrušiť
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?

Enjoying the discussion? Don't just read, join in!

Create an account today to enjoy exclusive features and engage with our awesome community!

Registrácia
Related Posts Replies Zobrazenia Aktivita
Duplicate all the project model
v7 model
Avatar
Avatar
Avatar
2
mar 15
7997
How to execute function immediately after adding new record?
v7 model
Avatar
Avatar
1
mar 15
9672
Get notebook current tab string and save it to my model
v7 tabs model
Avatar
Avatar
1
mar 15
4848
How to add a "Delete" button on the popup form? Solved
v7
Avatar
Avatar
1
okt 25
5887
Minimum Lot Charge For Sales Order Line Items
v7
Avatar
0
dec 24
10681
Komunita
  • Tutoriály
  • Dokumentácia
  • Fórum
Open Source
  • Stiahnuť
  • Github
  • Runbot
  • Preklady
Služby
  • Odoo.sh hosting
  • Podpora
  • Vyššia verzia
  • Custom Developments
  • Vzdelávanie
  • Nájdite účtovníka
  • Nájdite partnera
  • Staň sa partnerom
O nás
  • Naša spoločnosť
  • Majetok značky
  • Kontaktujte nás
  • Pracovné ponuky
  • Eventy
  • Podcast
  • Blog
  • Zákazníci
  • Právne dokumenty • Súkromie
  • Bezpečnosť
الْعَرَبيّة 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 je sada podnikových aplikácií s otvoreným zdrojovým kódom, ktoré pokrývajú všetky potreby vašej spoločnosti: CRM, e-shop, účtovníctvo, skladové hospodárstvo, miesto predaja, projektový manažment atď.

Odoo prináša vysokú pridanú hodnotu v jednoduchom použití a súčasne plne integrovanými biznis aplikáciami.

Website made with

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