- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这些模块:
base_module
, module_1
base_module_extend
,module_2
。
这些模块有这样的依赖关系:
module_1
依赖于 base_module
。 base_module_extend
依赖于 base_module
。module_2
依赖于 base_module_extend
。如果 module_1
和 module_2
没有同时安装,那么一切正常,但如果安装了它们,那么依赖项会按照这些模块的安装顺序发生变化.
例如,如果我安装 module_2
,然后安装 module_1
,当我开始使用 module_2
时,您调用 super
在那个模块代码中,它首先找到在 base_module
而不是 base_module_extend
中定义的类,然后有些东西坏了,因为它没有找到一些定义的属性/参数在 base_module_extend
中。
如果我以相反的顺序安装:首先安装 module_1
和 module_2
,然后当我使用 module_2
时,它工作正常,因为它从 super
调用正确的类。
有没有办法让这些模块调用正确的父类,如果它们都被安装而不关心它们的安装顺序?
或者这是限制,您对此无能为力?..
更新
如果您以错误的顺序安装(第一种情况)会导致什么损坏的示例:
这是base_module
中定义的方法:
def export_data(self, export_time=fields.Datetime.now()):
"""
This method can be overridden to implement custom data exportation
"""
self.ensure_one()
res = []
return res
这是在 module_1
中更改的方法:
def export_data(self, export_time=fields.Datetime.now()):
res = super(SFTPImportExport, self).export_data(export_time)
if self.process == 'custom_qty_available':
res = self._export_qty_available(export_time)
elif self.process == 'custom_sale':
res = self._export_sale(export_time)
return res
这是在 base_module_extend
中更改的方法:
def export_data(
self, export_time=fields.Datetime.now(), external_data=False):
"""
Overrides export_data to be able to provide external_data that
is already generated and can be directly returned to be used in export
@param export_time: time of export
@param external_data: used to bypass specific export
method and directly use data provided
"""
res = super(SFTPImportExport, self).export_data(export_time)
return res
这是在 module_2
中更改的相同方法:
def export_data(self, export_time=fields.Datetime.now(), external_data=False):
"""
Adds support for custom_invoice process
"""
res = super(SFTPImportExport, self).export_data(export_time=export_time, external_data=external_data)
if self.process == 'custom_invoice':
res = external_data
return res
更新2
当执行最后一个方法版本(在 module_2
中定义的那个)时,我得到这个错误:
"/opt/odoo/projects/project/sftp_import_export_extend/models/sftp_import_export.py", line 47, in export_sftp
export_time=now, external_data=external_data)
ValueError: "export_data() got an unexpected keyword argument 'external_data'" while evaluating
u'invoice_validate()'
所以看起来它得到了错误的父类,没有这样的关键字参数的父类
最佳答案
super() 倾向于在 Python 中选择错误的(意外的)父级。作为替代方案,您可以使用从所需父类(super class)直接调用 Python 函数,而不是使用 super(),这是更可靠的方法。
我不知道您的 Odoo 模块的目录结构和源文件名,所以我将尝试大致猜测该结构并向您说明应该做什么。请根据您的情况进行调整(具有正确的模块名称、源文件名称等)。
如果所需的 python 类,例如命名为 SFTPImportExport
,其中包含所需的 export_data
方法,则在 base_module_extend
内的以下源文件中定义Odoo 模块(相对路径):base_module_extend/models/somefile.py
而不是使用 super()
,您可以直接调用它,如下所示:
导入所需的父类(super class):
from openerp.base_module_extend.models.somefile import SFTPImportExport as ParentSFTPImportExport
然后直接调用它的方法:
ParentSFTPImportExport.export_data(self, export_time=export_time, external_data=external_data)
在这种情况下,将调用您想要的确切函数,因为您直接引用它。我建议做同样的事情,即在两个模块中直接调用所需的函数,以确保它们永远不会混合目标函数。
关于python - Odoo/ python : modules dependencies gone wrong?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37461841/
我最近从 mysql_ 切换到 PDO,这真的很痛苦。一切看起来都那么复杂。 过去我开发了一个系统,用户可以导入包含记录的 csv。然后通过 while 循环将这些行导入数据库。它在 mysql_qu
android 布局使用 layout_weight。我的目标是所有组件的 1/3,但有时页脚实际上设置为消失,然后可见。从 gone 设置为 visible 时,权重计算如何工作?我没有看到具有 1
我想要一个小的“标题”,当我单击它时,其余内容会使用向上滑动动画显示。 我已经尝试了一些动画,但我唯一想做的就是在其父级中为内容设置动画。我想要的是,当我单击标题时,整个标题和内容(具有可见性 GON
我使用 Firebase 和 RadioButton 获得 2 种类型的数据,我对显示的数据进行排序。一切似乎都正常,但是当隐藏其中一种数据类型时仍然有一个空白空间。告诉我如何正确隐藏/显示数据。 T
我的 Jersey API 如下: @DELETE @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON
在 VBA Excel 中,如果我在关闭并再次打开文件后使用 UserInterFaceOnly:=True 选项保护工作表,则 UserInterFaceOnly 模式不会激活,只有密码保护。 代码
如果设备设置为英国英语,我不想显示布局。最好的方法是什么?每次获取设备语言? 最佳答案 往这边走,GB代表大不列颠(英国) String locale = context.getResources()
我的布局中有来自设计支持库的 FAB: //....
当我尝试在 Eclipse 中使用图形布局界面(而不是 xml)进行布局时,我遇到了这个问题: 假设我的主要布局只是屏幕底部的一个简单按钮,单击该按钮时,会打开一个覆盖大部分屏幕的文本框。 注意:我这
在我的应用程序中,我有 RelativeLayout 和任何小部件,进入布局,我想通过 xml 动画将其向上移动。 RelativeLayout 可见性为 GONE 并且必须再次将可见性设置为 GON
我的 XMl 中有这段代码。由于某种原因, View 仍然可见。我还有其他 block 可以使其在特定时间点可见,但我已经将它们注释掉了。这是保留此 View 的最后一段代码,出于某种原因我仍然可以看
我有一个包含一个 TextView 和两个图像的相对布局(宽度固定宽度,高度 = 48dip)。当我为一张图片设置 visibility view.gone 时,它不会释放空间 最佳答案
所以我有一个应用程序,当用户点击 button 时,将为带按钮的 layout 执行 animation(例如 滑动菜单),然后如果他点击另一个按钮,它必须使第一个布局不可见或消失,然后是新布局。 但
我想问一下,如何为 Admob 实现 AdListner。我希望广告在点击后消失。我试过了,但没有用。 final AdView ad1 = (AdView) findViewById(R.id.ad
我想将一个 View 设置为 GONE,然后让其他 View 占用剩余空间。 现在,如果我将它设置为 GONE,它会在布局中原来的位置留下一个空间,该 View 是一个具有固定高度的 viewpage
pypi.python.org has been migrated to pypi.org之后,我在尝试像往常一样使用命令将包上传到 PyPI 时遇到错误: python2.7 setup.py sd
我有一个自定义搜索面板,它是主布局的一部分。大多数时候面板是隐藏的。我想在面板上添加出现/消失的动画。这是简化的布局摘录: > > 尝
我遇到了一个问题,即可见性状态为 GONE 的 View (不希望地)占用了屏幕空间。这个问题总是发生在 API 级别 <= 7 的设备上,但最近才发生在 8+ 设备上(在我使用 AsyncTasks
所以我的应用程序中有一个 GLSurfaceView,由 GLSurfaceView.Renderer 渲染并使用 JPCt 作为库。 表面处于不可见的 RelativeLayout 中(可见性:消失
我有一个巨大的 XML 布局,其中有许多 Relative/Linear 布局,我现在正在做的是使用 setVisibility (View. GONE) 并在需要时更改其可见性。 我的问题是:这种方
我是一名优秀的程序员,十分优秀!