[ADD] web: sorting in ir_filters
Add a parameter sort on the ir.filters to maintain the order of searching when reloading a filter. Fixes #6867
This commit is contained in:
committed by
Martin Trigaux
parent
692fecb472
commit
3071ef16c7
@@ -122,6 +122,7 @@ return Widget.extend({
|
|||||||
model_id: this.searchview.dataset.model,
|
model_id: this.searchview.dataset.model,
|
||||||
context: results.context,
|
context: results.context,
|
||||||
domain: results.domain,
|
domain: results.domain,
|
||||||
|
sort: JSON.stringify(this.searchview.dataset._sort),
|
||||||
is_default: default_filter,
|
is_default: default_filter,
|
||||||
action_id: this.action_id,
|
action_id: this.action_id,
|
||||||
};
|
};
|
||||||
@@ -231,6 +232,13 @@ return Widget.extend({
|
|||||||
}
|
}
|
||||||
this.query.reset([this.facet_for(filter)], {
|
this.query.reset([this.facet_for(filter)], {
|
||||||
preventSearch: preventSearch || false});
|
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');
|
this.$filters[this.key_for(filter)].addClass('selected');
|
||||||
},
|
},
|
||||||
remove_filter: function (filter, $filter, key) {
|
remove_filter: function (filter, $filter, key) {
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ class ir_filters(osv.osv):
|
|||||||
filter_ids = self.search(cr, uid, action_domain +
|
filter_ids = self.search(cr, uid, action_domain +
|
||||||
[('model_id','=',model),('user_id','in',[uid, False])])
|
[('model_id','=',model),('user_id','in',[uid, False])])
|
||||||
my_filters = self.read(cr, uid, filter_ids,
|
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
|
return my_filters
|
||||||
|
|
||||||
def _check_global_default(self, cr, uid, vals, matching_filters, context=None):
|
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."),
|
"and available to all users."),
|
||||||
'domain': fields.text('Domain', required=True),
|
'domain': fields.text('Domain', required=True),
|
||||||
'context': fields.text('Context', required=True),
|
'context': fields.text('Context', required=True),
|
||||||
|
'sort': fields.text('Sort', required=True),
|
||||||
'model_id': fields.selection(_list_all_models, 'Model', required=True),
|
'model_id': fields.selection(_list_all_models, 'Model', required=True),
|
||||||
'is_default': fields.boolean('Default filter'),
|
'is_default': fields.boolean('Default filter'),
|
||||||
'action_id': fields.many2one('ir.actions.actions', 'Action', ondelete='cascade',
|
'action_id': fields.many2one('ir.actions.actions', 'Action', ondelete='cascade',
|
||||||
@@ -149,6 +150,7 @@ class ir_filters(osv.osv):
|
|||||||
_defaults = {
|
_defaults = {
|
||||||
'domain': '[]',
|
'domain': '[]',
|
||||||
'context':'{}',
|
'context':'{}',
|
||||||
|
'sort': '[]',
|
||||||
'user_id': lambda self,cr,uid,context=None: uid,
|
'user_id': lambda self,cr,uid,context=None: uid,
|
||||||
'is_default': False
|
'is_default': False
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
<group>
|
<group>
|
||||||
<field name="domain"/>
|
<field name="domain"/>
|
||||||
<field name="context"/>
|
<field name="context"/>
|
||||||
|
<field name="sort"/>
|
||||||
</group>
|
</group>
|
||||||
</sheet>
|
</sheet>
|
||||||
</form>
|
</form>
|
||||||
@@ -41,6 +42,7 @@
|
|||||||
<field name="action_id"/>
|
<field name="action_id"/>
|
||||||
<field name="domain" groups="base.group_no_one"/>
|
<field name="domain" groups="base.group_no_one"/>
|
||||||
<field name="context" groups="base.group_no_one"/>
|
<field name="context" groups="base.group_no_one"/>
|
||||||
|
<field name="sort" groups="base.group_no_one"/>
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|||||||
@@ -34,10 +34,10 @@ class TestGetFilters(FiltersCase):
|
|||||||
self.cr, self.USER_ID, 'ir.filters')
|
self.cr, self.USER_ID, 'ir.filters')
|
||||||
|
|
||||||
self.assertItemsEqual(map(noid, filters), [
|
self.assertItemsEqual(map(noid, filters), [
|
||||||
dict(name='a', 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='{}'),
|
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='{}'),
|
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='{}'),
|
dict(name='d', is_default=False, user_id=self.USER, domain='[]', context='{}', sort='[]'),
|
||||||
])
|
])
|
||||||
|
|
||||||
def test_global_filters(self):
|
def test_global_filters(self):
|
||||||
@@ -53,10 +53,10 @@ class TestGetFilters(FiltersCase):
|
|||||||
self.cr, self.USER_ID, 'ir.filters')
|
self.cr, self.USER_ID, 'ir.filters')
|
||||||
|
|
||||||
self.assertItemsEqual(map(noid, filters), [
|
self.assertItemsEqual(map(noid, filters), [
|
||||||
dict(name='a', 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='{}'),
|
dict(name='b', is_default=False, user_id=False, domain='[]', context='{}', sort='[]'),
|
||||||
dict(name='c', is_default=False, user_id=False, domain='[]', context='{}'),
|
dict(name='c', is_default=False, user_id=False, domain='[]', context='{}', sort='[]'),
|
||||||
dict(name='d', is_default=False, user_id=False, domain='[]', context='{}'),
|
dict(name='d', is_default=False, user_id=False, domain='[]', context='{}', sort='[]'),
|
||||||
])
|
])
|
||||||
|
|
||||||
def test_no_third_party_filters(self):
|
def test_no_third_party_filters(self):
|
||||||
@@ -71,8 +71,8 @@ class TestGetFilters(FiltersCase):
|
|||||||
self.cr, self.USER_ID, 'ir.filters')
|
self.cr, self.USER_ID, 'ir.filters')
|
||||||
|
|
||||||
self.assertItemsEqual(map(noid, filters), [
|
self.assertItemsEqual(map(noid, filters), [
|
||||||
dict(name='a', is_default=False, user_id=False, 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='{}'),
|
dict(name='c', is_default=False, user_id=self.USER, domain='[]', context='{}', sort='[]'),
|
||||||
])
|
])
|
||||||
|
|
||||||
class TestOwnDefaults(FiltersCase):
|
class TestOwnDefaults(FiltersCase):
|
||||||
@@ -97,7 +97,7 @@ class TestOwnDefaults(FiltersCase):
|
|||||||
|
|
||||||
self.assertItemsEqual(map(noid, filters), [
|
self.assertItemsEqual(map(noid, filters), [
|
||||||
dict(name='a', user_id=self.USER, is_default=True,
|
dict(name='a', user_id=self.USER, is_default=True,
|
||||||
domain='[]', context='{}')
|
domain='[]', context='{}', sort='[]')
|
||||||
])
|
])
|
||||||
|
|
||||||
def test_new_filter_not_default(self):
|
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')
|
filters = Filters.get_filters(self.cr, self.USER_ID, 'ir.filters')
|
||||||
|
|
||||||
self.assertItemsEqual(map(noid, filters), [
|
self.assertItemsEqual(map(noid, filters), [
|
||||||
dict(name='a', user_id=self.USER, is_default=False, 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='{}'),
|
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='{}'),
|
dict(name='c', user_id=self.USER, is_default=True, domain='[]', context='{}', sort='[]'),
|
||||||
])
|
])
|
||||||
|
|
||||||
def test_new_filter_existing_default(self):
|
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')
|
filters = Filters.get_filters(self.cr, self.USER_ID, 'ir.filters')
|
||||||
|
|
||||||
self.assertItemsEqual(map(noid, filters), [
|
self.assertItemsEqual(map(noid, filters), [
|
||||||
dict(name='a', user_id=self.USER, is_default=False, 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='{}'),
|
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='{}'),
|
dict(name='c', user_id=self.USER, is_default=True, domain='[]', context='{}', sort='[]'),
|
||||||
])
|
])
|
||||||
|
|
||||||
def test_update_filter_set_default(self):
|
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')
|
filters = Filters.get_filters(self.cr, self.USER_ID, 'ir.filters')
|
||||||
|
|
||||||
self.assertItemsEqual(map(noid, filters), [
|
self.assertItemsEqual(map(noid, filters), [
|
||||||
dict(name='a', user_id=self.USER, is_default=True, 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='{}'),
|
dict(name='b', user_id=self.USER, is_default=False, domain='[]', context='{}', sort='[]'),
|
||||||
])
|
])
|
||||||
|
|
||||||
class TestGlobalDefaults(FiltersCase):
|
class TestGlobalDefaults(FiltersCase):
|
||||||
@@ -204,9 +204,9 @@ class TestGlobalDefaults(FiltersCase):
|
|||||||
filters = Filters.get_filters(self.cr, self.USER_ID, 'ir.filters')
|
filters = Filters.get_filters(self.cr, self.USER_ID, 'ir.filters')
|
||||||
|
|
||||||
self.assertItemsEqual(map(noid, filters), [
|
self.assertItemsEqual(map(noid, filters), [
|
||||||
dict(name='a', user_id=False, is_default=False, 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='{}'),
|
dict(name='b', user_id=False, is_default=False, domain='[]', context='{}', sort='[]'),
|
||||||
dict(name='c', user_id=False, is_default=True, domain='[]', context='{}'),
|
dict(name='c', user_id=False, is_default=True, domain='[]', context='{}', sort='[]'),
|
||||||
])
|
])
|
||||||
|
|
||||||
def test_new_filter_existing_default(self):
|
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')
|
filters = Filters.get_filters(self.cr, self.USER_ID, 'ir.filters')
|
||||||
|
|
||||||
self.assertItemsEqual(map(noid, filters), [
|
self.assertItemsEqual(map(noid, filters), [
|
||||||
dict(name='a', user_id=False, is_default=False, domain='[]', context='{}'),
|
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),
|
dict(name='b', user_id=False, is_default=True, domain='[]', context=context_value, sort='[]'),
|
||||||
])
|
])
|
||||||
|
|||||||
Reference in New Issue
Block a user