Tagged: field
OpenERP 5.0.16, 6.0.3, 6.0.4 & 6.1 Technical Tutorial : Memperbaiki Relationship many2one
Ketika membuat sebuah field many2one di OpenERP, terkadang developer salah menuliskan ke object mana many2one tersebut direlasikan. Jika field tersebut sudah terbuat, developer tidak bisa serta-merta mengkoreksi file .py untuk membetulkan relasi tersebut.
CONTOH
class object_contoh(osv.osv):
_columns = {
'name' : fields.char(string='Nama', size=100),
'partner_id' : fields.many2one(obj='account.account', string='Partner'),
}
Relasi many2one pada baris ke-4 harusnya ke object res.partner
LANGKAH KOREKSI
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 :
- import tools
- import base64
- from tempfile import TemporaryFile
- Buatlah sebuah variabel TemporaryFile dengan parameter +w
- Kemudian tulislah isi dari field binary ke variabel tsb. Gunakan base64.decodestring ketika menulis
Contoh code dapat dilihat dibawah :
OpenERP GTK-Client 5.0.16 Custom Widget : max_float (float dengan decimal separator pada form)
Berdasarkan pengalaman implementasi, klien sering meminta agar widget untuk float diberikan thousand separator. Pada tree hal tersebut tidak menjadi masalah. Namun pada form, widget standar OpenERP yang menangani bilangan float tidak mampu menangani hal tsb dikarenakan widget tsb dibuat dari spinbutton.
Oleh karena itu penulis membuat sebuah widget yang dapat memberikan thousand separator pada bilangan float. Thousand separator dan decimal separator disesuaikan dengan pengaturan locale pada server.
OpenERP 5.0.16, 6.0.3, 6.0.4 & 6.1 Technical Tutorial : Penamaan Relationship Many2many
Field many2many dalam deklarasinya membutuhkan parameter rel yang berupa string (Nama tabel relationship. baca OpenERP technical momento -red).
many2many(obj, rel, field1, field2, ...)
Parameter rel tersebut nantinya akan menjadi nama tabel relationship yang dibuat di postgres. Pembuatan nama tabel tersebut tidak melewati proses lower() atau upper() sehingga nama tabel akan sama persis dengan apa yang tertulis pada parameter rel.
Namun dalam pemanggilannya (melalui method browse atau read), OpenERP melakukan method lower() terhadap nama relationship.
Oleh karena itu, isilah parameter rel dengan lower-case. Karena jika tidak maka akan terjadi exception.
OpenERP 5.0.16, 6.0.3, 6.0.4, & 6.1 Technical Tutorial : Method fetchall
Pada beberapa kesempatan, method search dan browse kurang bisa memenuhi kebutuhan untuk melakukan pencarian dan pengambilan data . Ketika hal itu terjadi biasanya digunakan teknik untuk menggunakan method execute yang diikuti oleh method fetchall milik class cursor (modul psycopg)