OpenERP在product中增加外部网络链接图片
最近的一个项目要求在Product_Template中增加类似与HTML中<img src=”" />的形式的图片
product_img_extra.py
from osv import osv, fields
import urllib2
import base64
class product_template_img(osv.osv):
_name = 'product.template'
_inherit = 'product.template'
_description = 'Product Extra Image'
def _get_image(self, cursor, user, ids, name, arg, context=None):
image = {}
opener = urllib2.build_opener()
res = self.read(cursor, user, ids, ['image_link'])
image_link = res[0]['image_link']
if image_link:
pic = base64.encodestring(opener.open(image_link).read())
for id in ids:
image[id] = pic
return image
_columns = {
'image_link' : fields.char('Image Link', size=180),
'image' : fields.function(_get_image, method=True, string='Product Image', type='binary', store=False),
}
product_template_img()
product_img_extra_view.xml
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="product_img_view" model="ir.ui.view">
<field name="name">product.template.product.form</field>
<field name="model">product.template</field>
<field name="type">form</field>
<field name="inherit_id" ref="product.product_template_form_view" />
<field name="arch" type="xml">
<field name="name" position="before">
<field name="image" widget="image" nolabel="" img_width="" img_height="" colspan=""/>
<field name="image_link" colspan=""/>
</field>
</field>
</record>
</data>
</openerp>
由于OpenERP的基本开发概念的其中一点是读取数据库动态生成界面.这时我就想到了使用fields.function来在界面生成时做一些特别的处理.
product_img_extra.py 中的_columns将对productTemplate增加image_link和image两个column.其中image_link用于保存图片链接的column,当界面生成时通过链接读取图片.image为显示图片的column,但由于store已设置为False所以不会直接保存到数据库中,而只会在界面生成时运行.
因为需要读取外部链接,所以需要用到Python自带的urllib2模块,值得注意的是opener.open(image_link).read()获取回来的虽然已经是二进制数据,但仍需要使用base64.encodestring对其进行转码才可以被所识别.
OpenERP在product中增加外部网络链接图片的更多相关文章
- 在Vue文件中引入外部URL链接
前言:最近做一个vueNuxt的项,没有index.html 也没有main.js项目需要引入一些外部的包,没什么技术含量只是一种思路 在vue生命钩子函数中动态创建JavaScript标签追加到HT ...
- 在openerp撰写消息中增加图片
openerp的撰写消息中, 在文本输入框中, 具有设置文本字体,设置对齐方式 等多种功能, 就像像写这篇新浪blog一样, 可以输入富文本信息. 美中不足的是, 它不能插入图片. 我们如何才能让op ...
- 访问 Neutron 外部网络 - 每天5分钟玩转 OpenStack(143)
前面我们学习了位于不同 Neutron subnet 的 instance 可以通过 router 通信,今天开始讨论 instance 如何访问外部网络. 这里的外部网络是指的租户网络以外的网络.租 ...
- 在 Students 的 Index 页面增加列标题链接(排序),分页,过滤和分组功能
3-1 在 Students 的 Index 页面增加列标题链接 为 Index 页面增加排序的功能,我们需要修改 Student 控制器的 Index 方法,还需要为 Student 视图增加代码 ...
- Excel中如何查找并列出所有链接(外部数据链接)?
在 Excel 中,有时会需要创建外部链接来引用其他工作簿的单元格内容,但是如果想要找出所有链接并且还要将这些外部数据链接列在一个工作簿当中是有点难度的.下面我会介绍一些快捷方法,不仅能够快速帮你找出 ...
- VCenter中嵌套openstack VM不能ping通外部网络问题解决的方法
问题描写叙述: 近期搭建了vCenter环境,并使用vCenter创建的VM搭建了一套openstack环境.在验证openstack的外网功能时.发现报文死活ping不通外网,抓包发现报文在vcen ...
- javascrit2.0完全参考手册(第二版) 第1章第1节 在XHTML文档中增加javascript
通常,向文档中增加script脚本使用<script>元素,在HTML中增加脚本的方式有4中: (1)放到<script></script>块中: (2)<s ...
- Windows Azure 虚拟网络中虚拟机的网络隔离选项
最近我们发布了一份<Windows网络安全白皮书>(单击此处下载),文中深入说明了客户可以如何利用该平台的本地功能,为他们的信息资产提供最好的保护. 由首席顾问Walter Myer ...
- 理解Docker(6):若干企业生产环境中的容器网络方案
本系列文章将介绍 Docker的相关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...
随机推荐
- FastBoot BootLoader Recovery 模式解释
理论上,所有的Android设备都存在着Fastboot/Bootloader模式,不过,由于Android操作系统的开源特性,各厂商的对 自家的相关Android设备都有着各自不同的Fastboot ...
- VS2010下配置Winpcap 开发环境
http://blog.csdn.net/taotaoyouarebaby/article/details/27326829
- 《Android学习指南》文件夹
转自:http://android.yaohuiji.com/about Android学习指南的内容分类: 分类 描写叙述 0.学习Android必备的Java基础知识 没有Java基础的朋友,请不 ...
- 用最简单的例子理解装饰器模式(Decorator Pattern)
假设有一个公司要做产品套餐,即把不同的产品组合在一起,不同的组合对应不同的价格.最终呈现出来的效果是:把产品组合的所有元素呈现出来,并显示该组合的价格. 每个产品都有名称和价格,首先设计一个关于产品的 ...
- 如何构建Win32汇编的编程环境(ONEPROBLEM个人推荐)
如何构建Win32汇编的编程环境(ONEPROBLEM个人推荐)1.首先要下载我提供的软件包(里面已经包含所有所需软件); 2.把它解压到D盘根目录下(如果需要安装在其它的地方,请注意设好路径); ...
- .NET:CLR via C#The Managed Heap and Garbage Collection
Allocating Resources from the Managed Heap The CLR requires that all objects be allocated from the m ...
- jdbc连接遭遇RAC设备
今天进行junit的Case回归测试,功能测试人员告知数据库ip进行了变更,于是 将jdbc连接的url进行了相应的变更如下 jdbcConnection = java.sql.DriverManag ...
- 结合MapReduce和数据集Combining datasets with MapReduce
While in the SQL-world is very easy combining two or more datasets - we just need to use the JOIN ke ...
- Spark源码分析
名词解释 RDD全称为ResilientDistributedDataset,弹性分布式数据集.就是分布在集群节点上的数据集,这些集合可以用来进行各种操作.最重要的一点是,某个操作计算后的数据集可以缓 ...
- Linux获取当前时间
代码(可以把clock_gettime换成time(NULL)) void getNowTime() { timespec time; clock_gettime(CLOCK_REALTIME, &a ...