- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我已经安装了模块 project
, 它创建了 XML ID 为 task_visibility_rule
的规则.现在我想从我自己的模块中禁用这条规则。问题是该规则是在 <data noupdate="1">
中声明的标记,因此,任何更新该规则的 XML 记录都不会执行任何操作。
所以我正在尝试修改规则并将其设置为 noupdate="0"
, 之后才能使其处于非事件状态:
<!-- Find the corresponding "to be inherited record" with noupdate="1" -->
<function name="write" model="ir.model.data">
<function name="search" model="ir.model.data">
<value eval="[('module', '=', 'project'), ('name', '=', 'task_visibility_rule')]"/>
</function>
<!-- Set noupdate to False -->
<value eval="{'noupdate': False}"/>
</function>
<!-- Finish the job, disabling the existing rule -->
<record model="ir.rule" id="project.task_visibility_rule">
<field name="model_id" ref="project.model_project_task"/>
<field name="active" eval="False"/>
</record>
<!-- Optional, if you want to set noupdate to True again -->
<function name="write" model="ir.model.data">
<function name="search" model="ir.model.data">
<value eval="[('module', '=', 'project'), ('name', '=', 'task_visibility_rule')]"/>
</function>
<!--Set noupdate to True-->
<value eval="{'noupdate': True}"/>
</function>
我试过上面的代码但没有成功。我还尝试通过 XML 删除规则并使用属性 active
重新创建它设置为False:
<delete id="project.task_visibility_rule" model="ir.rule"/>
<record model="ir.rule" id="project.task_visibility_rule">
<field name="name">Project/Task: employees: follow required for follower-only projects</field>
<field name="model_id" ref="model_project_task"/>
<field name="domain_force">[
'|',
('project_id.privacy_visibility', '!=', 'followers'),
'|',
('project_id.message_partner_ids', 'in', [user.partner_id.id]),
'|',
('message_partner_ids', 'in', [user.partner_id.id]),
# to subscribe check access to the record, follower is not enough at creation
('user_id', '=', user.id)
]</field>
<field name="groups" eval="[(4,ref('base.group_user'))]"/>
<field name="active" eval="False"/>
</record>
但似乎该规则甚至没有被删除,因为它仍然具有相同的数据库 ID。
然后我尝试从 XML 调用我自己的 Python 函数并通过 Python 代码进行我想要的修改:
<function name="disable_project_task_visibility_rule" model="project.task"/>
并且在 project.task
我的型号:
@api.model
def disable_project_task_visibility_rule(self):
rule = self.env.ref('project.task_visibility_rule')
return rule.write(
{'active': False, },
)
但是没有成功。我想知道是否有人有比这更好的主意,或者可以告诉我为什么我在此处发布的解决方案均无效。
最佳答案
尝试这段代码并尝试以下操作:
<data noupdate="0">
<record model="ir.rule" id="project.task_visibility_rule">
<field name="name">Project/Task: employees: follow required for follower-only projects</field>
<field name="model_id" ref="model_project_task"/>
<field name="domain_force">[
'|',
('project_id.privacy_visibility', '!=', 'followers'),
'|',
('project_id.message_partner_ids', 'in', [user.partner_id.id]),
'|',
('message_partner_ids', 'in', [user.partner_id.id]),
# to subscribe check access to the record, follower is not enough at creation
('user_id', '=', user.id)
]</field>
<field name="groups" eval="[(4,ref('base.group_user'))]"/>
<field name="active" eval="False"/>
</record>
</data>
当你想更新你的模块时,用 -i
替换 -u
像这样:
./odoo-bin --addons-path=addons,../custom/addons/ -u your_module
./odoo-bin --addons-path=addons,../custom/addons/ -i your_module
它对我来说很好用,希望对你有帮助。
关于python - 如何从 Odoo 10 中的自定义模块修改 noupdate ="1"XML 记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49917952/
以下记录规则在产品模块中定义 Product multi-company ['|',('company_id','='
请解释下列语句的意思并说明它们之间的区别。我浏览了论坛帖子,但没有从中得到清晰的想法,文档也没有提到这些东西。 我从 sale_security.xml 文件中得到以下代码 和 最佳答案 表示
我已经安装了模块 project , 它创建了 XML ID 为 task_visibility_rule 的规则.现在我想从我自己的模块中禁用这条规则。问题是该规则是在 中声明的标记,因此,任何更
我是一名优秀的程序员,十分优秀!