Advanced Features of the API 和 vertical-ngo-150608131143-lva1-app6891&& Time tracking and production data acquisition with NFC tags for Odoo
snowkite
-
Odoo Experience 2015 PPT -part 5【高级API 和 ngo】 -
Odoo Experience 2015 PPT -part 4[挣值管理和高级条码管理]Odoo experience 2015 earned value management 和 Advanced barcodes management
-
Odoo Experience 2015 PPT -part 3第三部分
-
Odoo Experience 2015 PPT -part 2PPT 第二部分
-
Odoo Experience 2015 PPT -part 1不谢, 我只是odoo搬运工!
-
Openerp 7.0与8.0 import 方式的变化[quote author=mrshelly link=topic=16463.msg28315#msg28315 date=1403847037]
黄色在哪里?????????????????????
[/quote]
:)不好意思, 我自己在我本地写的时候用来黄色做标注,放上来忘记加颜色了, 用黄色发现很难看, 现在改成深蓝色的了 -
Openerp web 服务器相关问题总结系统开发完成并已经上线了, 但是一直有一个困惑存在我的脑子里, openerp 到底使用什么作为web server的?
以前我一直认为:Werkzeug 是openerp的web server 但是后来我一查找, 发现官方对Werkzeug的定义是:Werkzeug is a WSGI utility library for Python. 并没有说Werkzeug 可以充当一个web server 。网上有很多在生产环境中配置openerp web server 的, 比如: upstream + nginx , wsgi_mod + apache , 在openerp的源代码中也提到了 wsgi_mod +apache 及Gunicorn的配置, 这些才是真正在生产环境中可以提供web 服务的web server 那么openerp 到底使用什么提供web server, 难道它自己造了一个轮子, 带着这些问题, 查找了一些资料, 网上没有专门解释这些东西的, 经过我的总结,得出了以下结论:
开发人员确实在开发业务功能, 确实也有一个东西在提供类似于web server 的功能, 这个东西就是Werkzeug 。以下是我在Werkzeug 官网上看到的一段话:(openerp 就是一个WSGI application, openerp 从6.1就开始兼容WSGI协议)
There are many ways to serve a WSGI application. While you’re developing it, you usually don’t want to have a full-blown webserver like Apache up and running, but instead a simple standalone one. Because of that Werkzeug comes with a builtin development server.
这段很明白的解释了我的困惑, 同django框架类似, 为了方便开发人员django框架也内置一个开发服务器, 但是具体到生产环境是不建议使用这种简单的 web server 的所以就有了很多的配置方式, 官方建议应该是oe+Gunicorn
《上海并擎软件科技有限公司》——项目开发经理 -
Openerp 7.0与8.0 import 方式的变化[color=navy][/color]上周在做oe 7.0到oe 8.0 切换的时候发现我们系统的很多的module 无法load , import的时候出错, 后来发现oe 8.0自己的addons 也都做了修改在import自己的addons的时候都加了openerp.addons 命名空间, 这是为什么, oe 8.0为什么要这么做,我找出了背后真正的原因:
Openerp 7.0 的时候系统支持两种import 方式一种是import <module> 一种是 import openerp .addons. <module> 这种方式, 我们自己的addons 中使用import 大部分是使用的第一种, 现在将我们的addons 迁移到8.0的时候发现很多Could't load module 的情况, 这是什么原因?
1、 首先需要说明openerp 为什么会由两种import 方式, openerp 没有使用默认的python import 机制, 而是在python的import 机制上做了hook , 做了一个自己的importer, 也就是上面说的两种情况。
2、7.0的两种import方式为什么到8.0的时候只剩下第二种import openerp.addons.<module>这种方式, 却不支持第一种方式了, 这是因为为了防止import 冲突的情况, 比如:python的标准库中一个module 叫resource, 而openerp 中也有这样一个自己的module 如果使用第一种import 方式, 这个时候会出现module 混淆的问题。所以从8.0开始 openerp的 addons 必需添加openrp.addons 命名空间用来加以区分。
3、在oe 7.0 和odoo 8.0中这个差异的具体代码是在哪里实现的呢?
Openerp 7.0 中 server->openerp->modules->module.py 的 AddonsImportHook class 中有这样一个方法:
def find_module(self, module_name, package_path):
module_parts = module_name.split('.')
if len(module_parts) == 3 and module_name.startswith('openerp.addons.'):
return self # We act as a loader too.
[color=navy] # TODO list of loadable modules can be cached instead of always
# calling get_module_path().
if len(module_parts) == 1 and <br /> get_module_path(module_parts[0],
display_warning=False):
try:
# Check if the bare module name clashes with another module.
f, path, descr = imp.find_module(module_parts[0])
_logger.warning("""
Ambiguous import: the OpenERP module%s
is shadowed by another
module (available at %s).
To import it, useimport openerp.addons.<module>.
.""" % (module_name, path))
return
except ImportError, e:
# Usingimport <module_name>
instead of
#import openerp.addons.<module_name>
is ugly but not harmful
# and kept for backward compatibility.
return self # We act as a loader too.[/color]
而在8.0中这个方法是这样的:
def find_module(self, module_name, package_path):
module_parts = module_name.split('.')
if len(module_parts) == 3 and module_name.startswith('openerp.addons.'):
return self # We act as a loader too.
很明显 8.0中比7.0中少了深蓝色标注的这一部分代码, 那深蓝色的这一部分代码是做什么用的呢, 它就是兼容import <module>这种 方式的实现。 而在8.0中不再支持这种import
《上海并擎软件科技有限公司》—— 项目开发经理 -
Openerp tree view 中的分页问题<field name="limit">20</field> 不work 呢, 我用7.0 web版