All Projects → gilbert-yuan → odoo_config

gilbert-yuan / odoo_config

Licence: other
odoo 尝试性小模块

Programming Languages

javascript
184084 projects - #8 most used programming language
Vue
7211 projects
python
139335 projects - #7 most used programming language
CSS
56736 projects
c
50402 projects - #5 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to odoo config

Wechat mall
odoo 微信小程序商城后台
Stars: ✭ 176 (+633.33%)
Mutual labels:  odoo
technical-training-solutions
No description or website provided.
Stars: ✭ 69 (+187.5%)
Mutual labels:  odoo
access-addons
Odoo Addons for extended access control
Stars: ✭ 99 (+312.5%)
Mutual labels:  odoo
Ooor
Odoo Ruby JSON client. Emulates ActiveRecord enough (as much as Mongoid; Implements ActiveModel) to make Rails development with an Odoo datastore straightforward
Stars: ✭ 184 (+666.67%)
Mutual labels:  odoo
Oejia weshop
odoo 微信小程序商城模块 (WeChat Mini Program for Odoo)
Stars: ✭ 224 (+833.33%)
Mutual labels:  odoo
rest-framework
No description or website provided.
Stars: ✭ 218 (+808.33%)
Mutual labels:  odoo
Erppeek
A versatile tool for Odoo / OpenERP. *** Forked as Odooly ⟶
Stars: ✭ 160 (+566.67%)
Mutual labels:  odoo
Odoo-Book
🤓Odoo 小书,Odoo 入门教程 (龟速填坑中...已更新到第 7 章第 2 节,要是看不到更新可以强制刷新一下浏览器。小书源码地址请看 README。)
Stars: ✭ 92 (+283.33%)
Mutual labels:  odoo
odooly
Python library and CLI to interact with Odoo and OpenERP.
Stars: ✭ 53 (+120.83%)
Mutual labels:  odoo
server-brand
No description or website provided.
Stars: ✭ 42 (+75%)
Mutual labels:  odoo
Doodba
Base image for making the creation of customized Odoo environments a piece of cake
Stars: ✭ 210 (+775%)
Mutual labels:  odoo
Odoo Pycharm Templates
Templates for Odoo in PyCharm
Stars: ✭ 222 (+825%)
Mutual labels:  odoo
odoo app
Odoo App Community version
Stars: ✭ 34 (+41.67%)
Mutual labels:  odoo
App Odoo
apps for odoo 13, odoo 12, odoo 11, odoo 10, odoo 9
Stars: ✭ 177 (+637.5%)
Mutual labels:  odoo
runboat
A simple runbot lookalike on kubernetes. Main goal is replacing the OCA runbot.
Stars: ✭ 57 (+137.5%)
Mutual labels:  odoo
Addons Vauxoo
All our modules related to developments that solves generic issues on Odoo, or that solve internal problems on Odoo Core, if something is here, maybe it is solving an issue in your company, try it and report what you see.
Stars: ✭ 165 (+587.5%)
Mutual labels:  odoo
vux-loader
hack into vue-loader
Stars: ✭ 65 (+170.83%)
Mutual labels:  vux
ansible-odoo
Automatic deployment for Odoo on Linux
Stars: ✭ 19 (-20.83%)
Mutual labels:  odoo
ak-odoo-incubator
Misc Odoo modules maturing before going to a specific repo
Stars: ✭ 19 (-20.83%)
Mutual labels:  odoo
account-consolidation
Odoo Account Consolidation Addons
Stars: ✭ 20 (-16.67%)
Mutual labels:  odoo

996.icu

odoo_config

主要写了一些自己平时总结的,项目的经验


  1. 产品多图上传展示 (参考师兄 product_images)

1. 用VUE 实现前端逻辑
2. 支持鼠标拖拉, 把图片拖动到组件向关的位置即可
3. 图片顺序变更支持鼠标拖动图片改变图片顺序,会会写入数据库

  1. 自定义导入导出,继承所写模块就可以很方便的实现,导入导出的功能( import_export_wizard )

1. 包装了excel的读写功能,只需简单代码即可实现,正常的导入导出功能
2. 继承简单
3. 字段控制简单,只能导出自己规定的几个字段,导出人不能进行修改导出字段的数量(代码控制的,如果做成可配置的就更加方便了。)

  1. python 常用知识点 (ptyhon tools)

 1. python 播放mp3 类音频的方法  2. 读写文件常用的方法  


  1. 自己探索写的odoo的手机端的适应代码。(projectPath)

1. 初步探索用VUX 自动转换ODOO的页面,把odoo的页面根据电脑端的配置直接转换成手机端的
2. 优势。简单查看,快速,用来演示有些功能很方便,缺点。 缺少配置、没有可定制空间
3.  使用方法 cd /projectPath/ 
4.  npm install 
5.  修改 /projectPath/config/index.js ---> target: 'http://dingding.tunnel.800890.com' 把这个链接换成 自己本机或者远程的服务(记得添加dbfilter 哟 --不然找不到是那个库的)
6.  npm run dev

  1. extra_views_base 模块说明

1. 示范性添加一个视图模块, 就是给添加一种视图类型
2. 仿照标准的写法进行添加视图类型
3. 如果有想要添加视图类型了可以仿照这个模块来进行修改

  1. odoo8 odoo11 自带导出,时间字段存在时区问题

1.如题 在odoo8 和odoo11中都是存在的,时区问题的影响,在系统自带的 导出文件的时候就会出现
 # odoo 8 解决导出数据的时区问题
from openerp.fields import Datetime, Field
ISODATEFORMAT = '%Y-%m-%d'

