[ADD] is_default handling on private filters
bzr revid: xmo@openerp.com-20120522115330-xnr4pyfy9sh3oqtv
This commit is contained in:
parent
33e585a607
commit
a90c8ff5ae
|
@ -46,7 +46,7 @@ class ir_filters(osv.osv):
|
|||
"""
|
||||
# available filters: private filters (user_id=uid) and public filters (uid=NULL)
|
||||
act_ids = self.search(cr, uid, [('model_id','=',model),('user_id','in',[uid, False])])
|
||||
my_acts = self.read(cr, uid, act_ids, ['name', 'domain', 'context', 'user_id'])
|
||||
my_acts = self.read(cr, uid, act_ids, ['name', 'is_default', 'domain', 'context', 'user_id'])
|
||||
return my_acts
|
||||
|
||||
def create_or_replace(self, cr, uid, vals, context=None):
|
||||
|
@ -57,6 +57,13 @@ class ir_filters(osv.osv):
|
|||
# f.user_id is False and vals.user_id is False or missing,
|
||||
# or f.user_id.id == vals.user_id
|
||||
if (f['user_id'] and f['user_id'][0]) == vals.get('user_id', False)]
|
||||
|
||||
if 'user_id' in vals and vals.get('is_default'):
|
||||
act_ids = self.search(cr, uid, [('model_id', '=', vals['model_id']),
|
||||
('user_id', '=', vals['user_id'])],
|
||||
context=context)
|
||||
self.write(cr, uid, act_ids, {'is_default': False}, context=context)
|
||||
|
||||
# When a filter exists for the same (name, model, user) triple, we simply
|
||||
# replace its definition.
|
||||
if matching_filters:
|
||||
|
@ -87,11 +94,13 @@ class ir_filters(osv.osv):
|
|||
'domain': fields.text('Domain', required=True),
|
||||
'context': fields.text('Context', required=True),
|
||||
'model_id': fields.selection(_list_all_models, 'Model', required=True),
|
||||
'is_default': fields.boolean('Default filter')
|
||||
}
|
||||
_defaults = {
|
||||
'domain': '[]',
|
||||
'context':'{}',
|
||||
'user_id': lambda self,cr,uid,context=None: uid,
|
||||
'is_default': False
|
||||
}
|
||||
|
||||
ir_filters()
|
||||
|
|
|
@ -42,10 +42,10 @@ class TestGetFilters(common.TransactionCase):
|
|||
self.cr, self.USER_ID, 'ir.filters')
|
||||
|
||||
self.assertItemsEqual(map(noid, filters), [
|
||||
dict(name='a', user_id=self.USER, domain='[]', context='{}'),
|
||||
dict(name='b', user_id=self.USER, domain='[]', context='{}'),
|
||||
dict(name='c', user_id=self.USER, domain='[]', context='{}'),
|
||||
dict(name='d', user_id=self.USER, domain='[]', context='{}'),
|
||||
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='{}'),
|
||||
])
|
||||
|
||||
@fixtures(
|
||||
|
@ -59,10 +59,10 @@ class TestGetFilters(common.TransactionCase):
|
|||
self.cr, self.USER_ID, 'ir.filters')
|
||||
|
||||
self.assertItemsEqual(map(noid, filters), [
|
||||
dict(name='a', user_id=False, domain='[]', context='{}'),
|
||||
dict(name='b', user_id=False, domain='[]', context='{}'),
|
||||
dict(name='c', user_id=False, domain='[]', context='{}'),
|
||||
dict(name='d', user_id=False, domain='[]', context='{}'),
|
||||
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='{}'),
|
||||
])
|
||||
|
||||
@fixtures(
|
||||
|
@ -76,7 +76,100 @@ class TestGetFilters(common.TransactionCase):
|
|||
self.cr, self.USER_ID, 'ir.filters')
|
||||
|
||||
self.assertItemsEqual(map(noid, filters), [
|
||||
dict(name='a', user_id=False, domain='[]', context='{}'),
|
||||
dict(name='c', user_id=self.USER, domain='[]', context='{}'),
|
||||
dict(name='a', is_default=False, user_id=False, domain='[]', context='{}'),
|
||||
dict(name='c', is_default=False, user_id=self.USER, domain='[]', context='{}'),
|
||||
])
|
||||
|
||||
class TestOwnDefaults(common.TransactionCase):
|
||||
USER_ID = 3
|
||||
USER = (3, u'Demo User')
|
||||
|
||||
def test_new_no_filter(self):
|
||||
"""
|
||||
When creating a @is_default filter with no existing filter, that new
|
||||
filter gets the default flag
|
||||
"""
|
||||
Filters = self.registry('ir.filters')
|
||||
Filters.create_or_replace(self.cr, self.USER_ID, {
|
||||
'name': 'a',
|
||||
'model_id': 'ir.filters',
|
||||
'user_id': self.USER_ID,
|
||||
'is_default': True,
|
||||
})
|
||||
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='{}')
|
||||
])
|
||||
|
||||
@fixtures(
|
||||
('ir.filters', dict(name='a', user_id=USER_ID, model_id='ir.filters')),
|
||||
('ir.filters', dict(name='b', user_id=USER_ID, model_id='ir.filters')),
|
||||
)
|
||||
def test_new_filter_not_default(self):
|
||||
"""
|
||||
When creating a @is_default filter with existing non-default filters,
|
||||
the new filter gets the flag
|
||||
"""
|
||||
Filters = self.registry('ir.filters')
|
||||
Filters.create_or_replace(self.cr, self.USER_ID, {
|
||||
'name': 'c',
|
||||
'model_id': 'ir.filters',
|
||||
'user_id': self.USER_ID,
|
||||
'is_default': True,
|
||||
})
|
||||
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='{}'),
|
||||
])
|
||||
|
||||
@fixtures(
|
||||
('ir.filters', dict(name='a', user_id=USER_ID, model_id='ir.filters')),
|
||||
('ir.filters', dict(name='b', is_default=True, user_id=USER_ID, model_id='ir.filters')),
|
||||
)
|
||||
def test_new_filter_existing_default(self):
|
||||
"""
|
||||
When creating a @is_default filter where an existing filter is already
|
||||
@is_default, the flag should be *moved* from the old to the new filter
|
||||
"""
|
||||
Filters = self.registry('ir.filters')
|
||||
Filters.create_or_replace(self.cr, self.USER_ID, {
|
||||
'name': 'c',
|
||||
'model_id': 'ir.filters',
|
||||
'user_id': self.USER_ID,
|
||||
'is_default': True,
|
||||
})
|
||||
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='{}'),
|
||||
])
|
||||
|
||||
@fixtures(
|
||||
('ir.filters', dict(name='a', user_id=USER_ID, model_id='ir.filters')),
|
||||
('ir.filters', dict(name='b', is_default=True, user_id=USER_ID, model_id='ir.filters')),
|
||||
)
|
||||
def test_update_filter_set_default(self):
|
||||
"""
|
||||
When updating an existing filter to @is_default, if an other filter
|
||||
already has the flag the flag should be moved
|
||||
"""
|
||||
Filters = self.registry('ir.filters')
|
||||
Filters.create_or_replace(self.cr, self.USER_ID, {
|
||||
'name': 'a',
|
||||
'model_id': 'ir.filters',
|
||||
'user_id': self.USER_ID,
|
||||
'is_default': True,
|
||||
})
|
||||
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='{}'),
|
||||
])
|
||||
|
|
Loading…
Reference in New Issue