From 361db883293ed964c060ead64bfadd028d737276 Mon Sep 17 00:00:00 2001 From: Enric Tobella Date: Mon, 21 Jun 2021 16:29:52 +0200 Subject: [PATCH] [IMP] web_widget_child_selector: black, isort, prettier --- web_widget_child_selector/__manifest__.py | 24 +++--- web_widget_child_selector/models/base.py | 21 ++--- .../static/src/js/widget_child_selector.js | 76 +++++++++++-------- .../src/less/widget_child_selector.less | 4 +- .../static/src/xml/widget_child_selector.xml | 53 +++++++++---- .../tests/test_widget_child_selector.py | 33 ++++---- web_widget_child_selector/views/assets.xml | 18 ++++- 7 files changed, 132 insertions(+), 97 deletions(-) diff --git a/web_widget_child_selector/__manifest__.py b/web_widget_child_selector/__manifest__.py index a5802c76c..a7cd04b9e 100644 --- a/web_widget_child_selector/__manifest__.py +++ b/web_widget_child_selector/__manifest__.py @@ -2,19 +2,13 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { - 'name': 'Web Widget Child Selector', - 'summary': "Widget used for navigation on hierarchy fields", - 'version': '12.0.1.0.0', - 'license': 'AGPL-3', - 'author': 'Creu Blanca,Odoo Community Association (OCA)', - 'website': 'https://github.com/OCA/web', - 'depends': [ - 'web', - ], - 'data': [ - 'views/assets.xml', - ], - 'qweb': [ - 'static/src/xml/widget_child_selector.xml', - ], + "name": "Web Widget Child Selector", + "summary": "Widget used for navigation on hierarchy fields", + "version": "12.0.1.0.0", + "license": "AGPL-3", + "author": "Creu Blanca,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/web", + "depends": ["web",], + "data": ["views/assets.xml",], + "qweb": ["static/src/xml/widget_child_selector.xml",], } diff --git a/web_widget_child_selector/models/base.py b/web_widget_child_selector/models/base.py index 128fc6ba9..fa83ca824 100644 --- a/web_widget_child_selector/models/base.py +++ b/web_widget_child_selector/models/base.py @@ -5,27 +5,28 @@ from odoo import models class Base(models.AbstractModel): - _inherit = 'base' + _inherit = "base" def _get_record_parents(self, field): if not self or not hasattr(self, self._parent_name): return [] - return getattr( - self, self._parent_name - )._get_record_parents(field) + [(self.id, str(getattr(self, field)))] + return getattr(self, self._parent_name)._get_record_parents(field) + [ + (self.id, str(getattr(self, field))) + ] def _get_record_direct_childs(self, field, domain): if not hasattr(self, self._parent_name): return [] - return [(r.id, str(getattr(r, field))) for r in self.search([( - self._parent_name, '=', self.id or False - )] + domain)] + return [ + (r.id, str(getattr(r, field))) + for r in self.search([(self._parent_name, "=", self.id or False)] + domain) + ] def get_record_direct_childs_parents(self, options, domain=False): if not domain: domain = [] - field = options.get('child_selection_field', 'display_name') + field = options.get("child_selection_field", "display_name") return { - 'childs': self._get_record_direct_childs(field, domain), - 'parents': self._get_record_parents(field) + "childs": self._get_record_direct_childs(field, domain), + "parents": self._get_record_parents(field), } diff --git a/web_widget_child_selector/static/src/js/widget_child_selector.js b/web_widget_child_selector/static/src/js/widget_child_selector.js index 813b18c8b..a3aafa00c 100644 --- a/web_widget_child_selector/static/src/js/widget_child_selector.js +++ b/web_widget_child_selector/static/src/js/widget_child_selector.js @@ -1,28 +1,37 @@ -odoo.define('web.web_widget_child_selector', function(require) { +odoo.define("web.web_widget_child_selector", function(require) { "use strict"; - var relational_fields = require('web.relational_fields'); - var field_registry = require('web.field_registry'); - var core = require('web.core'); + var relational_fields = require("web.relational_fields"); + var field_registry = require("web.field_registry"); + var core = require("web.core"); var qweb = core.qweb; var FieldMany2One = relational_fields.FieldMany2One; var FieldChildSelector = FieldMany2One.extend({ template: "FieldChildSelector", events: _.extend({}, FieldMany2One.prototype.events, { - 'click .o_child_selection_button': '_onChildSelectionClick', + "click .o_child_selection_button": "_onChildSelectionClick", }), - start: function () { - this.$input_dropdown = this.$('.o_input_dropdown'); - this.$input_value = this.$('.o_input_value') + start: function() { + this.$input_dropdown = this.$(".o_input_dropdown"); + this.$input_value = this.$(".o_input_value"); return this._super.apply(this, arguments); }, - _renderReadonly: function () { - var value = _.escape((this.m2o_value || "").trim()).split("\n").join("
"); + _renderReadonly: function() { + var value = _.escape((this.m2o_value || "").trim()) + .split("\n") + .join("
"); this.$el.html(value); if (!this.nodeOptions.no_open && this.value) { - this.$el.attr('href', _.str.sprintf('#id=%s&model=%s', this.value.res_id, this.field.relation)); - this.$el.addClass('o_form_uri'); + this.$el.attr( + "href", + _.str.sprintf( + "#id=%s&model=%s", + this.value.res_id, + this.field.relation + ) + ); + this.$el.addClass("o_form_uri"); } }, _set_childs: function() { @@ -32,42 +41,43 @@ odoo.define('web.web_widget_child_selector', function(require) { this.$input_dropdown.empty(); this.$input_value.empty(); var resources = []; - if (this.value.res_id) - resources = [this.value.res_id] + if (this.value.res_id) resources = [this.value.res_id]; this._rpc({ model: this.field.relation, - method: 'get_record_direct_childs_parents', + method: "get_record_direct_childs_parents", args: [ resources, this.nodeOptions, this.record.getDomain({fieldName: this.name}), ], context: this.record.getContext(this.recordParams), - }) - .then(function (data) { - _.each(data['parents'], function(parent, key) { + }).then(function(data) { + _.each(data.parents, function(parent, key) { self.parents[key] = parent; }); - _.each(data['childs'], function(child, key) { + _.each(data.childs, function(child, key) { self.childs[key] = child; }); - self.$input_dropdown.append(qweb.render('FieldChildSelectorChild', { - 'childs': self.childs, - })); - self.$input_value.append(qweb.render('FieldChildSelectorParent', { - 'parents': self.parents, - })); + self.$input_dropdown.append( + qweb.render("FieldChildSelectorChild", { + childs: self.childs, + }) + ); + self.$input_value.append( + qweb.render("FieldChildSelectorParent", { + parents: self.parents, + }) + ); }); }, _onChildSelectionClick: function(event) { var target = $(event.target); - var type = target.data('type'); - if (type === 'clear') { + var type = target.data("type"); + if (type === "clear") { this._setValue({id: false}); - } - else { - var index = target.data('index'); - var value = (type === 'child') ? this.childs[index]: this.parents[index]; + } else { + var index = target.data("index"); + var value = type === "child" ? this.childs[index] : this.parents[index]; this._setValue({id: value[0], display_name: value[1]}); } }, @@ -76,6 +86,6 @@ odoo.define('web.web_widget_child_selector', function(require) { }, }); - field_registry.add('child_selector', FieldChildSelector); + field_registry.add("child_selector", FieldChildSelector); return FieldChildSelector; -}) +}); diff --git a/web_widget_child_selector/static/src/less/widget_child_selector.less b/web_widget_child_selector/static/src/less/widget_child_selector.less index e12d715b9..f973c606b 100644 --- a/web_widget_child_selector/static/src/less/widget_child_selector.less +++ b/web_widget_child_selector/static/src/less/widget_child_selector.less @@ -1,9 +1,9 @@ .o_child_selection_button { - cursor: pointer, + cursor: pointer; } .o_child_selection_label { - cursor: pointer, + cursor: pointer; } .o_child_selection_clear { diff --git a/web_widget_child_selector/static/src/xml/widget_child_selector.xml b/web_widget_child_selector/static/src/xml/widget_child_selector.xml index df5c2b799..5b1af432d 100644 --- a/web_widget_child_selector/static/src/xml/widget_child_selector.xml +++ b/web_widget_child_selector/static/src/xml/widget_child_selector.xml @@ -1,25 +1,42 @@ - + - - + +
- -
+ +
- - -
@@ -28,13 +45,21 @@ / -
- + + - + diff --git a/web_widget_child_selector/tests/test_widget_child_selector.py b/web_widget_child_selector/tests/test_widget_child_selector.py index 68b02af97..a9f36b65c 100644 --- a/web_widget_child_selector/tests/test_widget_child_selector.py +++ b/web_widget_child_selector/tests/test_widget_child_selector.py @@ -5,30 +5,25 @@ from odoo.tests.common import TransactionCase class TestWidgetChildSelector(TransactionCase): - def setUp(self): super().setUp() - ResPartner = self.env['res.partner'].with_context(tracking_disable=True) - self.partner_1 = ResPartner.create({'name': 'P1'}) - self.partner_2 = ResPartner.create({ - 'name': 'P2', - 'parent_id': self.partner_1.id - }) - self.partner_3 = ResPartner.create({ - 'name': 'P3', - 'parent_id': self.partner_2.id - }) + ResPartner = self.env["res.partner"].with_context(tracking_disable=True) + self.partner_1 = ResPartner.create({"name": "P1"}) + self.partner_2 = ResPartner.create( + {"name": "P2", "parent_id": self.partner_1.id} + ) + self.partner_3 = ResPartner.create( + {"name": "P3", "parent_id": self.partner_2.id} + ) # Model that doesnt have the parent/child structure - self.group = self.env['res.groups'].create({ - 'name': 'Group' - }) + self.group = self.env["res.groups"].create({"name": "Group"}) def test_widget_child_selector(self): res = self.partner_2.get_record_direct_childs_parents( - {'child_selection_field': 'name'} + {"child_selection_field": "name"} ) - self.assertIn((self.partner_1.id, self.partner_1.name), res['parents']) - self.assertIn((self.partner_3.id, self.partner_3.name), res['childs']) + self.assertIn((self.partner_1.id, self.partner_1.name), res["parents"]) + self.assertIn((self.partner_3.id, self.partner_3.name), res["childs"]) res = self.group.get_record_direct_childs_parents({}) - self.assertFalse(res['parents']) - self.assertFalse(res['childs']) + self.assertFalse(res["parents"]) + self.assertFalse(res["childs"]) diff --git a/web_widget_child_selector/views/assets.xml b/web_widget_child_selector/views/assets.xml index 036bb5cc0..f7bf2475d 100644 --- a/web_widget_child_selector/views/assets.xml +++ b/web_widget_child_selector/views/assets.xml @@ -1,9 +1,19 @@ - + -