changeset 235955d39ba9 in sao:default
details: https://hg.tryton.org/sao?cmd=changeset;node=235955d39ba9
description:
        Add domain inversion for reference fields

        issue7877
        review45831002
diffstat:

 CHANGELOG     |   1 +
 src/common.js |  21 +++++++++++++++------
 tests/sao.js  |   4 ++++
 3 files changed, 20 insertions(+), 6 deletions(-)

diffs (54 lines):

diff -r e596254259df -r 235955d39ba9 CHANGELOG
--- a/CHANGELOG Mon Apr 08 15:06:36 2019 +0200
+++ b/CHANGELOG Sun Apr 14 14:17:39 2019 +0200
@@ -1,3 +1,4 @@
+* Add domain inversion for reference fields
 * Add list-form view
 * Support HTML widget
 * Use locale format for data export
diff -r e596254259df -r 235955d39ba9 src/common.js
--- a/src/common.js     Mon Apr 08 15:06:36 2019 +0200
+++ b/src/common.js     Sun Apr 14 14:17:39 2019 +0200
@@ -2339,13 +2339,22 @@
         },
         unique_value: function(domain) {
             if ((domain instanceof Array) &&
-                    (domain.length == 1) &&
-                    !domain[0][0].contains('.') &&
-                    (domain[0][1] == '=')) {
-                return [true, domain[0][1], domain[0][2]];
-            } else {
-                return [false, null, null];
+                    (domain.length == 1)) {
+                domain = domain[0];
+                var name = domain[0];
+                var value = domain[2];
+                var count = 0;
+                if (domain.length == 4 && name.endsWith('.id')) {
+                    count = 1;
+                    var model = domain[3];
+                    value = [model, value];
+                }
+                if ((name.split('.').length - 1) == count &&
+                        (domain[1] == '=')) {
+                    return [true, domain[1], value];
+                }
             }
+            return [false, null, null];
         },
         parse: function(domain) {
             var And = Sao.common.DomainInversion.And;
diff -r e596254259df -r 235955d39ba9 tests/sao.js
--- a/tests/sao.js      Mon Apr 08 15:06:36 2019 +0200
+++ b/tests/sao.js      Sun Apr 14 14:17:39 2019 +0200
@@ -2201,6 +2201,10 @@
         QUnit.ok(!unique_value(domain)[0]);
         domain = [['a.b', '=', 1]];
         QUnit.ok(!unique_value(domain)[0]);
+        domain = [['a.id', '=', 1, 'model']];
+        QUnit.ok(compare(unique_value(domain), [true, '=', ['model', 1]]));
+        domain = [['a.b.id', '=', 1, 'model']];
+        QUnit.ok(compare(unique_value(domain), [false, null, null]));
     });
 
     QUnit.test('DomainInversion evaldomain', function() {

Reply via email to