[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,
|
||||
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) {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
<group>
|
||||
<field name="domain"/>
|
||||
<field name="context"/>
|
||||
<field name="sort"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
@@ -41,6 +42,7 @@
|
||||
<field name="action_id"/>
|
||||
<field name="domain" groups="base.group_no_one"/>
|
||||
<field name="context" groups="base.group_no_one"/>
|
||||
<field name="sort" groups="base.group_no_one"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -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='[]'),
|
||||
])
|
||||
|
||||
Reference in New Issue
Block a user