diff --git a/addons/web/static/src/js/views/search_menus.js b/addons/web/static/src/js/views/search_menus.js
index c4a6817cae0..48a8cf65fe7 100644
--- a/addons/web/static/src/js/views/search_menus.js
+++ b/addons/web/static/src/js/views/search_menus.js
@@ -122,6 +122,7 @@ return Widget.extend({
model_id: this.searchview.dataset.model,
context: results.context,
domain: results.domain,
+ sort: JSON.stringify(this.searchview.dataset._sort),
is_default: default_filter,
action_id: this.action_id,
};
@@ -231,6 +232,13 @@ return Widget.extend({
}
this.query.reset([this.facet_for(filter)], {
preventSearch: preventSearch || false});
+
+ // Load sort settings on view
+ if (!_.isUndefined(filter.sort)){
+ var sort_items = JSON.parse(filter.sort);
+ this.searchview.dataset.set_sort(sort_items);
+ }
+
this.$filters[this.key_for(filter)].addClass('selected');
},
remove_filter: function (filter, $filter, key) {
diff --git a/openerp/addons/base/ir/ir_filters.py b/openerp/addons/base/ir/ir_filters.py
index 9fa19421e87..4f578f9975c 100644
--- a/openerp/addons/base/ir/ir_filters.py
+++ b/openerp/addons/base/ir/ir_filters.py
@@ -45,7 +45,7 @@ class ir_filters(osv.osv):
filter_ids = self.search(cr, uid, action_domain +
[('model_id','=',model),('user_id','in',[uid, False])])
my_filters = self.read(cr, uid, filter_ids,
- ['name', 'is_default', 'domain', 'context', 'user_id'], context=context)
+ ['name', 'is_default', 'domain', 'context', 'user_id', 'sort'], context=context)
return my_filters
def _check_global_default(self, cr, uid, vals, matching_filters, context=None):
@@ -139,6 +139,7 @@ class ir_filters(osv.osv):
"and available to all users."),
'domain': fields.text('Domain', required=True),
'context': fields.text('Context', required=True),
+ 'sort': fields.text('Sort', required=True),
'model_id': fields.selection(_list_all_models, 'Model', required=True),
'is_default': fields.boolean('Default filter'),
'action_id': fields.many2one('ir.actions.actions', 'Action', ondelete='cascade',
@@ -149,6 +150,7 @@ class ir_filters(osv.osv):
_defaults = {
'domain': '[]',
'context':'{}',
+ 'sort': '[]',
'user_id': lambda self,cr,uid,context=None: uid,
'is_default': False
}
diff --git a/openerp/addons/base/ir/ir_filters.xml b/openerp/addons/base/ir/ir_filters.xml
index acc16e172b4..ce5bee47c7f 100644
--- a/openerp/addons/base/ir/ir_filters.xml
+++ b/openerp/addons/base/ir/ir_filters.xml
@@ -25,6 +25,7 @@
+
@@ -41,6 +42,7 @@
+
diff --git a/openerp/addons/base/tests/test_ir_filters.py b/openerp/addons/base/tests/test_ir_filters.py
index 9ca093d77af..d3f7809456c 100644
--- a/openerp/addons/base/tests/test_ir_filters.py
+++ b/openerp/addons/base/tests/test_ir_filters.py
@@ -34,10 +34,10 @@ class TestGetFilters(FiltersCase):
self.cr, self.USER_ID, 'ir.filters')
self.assertItemsEqual(map(noid, filters), [
- dict(name='a', is_default=False, user_id=self.USER, domain='[]', context='{}'),
- dict(name='b', is_default=False, user_id=self.USER, domain='[]', context='{}'),
- dict(name='c', is_default=False, user_id=self.USER, domain='[]', context='{}'),
- dict(name='d', is_default=False, user_id=self.USER, domain='[]', context='{}'),
+ dict(name='a', is_default=False, user_id=self.USER, domain='[]', context='{}', sort='[]'),
+ dict(name='b', is_default=False, user_id=self.USER, domain='[]', context='{}', sort='[]'),
+ dict(name='c', is_default=False, user_id=self.USER, domain='[]', context='{}', sort='[]'),
+ dict(name='d', is_default=False, user_id=self.USER, domain='[]', context='{}', sort='[]'),
])
def test_global_filters(self):
@@ -53,10 +53,10 @@ class TestGetFilters(FiltersCase):
self.cr, self.USER_ID, 'ir.filters')
self.assertItemsEqual(map(noid, filters), [
- dict(name='a', is_default=False, user_id=False, domain='[]', context='{}'),
- dict(name='b', is_default=False, user_id=False, domain='[]', context='{}'),
- dict(name='c', is_default=False, user_id=False, domain='[]', context='{}'),
- dict(name='d', is_default=False, user_id=False, domain='[]', context='{}'),
+ dict(name='a', is_default=False, user_id=False, domain='[]', context='{}', sort='[]'),
+ dict(name='b', is_default=False, user_id=False, domain='[]', context='{}', sort='[]'),
+ dict(name='c', is_default=False, user_id=False, domain='[]', context='{}', sort='[]'),
+ dict(name='d', is_default=False, user_id=False, domain='[]', context='{}', sort='[]'),
])
def test_no_third_party_filters(self):
@@ -71,8 +71,8 @@ class TestGetFilters(FiltersCase):
self.cr, self.USER_ID, 'ir.filters')
self.assertItemsEqual(map(noid, filters), [
- dict(name='a', is_default=False, user_id=False, domain='[]', context='{}'),
- dict(name='c', is_default=False, user_id=self.USER, domain='[]', context='{}'),
+ dict(name='a', is_default=False, user_id=False, domain='[]', context='{}', sort='[]'),
+ dict(name='c', is_default=False, user_id=self.USER, domain='[]', context='{}', sort='[]'),
])
class TestOwnDefaults(FiltersCase):
@@ -97,7 +97,7 @@ class TestOwnDefaults(FiltersCase):
self.assertItemsEqual(map(noid, filters), [
dict(name='a', user_id=self.USER, is_default=True,
- domain='[]', context='{}')
+ domain='[]', context='{}', sort='[]')
])
def test_new_filter_not_default(self):
@@ -121,9 +121,9 @@ class TestOwnDefaults(FiltersCase):
filters = Filters.get_filters(self.cr, self.USER_ID, 'ir.filters')
self.assertItemsEqual(map(noid, filters), [
- dict(name='a', user_id=self.USER, is_default=False, domain='[]', context='{}'),
- dict(name='b', user_id=self.USER, is_default=False, domain='[]', context='{}'),
- dict(name='c', user_id=self.USER, is_default=True, domain='[]', context='{}'),
+ dict(name='a', user_id=self.USER, is_default=False, domain='[]', context='{}', sort='[]'),
+ dict(name='b', user_id=self.USER, is_default=False, domain='[]', context='{}', sort='[]'),
+ dict(name='c', user_id=self.USER, is_default=True, domain='[]', context='{}', sort='[]'),
])
def test_new_filter_existing_default(self):
@@ -147,9 +147,9 @@ class TestOwnDefaults(FiltersCase):
filters = Filters.get_filters(self.cr, self.USER_ID, 'ir.filters')
self.assertItemsEqual(map(noid, filters), [
- dict(name='a', user_id=self.USER, is_default=False, domain='[]', context='{}'),
- dict(name='b', user_id=self.USER, is_default=False, domain='[]', context='{}'),
- dict(name='c', user_id=self.USER, is_default=True, domain='[]', context='{}'),
+ dict(name='a', user_id=self.USER, is_default=False, domain='[]', context='{}', sort='[]'),
+ dict(name='b', user_id=self.USER, is_default=False, domain='[]', context='{}', sort='[]'),
+ dict(name='c', user_id=self.USER, is_default=True, domain='[]', context='{}', sort='[]'),
])
def test_update_filter_set_default(self):
@@ -173,8 +173,8 @@ class TestOwnDefaults(FiltersCase):
filters = Filters.get_filters(self.cr, self.USER_ID, 'ir.filters')
self.assertItemsEqual(map(noid, filters), [
- dict(name='a', user_id=self.USER, is_default=True, domain='[]', context='{}'),
- dict(name='b', user_id=self.USER, is_default=False, domain='[]', context='{}'),
+ dict(name='a', user_id=self.USER, is_default=True, domain='[]', context='{}', sort='[]'),
+ dict(name='b', user_id=self.USER, is_default=False, domain='[]', context='{}', sort='[]'),
])
class TestGlobalDefaults(FiltersCase):
@@ -204,9 +204,9 @@ class TestGlobalDefaults(FiltersCase):
filters = Filters.get_filters(self.cr, self.USER_ID, 'ir.filters')
self.assertItemsEqual(map(noid, filters), [
- dict(name='a', user_id=False, is_default=False, domain='[]', context='{}'),
- dict(name='b', user_id=False, is_default=False, domain='[]', context='{}'),
- dict(name='c', user_id=False, is_default=True, domain='[]', context='{}'),
+ dict(name='a', user_id=False, is_default=False, domain='[]', context='{}', sort='[]'),
+ dict(name='b', user_id=False, is_default=False, domain='[]', context='{}', sort='[]'),
+ dict(name='c', user_id=False, is_default=True, domain='[]', context='{}', sort='[]'),
])
def test_new_filter_existing_default(self):
@@ -272,6 +272,6 @@ class TestGlobalDefaults(FiltersCase):
filters = Filters.get_filters(self.cr, self.USER_ID, 'ir.filters')
self.assertItemsEqual(map(noid, filters), [
- dict(name='a', user_id=False, is_default=False, domain='[]', context='{}'),
- dict(name='b', user_id=False, is_default=True, domain='[]', context=context_value),
+ dict(name='a', user_id=False, is_default=False, domain='[]', context='{}', sort='[]'),
+ dict(name='b', user_id=False, is_default=True, domain='[]', context=context_value, sort='[]'),
])