关于fields.function显示网络图片的问题
-
我的目标是希望通过fields.function来获取外部网站图片显示到OE上,在开发过程中有以下问题:
1. 我已经使用urllib2获取到了网络的图片opener.open('http://www.sajolab.com/sajolab.jpg'),然后使用read()将图片转换为Binary类型,但是在添加Module时却报 in ustr raise UnicodeError('unable de to convert %r' % (orig,))错误,相信应该是转码问题,请问各位大神,我在使用fields.function转码应该如何处理才可以正确显示??
附上Python代码:
from osv import osv, fields
import urllib2
import netsvc
class product_product(osv.osv):
_name = 'product.product'
_inherit = 'product.product'
_description = 'Product'
def _get_image(self, cursor, user, ids, name, arg, context=None):
image = {}
logger = netsvc.Logger()
opener = urllib2.build_opener()
for id in ids:
logger.notifyChannel('addon:' + self._name, netsvc.LOG_INFO, 'id:%s' % (id))
image[id] = opener.open('http://www.sajolab.com/sajolab.jpg').read()
logger.notifyChannel('addon:' + self._name, netsvc.LOG_INFO, 'image:%s' % (image))
return image
_columns = { 'image' : fields.function(_get_image, method=True, string='Product Image', type='binary', store=True), }
product_product() -
问题已解决
使用basse64转换编码. ;D ;D
image[id] = base64.encodestring(opener.open('http://www.sajolab.com/sajolab.jpg').read())