2016-03-25 16 views
1

Odoo veritabanımda bir ürün listesini almak için bir komut dosyası üzerinde çalışıyorum. Komut, görüntüyü içe aktarma dışında Odoo API'sı ile gerçekten iyi çalışıyor. Bugüne kadar ne yaptın, base64 onu kodlayan ardından piton bir URL'den bir görüntü almak ve şudur:Resim Oioo API ile Python'da içe aktarın 3.4

response = requests.get(image_url) 
    img_obj = Image.open(BytesIO(response.content)) 
    buffer = BytesIO() 
    img_obj.save(buffer, format="JPEG") 
    img = base64.encodestring(buffer.getvalue()).strip() 
    try: 
     base64.b64decode(img) 
    except TypeError: 
     padding = len(img) % 4 
     if padding == 1: 
      img = "Invalid base64 string: {}".format(img) 
     elif padding == 2: 
      img += b'==' 
     elif padding == 3: 
      img += b'=' 

Bu kod harika çalışıyor. (Sen benim önceki kodda görebileceğiniz gibi),

xmlrpc.client.Fault: Fault 1: 
Traceback (most recent call last): 
File "/opt/odoo/openerp/service/wsgi_server.py", line 56, in xmlrpc_return 
result = openerp.http.dispatch_rpc(service, method, params) 
File "/opt/odoo/openerp/http.py", line 114, in dispatch_rpc 
result = dispatch(method, params) 
File "/opt/odoo/openerp/service/model.py", line 37, in dispatch 
res = fn(db, uid, *params) 
File "/opt/odoo/openerp/service/model.py", line 173, in execute_kw 
return execute(db, uid, obj, method, *args, **kw or {}) 
File "/opt/odoo/openerp/service/model.py", line 118, in wrapper 
return f(dbname, *args, **kwargs) 
File "/opt/odoo/openerp/service/model.py", line 181, in execute 
res = execute_cr(cr, uid, obj, method, *args, **kw) 
File "/opt/odoo/openerp/service/model.py", line 170, in execute_cr 
return getattr(object, method)(cr, uid, *args, **kw) 
File "/opt/odoo/openerp/api.py", line 238, in wrapper 
return old_api(self, *args, **kwargs) 
File "/opt/odoo/addons/stock/product.py", line 518, in write 
return super(product_template, self).write(cr, uid, ids, vals, context=context) 
File "/opt/odoo/openerp/api.py", line 238, in wrapper 
return old_api(self, *args, **kwargs) 
File "/opt/odoo/openerp/api.py", line 369, in old_api 
result = method(recs, *args, **kwargs) 
File "/opt/odoo/addons/account/models/product.py", line 45, in write 
res = super(ProductTemplate, self).write(vals) 
File "/opt/odoo/openerp/api.py", line 236, in wrapper 
return new_api(self, *args, **kwargs) 
File "/opt/odoo/openerp/api.py", line 562, in new_api 
result = method(self._model, cr, uid, self.ids, *args, **old_kwargs) 
File "/opt/odoo/addons/product/product.py", line 705, in write 
res = super(product_template, self).write(cr, uid, ids, vals, context=context) 
File "/opt/odoo/openerp/api.py", line 238, in wrapper 
return old_api(self, *args, **kwargs) 
File "/opt/odoo/openerp/api.py", line 369, in old_api 
result = method(recs, *args, **kwargs) 
File "/opt/odoo/addons/mail/models/mail_thread.py", line 274, in write 
result = super(MailThread, self).write(values) 
File "/opt/odoo/openerp/api.py", line 236, in wrapper 
return new_api(self, *args, **kwargs) 
File "/opt/odoo/openerp/models.py", line 3820, in write 
self._write(old_vals) 
File "/opt/odoo/openerp/api.py", line 236, in wrapper 
return new_api(self, *args, **kwargs) 
File "/opt/odoo/openerp/api.py", line 562, in new_api 
result = method(self._model, cr, uid, self.ids, *args, **old_kwargs) 
File "/opt/odoo/openerp/models.py", line 3971, in _write 
result += self._columns[field].set(cr, self, id, field, vals[field], user, context=rel_context) or [] 
File "/opt/odoo/openerp/osv/fields.py", line 646, in set 
'datas': value, 
File "/opt/odoo/openerp/api.py", line 236, in wrapper 
return new_api(self, *args, **kwargs) 
File "/opt/odoo/openerp/api.py", line 478, in new_api 
result = method(self._model, cr, uid, *args, **old_kwargs) 
File "/opt/odoo/openerp/addons/base/ir/ir_attachment.py", line 459, in create 
values['mimetype'] = self._compute_mimetype(values) 
File "/opt/odoo/openerp/addons/base/ir/ir_attachment.py", line 252, in _compute_mimetype 
mimetype = guess_mimetype(values['datas'].decode('base64')) 
File "/usr/lib/python2.7/xmlrpclib.py", line 503, in decode 
self.data = base64.decodestring(data) 
File "/usr/lib/python2.7/base64.py", line 321, in decodestring 
return binascii.a2b_base64(s) 
Error: Incorrect padding 

ben base64 dolguyu düzeltmeye çalıştık, ama bu: Ben Odoo API ile almak için piton kod çalıştırmasına Fakat, burada ne var çalışmıyor. Bu sorunu nasıl çözebilirim bilen var mı? Bu benim Python 3,4 içinde Odoo Python 2,7 içinde olan benim senaryodan gelebilir mi?

Sağol,

+0

Lütfen izinizi doğru biçimlendirilmiş halde alın! –

cevap

0

Tamam, sorununuzu çözdüm. Merak ettiğim gibi, problem Python 3.4 ve Python 2.7 arasındaki farktan geliyor. Sadece bazı kütüphane ithalatını değiştirerek python 2.7 kodumu çalıştırıyorum ve şimdi, işim var :-)

Bu birilerine yardımcı olabilir!

İlgili konular