OpenERP 6.0.3, 6.0.4, & 6.1 Technical Tutorial: Memperlakukan Field Binary Sebagai File

Field binary dalam OpenERP mampu menyimpan data yg bertipe binary. Namun untuk memperlakukan isi dari field tersebut seperti layaknya sebuah file diperlukan penanganan khusus. Sebagai contoh sebuah object yang bernama contoh mempunyai 1 field berjenis binary yang bernama field_binary1.

class contoh(osv.osv):
    _name = 'contoh'
    _description = 'contoh'
    _columns = {
               'field_binary1' : fields.binary('Field Binary 1'),
               }
contoh()

Untuk melakukan method readline misalnya, tidak bisa dilakukan dengan code seperti ini :

res_contoh = obj_contoh.browse(cr, uid, [1])[0]
res_contoh.field_binary1.readline()

Code diatas akan menimbulkan eksepsi. Setelah penulis melakukan percobaan, res_contoh.field_binary1 dideteksi sebagai tipe str, bukan file. Nah untuk memperlakukan field binary sebagai file yang harus dilakukan adalah sebagai berikut :

  1. import tools
  2. import base64
  3. from tempfile import TemporaryFile
  4. Buatlah sebuah variabel TemporaryFile dengan parameter +w
  5. Kemudian tulislah isi dari field binary ke variabel tsb. Gunakan base64.decodestring ketika menulis

Contoh code dapat dilihat dibawah :

import tools #Langkah 1
import base64 #Langkah 2
from tempfile import TemporaryFil #Langkah 3

obj_contoh = self.pool.get('contoh')
res_contoh = obj_contoh.browse(cr, uid, [1])[0]

fileobj = TemporaryFile('w+') #Langkah 4
fileobj.write(base64.decodestring(res_contoh.field_binary1)) #Langkah 5

Nah sekarang fileobj bisa diperlakukan layaknya file.

3 thoughts on “OpenERP 6.0.3, 6.0.4, & 6.1 Technical Tutorial: Memperlakukan Field Binary Sebagai File

  1. bos kalo nyimpen file binnary langsung ke folder gimana caranya yah, kaya di module document, kan dia bisa simpan di external storage, tapi kalo ngikutin module itu saya terlalu bingung,
    saya maunya simpel aja, upload langsung ke folder yg udah di tentukan trus bisa di download. kalo defaultnya kan di simpan di database.
    terimakasih

  2. bos, numpang tanya nih, kalau saya mau simpan binary file langsuk ke external storage gimana caranya yah.
    di module document sebnarnya ada, tapi saya bingung bacanya terlalu panjang step nya.
    yang pasti kan yg harus tersimpan di database adalah, filename, filepath,file size. tapi yg jadi masalah ketika mau di download dari openerp ketika save as saya tidak tau dia menjalakan method apa.

    terimakasih

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s