summaryrefslogtreecommitdiff
path: root/addons/web
diff options
context:
space:
mode:
authorGery Debongnie <ged@openerp.com>2014-01-21 15:30:53 +0100
committerGery Debongnie <ged@openerp.com>2014-01-21 15:30:53 +0100
commite131e873cabc2e44f91eef34f47f997c88d4ea78 (patch)
tree8e7eb4fcb7edbe2fb16532e8152ff34576d12d46 /addons/web
parent2cafcfbde7612c1d16513ad7ddc416de7d6a6497 (diff)
parent4b7799c0c7f718e99be9385d1a25348fca00b4bf (diff)
[MERGE] merge trunk into local branch
bzr revid: ged@openerp.com-20140121143053-30rf6wcwte6404jg
Diffstat (limited to 'addons/web')
-rw-r--r--addons/web/controllers/main.py20
-rw-r--r--addons/web/tests/__init__.py3
-rw-r--r--addons/web/tests/test_dataset.py42
3 files changed, 9 insertions, 56 deletions
diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py
index a7a5625afe9..948dc4e1493 100644
--- a/addons/web/controllers/main.py
+++ b/addons/web/controllers/main.py
@@ -1055,21 +1055,17 @@ class DataSet(http.Controller):
"""
Model = request.session.model(model)
- ids = Model.search(domain, offset or 0, limit or False, sort or False,
+ records = Model.search_read(domain, fields, offset or 0, limit or False, sort or False,
request.context)
- if limit and len(ids) == limit:
- length = Model.search_count(domain, request.context)
- else:
- length = len(ids) + (offset or 0)
- if fields and fields == ['id']:
- # shortcut read if we only want the ids
+ if not records:
return {
- 'length': length,
- 'records': [{'id': id} for id in ids]
+ 'length': 0,
+ 'records': []
}
-
- records = Model.read(ids, fields or False, request.context)
- records.sort(key=lambda obj: ids.index(obj['id']))
+ if limit and len(records) == limit:
+ length = Model.search_count(domain, request.context)
+ else:
+ length = len(records) + (offset or 0)
return {
'length': length,
'records': records
diff --git a/addons/web/tests/__init__.py b/addons/web/tests/__init__.py
index d7abb8e5a8c..b1196a50c20 100644
--- a/addons/web/tests/__init__.py
+++ b/addons/web/tests/__init__.py
@@ -1,9 +1,8 @@
# -*- coding: utf-8 -*-
-from . import test_dataset, test_menu, test_serving_base, test_js
+from . import test_menu, test_serving_base, test_js
fast_suite = []
checks = [
- test_dataset,
test_menu,
test_serving_base,
]
diff --git a/addons/web/tests/test_dataset.py b/addons/web/tests/test_dataset.py
deleted file mode 100644
index e89fadb13a7..00000000000
--- a/addons/web/tests/test_dataset.py
+++ /dev/null
@@ -1,42 +0,0 @@
-# -*- coding: utf-8 -*-
-from . import common
-
-import openerp.addons.web.controllers.main
-from openerp.http import request as req
-
-class TestDataSetController(common.MockRequestCase):
- def setUp(self):
- super(TestDataSetController, self).setUp()
- self.dataset = openerp.addons.web.controllers.main.DataSet()
- self.read = req.session.model().read
- self.search = req.session.model().search
-
- def test_empty_find(self):
- self.search.return_value = []
- self.read.return_value = []
-
- self.assertEqual(
- self.dataset.do_search_read('fake.model'),
- {'records': [], 'length': 0})
- self.read.assert_called_once_with(
- [], False, req.context)
-
- def test_regular_find(self):
- self.search.return_value = [1, 2, 3]
-
- self.dataset.do_search_read('fake.model')
- self.read.assert_called_once_with(
- [1, 2, 3], False, req.context)
-
- def test_ids_shortcut(self):
- self.search.return_value = [1, 2, 3]
- self.read.return_value = [
- {'id': 1, 'name': 'foo'},
- {'id': 2, 'name': 'bar'},
- {'id': 3, 'name': 'qux'}
- ]
-
- self.assertEqual(
- self.dataset.do_search_read('fake.model', ['id']),
- {'records': [{'id': 1}, {'id': 2}, {'id': 3}], 'length': 3})
- self.assertFalse(self.read.called)