Odoo Help


How to override save & new button functionality ?

on 1/21/16, 1:28 AM 2,559 views

I would like to override the default save & new button functionality ?

the button view is located at web\static\src\xml\base.xml and button click functionality is web\static\src\js\view_form.js.

i manged to override view by adding new xml file at mymodule\static\src\xml\custom.xml

<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
<t t-name="AbstractFormPopup.buttons">
    <t t-if="! readonly">
        <t t-if="! multi_select">
            <button type="button" class="oe_button oe_abstractformpopup-form-save oe_highlight">Save</button>
        <t t-if="multi_select">
            <button type="button" class="oe_button oe_abstractformpopup-form-save oe_highlight">Save &amp; Close</button>
            <button type="button" class="oe_button oe_abstractformpopup-form-save-new oe_highlight">My Own Button</button>
    <a class="oe_abstractformpopup-form-close oe_bold oe_form_button_cancel" href="javascript:void(0)">
        <t t-if="! readonly">
        <t t-if="readonly">

and adding

'qweb': [

in _openerp_.py

now button name is changed but the functionality is default functionality. how can i change that default button functionality ?

Axel Mendoza
On 1/21/16, 2:27 AM

To do that you need to add this code in a loaded js file of your module defined in the backend assets template(search others posts for that), changing the code in bold for your needs


setup_form_view: function() {

var self = this;

if (this.row_id) {

this.dataset.ids = [this.row_id];

this.dataset.index = 0;

} else {

this.dataset.index = null;


var options = _.clone(self.options.form_view_options) || {};

if (this.row_id !== null) {

options.initial_mode = this.options.readonly ? "view" : "edit";


_.extend(options, {

$buttons: this.$buttonpane,


this.view_form = new instance.web.FormView(this, this.dataset, this.options.view_id || false, options);

if (this.options.alternative_form_view) {




this.view_form.on("form_view_loaded", self, function() {

var multi_select = self.row_id === null && ! self.options.disable_multiple_selection;

self.$buttonpane.html(QWeb.render("AbstractFormPopup.buttons", {

multi_select: multi_select,

readonly: self.row_id !== null && self.options.readonly,


var $snbutton = self.$buttonpane.find(".oe_abstractformpopup-form-save-new");

$snbutton.click(function() {


$.when(self.view_form.save()).done(function() {

self.view_form.reload_mutex.exec(function() {





var $sbutton = self.$buttonpane.find(".oe_abstractformpopup-form-save");

$sbutton.click(function() {

$.when(self.view_form.save()).done(function() {

self.view_form.reload_mutex.exec(function() {





var $cbutton = self.$buttonpane.find(".oe_abstractformpopup-form-close");

$cbutton.click(function() {








to what you need

Thanks for the reply Axel, is it enough to add above part of the code in the local module js ? or do i need to add remaining js content from the view_form.js (which is located at web/static/js folder).

on 1/21/16, 4:56 AM

I don't understand. You need to put that code in a js file that contains the odoo js declaration header and that file it's declared using template asset declaration. No need for add extra content from view_form.js

Axel Mendoza
on 1/21/16, 8:57 AM

Hi Axel, i did that, now i need to call a python method from the js by passing the arguments (cr,ids,uid etc...). i am able to call a plane method but unable to send these argument related to the form. do u have any idea?

on 1/21/16, 10:42 AM

That is another question that you could find the answer in so many others post in the forum, don't mess up the question objetive

Axel Mendoza
on 1/21/16, 10:49 AM

About This Community

This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.


Odoo Training Center

Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.

Test it now

Question tools

1 follower(s)


Asked: 1/21/16, 1:28 AM
Seen: 2559 times
Last updated: 1/21/16, 2:27 AM