4.1 KiB
4.1 KiB
Perbaikan API Odoo - Ringkasan
Masalah Yang Ditemukan
- Port salah: API menggunakan port 8069, padahal Odoo berjalan di port 8070
- Missing attachment files: Beberapa file attachment di database tidak ada di filestore
Error di Log
FileNotFoundError: [Errno 2] No such file or directory:
'C:\\Users\\sapta\\AppData\\Local\\OpenERP S.A\\Odoo\\filestore\\manukanjabung\\c5/c54d3d5e2b1320083bf5378b7c195b0985fa04c1'
Error ini terjadi karena record ir.attachment di database mereferensikan file yang tidak ada.
Perbaikan Yang Dilakukan
1. Fix Port Configuration
- Mengubah semua script API dari port
8069→8070 - Lokasi:
ODOO_URL = "http://localhost:8070"
2. Fix Missing Attachments
- Menjalankan
fix_missing_attachments.py - Menghapus 1 attachment rusak (ID 27: res.company.scss)
- Hasil: Semua attachment sekarang bersih ✅
Script Yang Tersedia
1. test_api_connection.py
Fungsi: Test koneksi API dan diagnosa masalah Cara pakai:
python test_api_connection.py
Output: Test 6 aspek koneksi API (connection, auth, model access, attachment, read, write)
2. fix_missing_attachments.py
Fungsi: Mencari dan memperbaiki attachment yang filenya hilang Cara pakai:
python fix_missing_attachments.py
Options:
1= DELETE - Hapus record attachment rusak (RECOMMENDED)2= RESET - Reset ke database storage3= CANCEL
3. test_update_api.py
Fungsi: Contoh lengkap CRUD operations via API Cara pakai:
python test_update_api.py
Demonstrasi:
- ✅ CREATE - Buat partner baru
- ✅ READ - Baca data partner
- ✅ UPDATE - Update data partner
- ✅ DELETE - Hapus partner
- ✅ SEARCH - Cari dengan filter
Hasil Test API
✅ SEMUA TEST API BERHASIL!
KESIMPULAN:
- API connection: ✅ OK
- CREATE operation: ✅ OK
- READ operation: ✅ OK
- UPDATE operation: ✅ OK
- DELETE operation: ✅ OK
- SEARCH/FILTER: ✅ OK
Konfigurasi API
ODOO_URL = "http://localhost:8070" # PORT 8070!
ODOO_DB = "manukanjabung"
ODOO_USERNAME = "admin"
ODOO_PASSWORD = "admin"
Contoh Penggunaan API
Connect to Odoo
import xmlrpc.client
url = "http://localhost:8070"
db = "manukanjabung"
username = "admin"
password = "admin"
# Authenticate
common = xmlrpc.client.ServerProxy(f'{url}/xmlrpc/2/common')
uid = common.authenticate(db, username, password, {})
# Get models proxy
models = xmlrpc.client.ServerProxy(f'{url}/xmlrpc/2/object')
Create Record
partner_id = models.execute_kw(
db, uid, password,
'res.partner', 'create',
[{
'name': 'Partner Baru',
'email': 'test@example.com',
'phone': '0812-3456-7890'
}]
)
Read Record
partner = models.execute_kw(
db, uid, password,
'res.partner', 'read',
[[partner_id]],
{'fields': ['name', 'email', 'phone']}
)[0]
Update Record
result = models.execute_kw(
db, uid, password,
'res.partner', 'write',
[[partner_id], {
'phone': '0812-9999-8888'
}]
)
Delete Record
result = models.execute_kw(
db, uid, password,
'res.partner', 'unlink',
[[partner_id]]
)
Search with Filter
partner_ids = models.execute_kw(
db, uid, password,
'res.partner', 'search',
[[
['customer_rank', '>', 0],
['city', 'ilike', 'jakarta']
]],
{'limit': 10}
)
Troubleshooting
Error: "No connection could be made"
- ✅ FIX: Pastikan Odoo berjalan di port 8070
- Check dengan:
netstat -ano | findstr "8070"
Error: "FileNotFoundError" untuk attachment
- ✅ FIX: Jalankan
python fix_missing_attachments.py
Error: "Authentication failed"
- Check username/password
- Pastikan user memiliki access rights yang cukup
Error: "Access Denied" saat update
- Check access rights dan record rules untuk model tersebut
- Gunakan user dengan permission yang cukup
Status Akhir
✅ API update via XML-RPC sudah berfungsi dengan baik!
Semua operasi CRUD (Create, Read, Update, Delete) sudah berhasil ditest dan berjalan normal.
Dibuat: 15 Februari 2026
Status: ✅ RESOLVED