如何从特定对象的树视图中隐藏创建按钮?因为这个对象的所有字段都是只读的。
5 回答
这取决于您使用的 OpenERP 版本,如果您需要更具体的答案,请提及。如果您问这个问题,您可能还没有使用 7.0,但知道它可能还是有用的。
OpenERP 7.0
从 OpenERP 7.0 开始,系统将自动为您执行以下每个可能的操作:创建、编辑、删除:如果当前用户没有访问权限(基于访问权限配置),相应的标志将被添加到根目录视图定义的节点,有效地隐藏了 UI 中的选项。这些标志分别对应于以下访问权限:create
, write
, unlink
.
正如 user1576199 所提到的,此标志也可以在您的视图定义中手动设置,但只有当访问权限与您要显示的选项不对应时才需要这样做。您可以以任何组合方式以这种方式执行此操作:
<tree create="false" delete="false">
....
</tree>
or
<kanban create="false" edit="false">
....
</kanban>
etc..
OpenERP 6.1 及更早版本
没有隐藏这些按钮的选项,因此如果您想专门实现这一点,您需要自定义 OpenERP 客户端。simahawk 的回答为您提供了 Web 客户端 6.1 的一些起点,这可能是您想要自定义的内容。
你可以在树视图上这样写
<tree string="String" create="false">
谢谢
在 v6 上执行此操作的另一种方法是使用 CSS 隐藏它(这比 @simahawk 的建议更容易)。您可以通过将 CSS 添加到包含树的表单视图 xml 来完成此操作。例如:
<html>
<style>
.openerp button.oe_form_button_edit { display:none }
</style>
</html>
<tree ...
您可以根据需要对删除和编辑按钮执行相同操作。
有点破解...我喜欢 v7 功能 - 等不及要升级了 :)
我不知道这个解决方案是否正确,但我尝试将此代码放在下面的核心 javascript 中,它实际上可以工作。
openerp.web.ListView.include({
start: function() {
var self = this;
var ret = this._super.apply(this, arguments);
var res_model = this.dataset.model;
if ($.inArray(res_model, MODELS_TO_HIDE) != -1) {
self.options.addable = false; /* for create button */
self.options.deletable= false; /* for delete button */
};
return ret;
},
});