diff --git a/addons/base/static/lib/qweb/qweb-test-extend.xml b/addons/base/static/lib/qweb/qweb-test-extend.xml
index 23e10d52599..44fda920e43 100644
--- a/addons/base/static/lib/qweb/qweb-test-extend.xml
+++ b/addons/base/static/lib/qweb/qweb-test-extend.xml
@@ -24,4 +24,9 @@
END
+
+
+ CLONED TEMPLATE
+
+
diff --git a/addons/base/static/lib/qweb/qweb-test.js.html b/addons/base/static/lib/qweb/qweb-test.js.html
index e341fa753fd..fda837497c4 100644
--- a/addons/base/static/lib/qweb/qweb-test.js.html
+++ b/addons/base/static/lib/qweb/qweb-test.js.html
@@ -251,6 +251,8 @@
test("jQuery extend", function () {
equals(render('jquery-extend', {}), '
',
"Extend template with jQuery");
+ equals(render('jquery-extend-clone', {}), '',
+ "Clone template");
});
});
diff --git a/addons/base/static/lib/qweb/qweb2.js b/addons/base/static/lib/qweb/qweb2.js
index 3c473423a44..36d0dce09c4 100644
--- a/addons/base/static/lib/qweb/qweb2.js
+++ b/addons/base/static/lib/qweb/qweb2.js
@@ -216,6 +216,15 @@ QWeb2.Engine = (function() {
}
var name = node.getAttribute(this.prefix + '-name');
var extend = node.getAttribute(this.prefix + '-extend');
+ if (name && extend) {
+ // Clone template and extend it
+ if (!this.templates[extend]) {
+ return this.tools.exception("Can't clone undefined template " + extend);
+ }
+ this.templates[name] = this.templates[extend].cloneNode(true);
+ extend = name;
+ name = undefined;
+ }
if (name) {
this.templates[name] = node;
} else if (extend) {