Newdatetime = Datetime.convert_to_export
def convert_to_export(self, value, env):
    timezone = pytz.timezone(env.context.get('tz'))
    return_val = Newdatetime(self, value, env)
    if isinstance(return_val, datetime.datetime) and return_val:
        return self.to_string(return_val.replace(tzinfo=pytz.timezone('UTC')).astimezone(timezone))
    elif return_val:
        return self.to_string(self.from_string(return_val).replace(tzinfo=pytz.timezone('UTC')).astimezone(timezone))
    return return_val
Datetime.convert_to_export = convert_to_export

# odoo 11 解决导出数据的时区问题
import datetime, pytz
from odoo.fields import Datetime

Newdatetime = Datetime.convert_to_export


def convert_to_export(self, value, record):
  timezone = pytz.timezone(record._context.get('tz'))
  return_val = Newdatetime(self, value, record)
  if isinstance(return_val, datetime.datetime) and return_val:
      return self.to_string(return_val.replace(tzinfo=pytz.timezone('UTC')).astimezone(timezone))
  elif return_val:
       return self.to_string(self.from_string(return_val).replace(tzinfo=pytz.timezone('UTC')).astimezone(timezone))
 return return_val
Datetime.convert_to_export = convert_to_export

  1. python tools 模块加入pyh模块的收藏

1. 因为经常会用到, 计算的html 字段,进行展示一表格,之类的text 为了更加的 方便规范的使用所以决定使用这个库, 
2. 这个库已经停止支持,(用的人很少,试用了下感觉还行)
3. 
4. pyh 模块使用方法[ http://hanxiaomax.github.io/trans/pyh-chinese-doc/](python tools 模块加入pyh模块的收藏 #1)
5. 下面是使用片段, 感觉还是比手动拼接会高大上一点
from pyh import *
page = PyH('My wonderful PyH page')
page.addCSS('myStylesheet1.css', 'myStylesheet2.css')
page.addJS('myJavascript1.js', 'myJavascript2.js')
page << h1('My big title', cl='center')
page << div(cl='myCSSclass1 myCSSclass2', id='myDiv1') << p('I love PyH!', id='myP1')
mydiv2 = page << div(id='myDiv2')
mydiv2 << h2('A smaller title') + p('Followed by a paragraph.')
page << div(id='myDiv3')
page.myDiv3.attributes['cl'] = 'myCSSclass3'
page.myDiv3 << p('Another paragraph')
page.printOut()

  1. odoo Redis 使用 主要使用了redis的这三个方面 (session cache redis.lock )

1. 以为业务需要(也没啥紧急的业务,就是想研究下,说白了就是有点闲。。。)想要详细的去控制session的 存储
	1. 然后自己就去网上搜索,最终找了个模块就是下面的链接,嗯,看起了没问题,当进一步试用的时候才发现,这个库,不行,根本不能起到作用(偶尔还是可能的是因为odoo lazycr 引起的--猜测👎 ,但是这个也是odoo的一大特色--性能提升方面)
	2. [Smile-SA --redis session store](https://github.com/Smile-SA/odoo_addons/blob/11.0/smile_redis_session_store/redis_session_store.py)
	3.  无奈只能自己把相关的代码复制到源码库里面进行详细的测试,测试发现,是可以的,这个应该也和odoo的继承的机制有关,安装的模块,始终都是在整体的框架的代码加载完成后才进行加载模块
	4.  [详细代码](https://gitee.com/Gilbert_yuan_wen/openerp-china/blob/master/openerp/http.py )# 详细代码在链接里面 

2. odoo的性能一直是使用odoo的人的心头之痛(这里指的不是垃圾代码引起的无所谓的消耗引起的系统很慢)
	1. 在odoo中系统cache都是存储在内存中, 当访问系统的人增多的时候,cache的作用会越来越小,一些不必要的访问数据库,会越来越多,对odoo的性能来说是一大挑战,所以就想着把odoo的cache 存储到redis 中
	2. 说干,就干https://github.com/gilbert-yuan/odoo_config/issues/2 这是探索的一个过程,最终结果当然是成功了呀,自己在RDM(redis 可视化工具) 中可以详细的看到缓存的使用情况

3.  odoo 中redis.lock
	1. 先上代码再说用处
  redis_instance = redis.Redis(host=redis_params.get('redis_host', 'localhost'),
  	     port=int(redis_params.get('redis_port', '6379')),
  	     db=int(redis_params.get('redis_decorate_db', '2')),
  	     password=redis_params.get("redis_password", ''))

  def redis_lock(blocking=True, error_str="请稍后重试!", blocking_timeout=3, timeout=60):
  def decorator(func):
      def wrapper(self, *args, **kwargs):
  	purchase_need_refresh_lock = redis_instance.lock("%s_%s" % (self._table, func.func_name), timeout=timeout)
  	if purchase_need_refresh_lock.acquire(blocking=blocking, blocking_timeout=blocking_timeout):
  	    try:
  		func_return = func(self, *args, **kwargs)
  	    except Exception as error:
  		raise error
  	    finally:
  		purchase_need_refresh_lock.release()
  	else:
  	    raise osv.except_osv(u'错误!', error_str)
  	return func_return
      return wrapper
  return decorator
   3.  因为二开的功能存在多个人执行统一操作, 但是如果多人同时点击会存在数据上的重复的处理所以就 要加锁,当别人正在使用的时候其他人不能进行点击点击的效果进行延后
   4.  当然如果只是启动了一个服务的话,就用python 普通的线程锁是没有问题的,但是如果 开启了多个服务就需要多个服务共用一个锁。
   5.  至于如何无缝的开启多个服务就需要用到 用redis 进行cache 共用了

9.一些异步库的使用的小demo aiomysql, asyncio, asyncpg 在目录 python_tools/aio python_tools/aio_mysql python_tools/asyncpg


Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].