如何在openrp中移除特定模型的附件



我正在开发自己的模型。我安装了文档模型。这个模型在表单的顶部给出了附件按钮。但我希望这个附件按钮只在我的模块。我想隐藏其他按钮在其他形式(其他模型)。所以我得到以下代码删除"创建和保存"为特定的模型。但这段代码对我不起作用。请告诉我具体型号附件按钮如何使用?如何隐藏其他模型?

openerp.web_smile_hide_buttons = function(openerp) {
    // Models for which we'll hide create and duplicate buttons
    var MODELS_TO_HIDE = ['kit.lab'];
    // Hide the create button on all list views, which affect tree views and many2one pop-up search view
    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;
            };
            return ret;
        },
    });
    // Hide the save button on form views
    openerp.web.FormView.include({
        on_loaded: function(data) {
            var self = this;
            var ret = this._super.apply(this, arguments);
            var res_model = this.dataset.model;
            // if ($.inArray(res_model, MODELS_TO_HIDE) != -1) {
            this.$element.find('button.oe_dropdown_toggle.oe_dropdown_arrow').remove();
            this.$element.find('button.oe_form_button_save').remove();
            //};
            return ret;
        },
    });
    // Hide the create and duplicate button on all page views (i.e. read-only form views)
    openerp.web.PageView.include({
        on_loaded: function(data) {
            var self = this;
            var ret = this._super.apply(this, arguments);
            var res_model = this.dataset.model;
            if ($.inArray(res_model, MODELS_TO_HIDE) != -1) {
                this.$element.find('button.oe_form_button_create').remove();
                this.$element.find('button.oe_form_button_duplicate').remove();
            };
            return ret;
        },
    });
};

这个问题比较老,但我也遇到过同样的问题,并弄清楚了。这很可能不是最好的解决方案,但它有效。我假设你知道如何编写自定义模块,所以只需添加一个依赖于"文档"并创建自己的javascript(例如static/src/js/document.js,不要忘记将其包含在openerp.py中),内容如下:

   openerp.document = function (instance) {
        _t = instance.web._t;
        instance.web.Sidebar.include({
            init : function(){
                this._super.apply(this, arguments);
                if (window.location.href.indexOf('&model=res.partner') === -1)
                    this.sections.splice(1, 0, { 'name' : 'files', 'label' : _t('Attachment(s)'), });
                this.items['files'] = [];
            },
        });
    };

在本例中,"Attachment"按钮将隐藏在res.partner表单视图中。

也许其他人知道一个更好的方法来寻找当前模型相比我的解决方案,寻找字符串在window.location.href

相关内容

  • 没有找到相关文章

最新更新