odoo 要授予root权限么,数据库,一些文件夹权限都是odoo
ghotiv
-
整理及测试:Odoo11安装,Odoo11生产环境部署:在Ubuntu Server16.04下Odoo11安装并配置为服务 -
怎么让框架中的“创建”和“导入”这种自带的按钮不显示,@yeko tree里面属性没有 重写wiew form渲染函数
-
ondelete='restrict'数据库表的触发器 或者重写删除方法吧
-
view中怎么用domain筛选user的当前公司context里面default_*这样赋值
-
隐藏 创建,复制,删除 按钮在tree里面将属性设置成false即可
<tree delete="false" create="false" copy="false">
创建,复制,删除 隐藏,生效
export="false" 导出 没隐藏 不生效 -
Odoo 读写exceljeff 大虾转载啊,记得提出bug
-
Odoo 读写excelodoo经常要导入和导出数据,excel是比较常见的文档,读写excel,上代码
<br /># -*- coding: utf-8 -*- <br /># author:ghoti<br />import xlrd<br />import xlwt<br />import base64<br />import cStringIO<br />class Read_Excel:<br /> '''<br /> 根据索引获取Excel表格中的数据 参数:file_name:Excel文件路径;file_contents:二进制文件/字符串<br /> col_n:表头列名所在行数 ;del_n:表的后几行不读入; by_index:表的索引(默认第一个sheet)<br /> 返回表格中某一行作为key的字典列表,key为unicode类型<br /> 校验:不能有重复的项,不能有空项<br /> '''<br /> def __init__(self,file_contents=None,file_name=None,col_n=1,del_n=0,by_index=0,):<br /> self.file_name = file_name<br /> self.file_contents = file_contents<br /> self.col_n = col_n<br /> self.del_n = del_n<br /> self.by_index = by_index<br /> <br /> def __call__(self):<br /> try:<br /> data = xlrd.open_workbook(filename=self.file_name,file_contents=self.file_contents)<br /> except Exception,e:<br /> print str(e)<br /> return None<br /> col_n = self.col_n<br /> del_n = self.del_n<br /> by_index = self.by_index<br /> table = data.sheets()[by_index]<br /> nrows = table.nrows #行数<br /> #ncols = table.ncols #列数<br /> colnames = table.row_values(col_n-1) #某一行数据做字典的key<br /> #validate<br /> if colnames:<br /> repeat_colnames = set([str(i) for i in colnames if colnames.count(i)!=1])<br /> for i in colnames:<br /> if not i:<br /> raise NameError('Null colname exist')<br /> if repeat_colnames:<br /> alert_info = ';'.join(repeat_colnames)<br /> raise NameError('repeat colname exist : %s'%alert_info)<br /> rsp =[]<br /> for rownum in range(col_n,nrows-del_n):<br /> row = table.row_values(rownum)<br /> if row:<br /> app = {}<br /> for i in range(len(colnames)):<br /> app[colnames[i].strip()] = row[i]<br /> rsp.append(app)<br /> return rsp<br /><br />class Export_Excel: <br /> '''返回导出excel二进制数据,sheet_name为sheet名,headings为第一行,data为第二行后,2个列表的内容一一对应'''<br /> def __init__(self,headings,data,sheet_name='export_xls',file_name=None):<br /> self.sheet_name = sheet_name<br /> self.headings = headings<br /> self.data = data<br /> self.file_name = file_name<br /> <br /> def __call__(self):<br /> book = xlwt.Workbook()<br /> sheet = book.add_sheet(self.sheet_name)<br /> rowx = 0<br /> for colx, value in enumerate(self.headings):<br /> sheet.write(rowx, colx, value)<br /> sheet.set_panes_frozen(True) # frozen headings instead of split panes<br /> sheet.set_horz_split_pos(rowx+1) # in general, freeze after last heading row<br /> sheet.set_remove_splits(True) # if user does unfreeze, don't leave a split there<br /> for row in self.data:<br /> rowx += 1<br /> for colx, value in enumerate(row):<br /> sheet.write(rowx, colx, value.encode('utf-8').decode('utf-8'))<br /> buf = cStringIO.StringIO()<br /> if self.file_name:<br /> book.save(self.file_name)<br /> book.save(buf)<br /> out = base64.encodestring(buf.getvalue())<br /> buf.close()<br /> return out<br /><br />''' <br />##test_for_use<br /><br />r = Read_Excel(file_contents=base64.decodestring(form['import']),col_n=3,del_n=1)<br />trades = r()[:]<br />print trades[0][u'收货人姓名']<br />print len(tables)<br />for row in tables:<br /> print row<br /> for i in row:<br /> print i,row[i]<br /> <br />headings = [u'订单号',u'下单日期']<br />values = [['12345','2012-12-12'],['12346','2012-12-12']]<br />out = Export_Excel(headings,values)()<br />_result_fields['data']['default'] = out<br />'''<br />'''<br />from read_excel import Read_Excel<br />print Read_Excel(file_name='a.xls')()<br />[{'c_1':'a_1','c_2':'b_1'},{'c_1':'a_2','c_2':'b_2'}]<br />'''<br />
-
Python多线程(threading)恩恩,这个写的通用性强些,不仅在oe,其它地方也可以用
-
Python多线程(threading)<br /># -*- coding: utf-8 -*- <br />#author:ghoti<br />'''自定义多线程运行函数,可定义同时运行个数'''<br />import threading,time<br />from time import sleep,ctime<br />class My_Thead:<br /> '''<br /> 多线程运行函数,将all_list切片处理,num为进程数,all_list小于num,单线程运行,<br /> sleep_time为单个进程(一个all_list切片)运行后停留时间(方便调试),<br /> myfunc为处理每个切片的函数,对all_list切片,在处理<br /> '''<br /> def __init__ (self, all_list, num, sleep_time=0, myfunc=None):<br /> self.all_list = all_list<br /> self.len_list = len(all_list)<br /> self.num = num #进程数,实际进程为可能为num+1<br /> if len(all_list)<num:<br /> self.num = 1<br /> self.m = self.len_list/self.num<br /> if not self.m:<br /> self.m = 1<br /> self.loops=range(0 , self.len_list, self.m)<br /> self.sleep_time = sleep_time<br /> self.myfunc = myfunc<br /> def loop (self,nloop,n,m):<br /> self.myfunc(n,m)<br /> sleep(self.sleep_time)<br /> def __call__ (self):<br /> if not self.all_list:<br /> return False<br /> threads=[]<br /> nloops=range(len(self.loops))<br /> for i in nloops:<br /> t=threading.Thread(target=self.loop,args=(i, self.loops[i], self.m))<br /> threads.append(t)<br /> for i in nloops:<br /> threads[i].start()<br /> for i in nloops:<br /> threads[i].join()<br /><br />'''<br />##how to use<br />#from my_thread import My_Thead<br />all_list = range(103)<br />def myfunc(n,m):<br /> part_list = all_list[n:n+m]<br /> for i in part_list:<br /> print i,<br />My_Thead(range(103),5,myfunc=myfunc)()<br />'''<br /><br />''' <br />## use in oe<br /> def myfunc(n,m):<br /> part_list = rsps[n:n+m]<br /> for rsp in part_list:<br /> self.action_do_product(cr, uid, ids, rsp, context=None):<br /> <br /> from openerp.addons.basefunc.my_thread import My_Thead<br /> My_Thead(rsps,10,myfunc=myfunc)()<br />'''<br />
-
Odoo 组合价格实现方法临时完成生产 要自己写方法的
-
Odoo 组合价格实现方法想在odoo中实现 组合价格 的功能,比如3A(优惠3)+ 2B(优惠2)= C 一起优惠 13
方案一:
请教了下gavin,gavin建议利用生产中产品bom的功能,订单中 临时完成生产,组合出C产品
这样要安装生产模块
方案二:
如果不安装生产模块,自己bom仿照设计模型sale_bom
sale.bom 里面存组合产品C的信息,有产品对象product_id,bom_line_ids
sale.bom.line 里面存组成产品的i信息A和B,有product_id,bom_id (外键到sale_bom)
这样订单里面每次要读sale_bom信息,然后生成C
[attachimg=3]
方案三:
请教了严总,实现累似 multi image 的功能,就用 multi_image 一个字段,保存产品组合优惠的信息,类似json的格式存取组合信息
这样虽然数据库简单了,但是要用到qweb和js,界面就复杂了
方案四:
发现product images这个模块,是product 一对多 image 的实现,image 保存tile,descrption字段,类似,image保存产品A和B的信息,
那么怎么保存产品A和产品B的信息,字符字段保存A的id或者sku? 那么界面上又该怎么设计选择产品,然后保存id或者sku
[attachimg=4] -
Seeed Studio 【深圳】 招聘 pythoner岗位要求:
1年以上python开发经验
能用openerp二次开发
会用Django等python框架建站(电商)
工作时间,待遇:
灵活的休假方式(双休)
和大家一起分享每半年度50%的利润
地址:深圳南山西丽同沙路32号矽递科技(环中线:留仙洞站B出口步行约10分钟路程)
敬请电邮至: [email protected]
公司简介:
深圳矽递科技有限公司 ( Seeed Studio) 为小型创新者提供快速开发工具, 帮助硬件产品原型投入生产和市场推广。
自2008年7月在深圳成立以来一直保持着高速增长, 形成了包括市场、研发、工程品质、生产、供应链、运营等完整架构的高效团队。 截止2012年, 为全世界的五万多创客和发明家提供了超过700种各类开放源代码的硬件模块, 将各种如NFC, Zigbee, BLE等新兴技术以极低的应用门槛提供给创新者。
公司创始人、总经理潘昊先生是《福布斯》中文版/2013年3月刊推出的“中国30位30岁以下创业者”之一,并荣登《福布斯》封面 :http://www.forbeschina.com/review/201303/0024076.shtml
在Seeed你都可以:
寻找无尽的机会和挑战
充分被授权
拥有简单真诚的团队关系
和大家一起分享每半年度50%的利润
灵活的休假方式(双休)
对公司任何方面提出建设性的意见