Web上下文隧道

odoo8-addon-web-context-tunnel的Python项目详细描述


openerp on_的问题会改变

openerp使用位置传递更改ajax事件参数 论据。这很烦人,因为模块通常需要传递额外的参数 在“基于更改”签名中不存在的。只要两个模块 尝试更改此签名以添加其额外参数,它们不兼容 除非有额外的胶水模块 考虑到所有额外的参数。但这会导致 爆炸使模块再次兼容。

解决方案

这个模块提供了一个简单的解决方案,可以在大多数情况下使用。 事实上,如果base on_change是为了传递上下文而设计的,那么它是有效的 争论。否则就不行了,你应该走老路。但无论如何 如果on_更改没有传递上下文参数,而您 当然可以对添加到 论据。

因此,对于传递上下文的on_更改,该模块如何工作?

well openerp已经有了一个优雅的解决方案,可以让扩展模块更改 XML属性:使用 position=“attributes”然后重新定义属性。已经在使用 替换客户端将发送到的“context”属性的几个位置 服务器。

这里的想法是把你所需要的额外的论点包装在里面 上下文字典就像一个普通的python kwargs一样。这种情况 然后应自动通过on-change调用链进行传播, 无论模块顺序如何,无需修改 签名。

只是position=“attributes”和重新定义上下文的问题是 同样,如果两个独立的模块重新定义了上下文,它们是不兼容的 除非第三个模块同时考虑了这两个因素。

但是有了这个模块,扩展点现在可以使用position=“attributes”和 不再重新定义“context”属性,现在只需定义一个新的 “context_foo”属性如下: <;attribute name=“context_foo”>;{'my_extra_field':my_extra_field}<;/属性>;。

这个模块修改web客户端的方式是在发送ajax之前 在向服务器发出更改事件请求时,所有节点属性以 “context”被合并到一个单独的context措辞中,保留键和 所有扩展名的值。在极少数情况下,模块确实希望重写 上下文中的值,则它仍需要重写原始上下文 属性(或其他原始属性)。

当然,如果您应该改为通过api或webservice调用on_change 使用web客户端时,只需确保包装所需的额外 上下文词典中的参数。

测试

此模块附带了static/test/context_tunnel.js中的一个简单测试。 要运行它,打开页面/web/tests?mod=web上下文隧道 如本文所述https://doc.openerp.com/trunk/web/testing 在使用phantomjs进行测试时,python测试也应该选择它。

至于使用yaml的web上下文隧道测试模块,是的,这是可能的。 实际上,您需要手动模拟新的web客户端行为 确保在以后的on-u更改中添加所需的额外上下文键。 例如,在调用on_更改之前,可以使用 一个!类似于context.update的python语句({'my_extra_field':my_extra_field})。

您可以在这里看到使用web上下文隧道的模块转换示例 例如: https://github.com/openerpbrasil/l10n_br_core/commit/33065366726a83dbc69b9f0031c81d82362fbfae

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java什么会导致程序在它似乎拥有的监视器上被阻止?   java Android studio设置视图的背景色   java我可以保存一个文本文件而不给用户修改它的能力吗?   pdfbox PDFBOX2。0:java堆堆栈错误   java是维护和操作AllowList的有效方法   JAVAsql。SQLException:找不到适合jdbc的驱动程序:mysql://localhost:3306/asd性爱   如何使用java。lang.NullPointerException:void 安卓。支持v7。应用程序。ActionBar。setElevation(float)“”在空对象引用上'   java调试空指针异常   java正则表达式,以按令牌的特定匹配项拆分,同时忽略其他匹配项   java为JPanel设置边框上的笔划   并发@Schedule方法的java行为   如何在Java中使用泛型与语言运算符和泛型类扩展数   java Rhino Javascript如何为异常堆栈跟踪标记字符串源   运行可执行jar时发生java错误,无法找到或加载主类