← Back to team overview

openerp-community-reviewer team mailing list archive

[Merge] lp:~ajite/web-addons/7.0-web-addons-add-0001 into lp:web-addons

 

Augustin Cisterne-Kaas - www.elico-corp.com has proposed merging lp:~ajite/web-addons/7.0-web-addons-add-0001 into lp:web-addons.

Requested reviews:
  Web-Addons Core Editors (webaddons-core-editors)

For more details, see:
https://code.launchpad.net/~ajite/web-addons/7.0-web-addons-add-0001/+merge/210620

Added a polymorphic widget based on many2one widget (different from reference field).
Use case available at https://www.openerp.com/apps/7.0/mail_organizer/
-- 
https://code.launchpad.net/~ajite/web-addons/7.0-web-addons-add-0001/+merge/210620
Your team Web-Addons Core Editors is requested to review the proposed merge of lp:~ajite/web-addons/7.0-web-addons-add-0001 into lp:web-addons.
=== added directory 'web_polymorphic'
=== added file 'web_polymorphic/__init__.py'
--- web_polymorphic/__init__.py	1970-01-01 00:00:00 +0000
+++ web_polymorphic/__init__.py	2014-03-12 14:33:28 +0000
@@ -0,0 +1,21 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (c) 2010-2014 Elico Corp. All Rights Reserved.
+#    Augustin Cisterne-Kaas <augustin.cisterne-kaas@xxxxxxxxxxxxxx>
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################

=== added file 'web_polymorphic/__openerp__.py'
--- web_polymorphic/__openerp__.py	1970-01-01 00:00:00 +0000
+++ web_polymorphic/__openerp__.py	2014-03-12 14:33:28 +0000
@@ -0,0 +1,43 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (c) 2010-2014 Elico Corp. All Rights Reserved.
+#    Augustin Cisterne-Kaas <augustin.cisterne-kaas@xxxxxxxxxxxxxx>
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+{'name': 'Web Polymorphic',
+ 'version': '0.1',
+ 'category': 'Web',
+ 'depends': ['web'],
+ 'author': 'Elico Corp',
+ 'license': 'AGPL-3',
+ 'website': 'https://www.elico-corp.com',
+ 'description': """
+Add a new widget named "polymorphic"
+The polymorphic field allow to dynamically store an id linked to any model in
+OpenERP instead of the usual fixed one in the view definition
+
+E.g:
+
+<field name="model" invisible="1" />
+<field name="object_id" widget="polymorphic" polymorphic="model" />
+""",
+ 'js': [
+     'static/src/js/view_form.js'
+ ],
+ 'installable': True,
+ 'application': False}

=== added directory 'web_polymorphic/static'
=== added directory 'web_polymorphic/static/src'
=== added directory 'web_polymorphic/static/src/js'
=== added file 'web_polymorphic/static/src/js/view_form.js'
--- web_polymorphic/static/src/js/view_form.js	1970-01-01 00:00:00 +0000
+++ web_polymorphic/static/src/js/view_form.js	2014-03-12 14:33:28 +0000
@@ -0,0 +1,47 @@
+/******************************************************************************
+*
+*    OpenERP, Open Source Management Solution
+*    Copyright (c) 2010-2014 Elico Corp. All Rights Reserved.
+*    Augustin Cisterne-Kaas <augustin.cisterne-kaas@xxxxxxxxxxxxxx>
+*
+*    This program is free software: you can redistribute it and/or modify
+*    it under the terms of the GNU Affero General Public License as
+*    published by the Free Software Foundation, either version 3 of the
+*    License, or (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU Affero General Public License for more details.
+*
+*    You should have received a copy of the GNU Affero General Public License
+*    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*
+******************************************************************************/
+openerp.web_polymorphic = function (instance) {
+    instance.web.form.FieldPolymorphic = instance.web.form.FieldMany2One.extend( {
+        template: "FieldMany2One",
+        events: {
+            'focus input': function(e) {
+                this.field.relation = this.field_manager.get_field_value(this.polymorphic);
+            },
+            'click input': function(e) {
+                this.field.relation = this.field_manager.get_field_value(this.polymorphic);
+            }
+        },
+        init: function(field_manager, node) {
+            this._super(field_manager, node);
+            this.polymorphic = this.node.attrs.polymorphic;
+        },
+        render_editable: function() {
+            var self = this;
+            this.$drop_down = this.$el.find(".oe_m2o_drop_down_button");
+            this.$drop_down.click(function() {
+                self.polymorphic = self.node.attrs.polymorphic;
+                self.field.relation = self.field_manager.get_field_value(self.polymorphic);              
+            });
+            this._super();
+        }
+    });
+    instance.web.form.widgets.add('polymorphic', 'instance.web.form.FieldPolymorphic')
+};


Follow ups