2012-05-22 11:00:31 +00:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import functools
|
|
|
|
|
2012-05-22 12:55:00 +00:00
|
|
|
from openerp import exceptions
|
|
|
|
from . import common
|
2012-05-22 11:00:31 +00:00
|
|
|
|
|
|
|
def noid(d):
|
|
|
|
""" Removes `id` key from a dict so we don't have to keep these things
|
|
|
|
around when trying to match
|
|
|
|
"""
|
|
|
|
if 'id' in d: del d['id']
|
|
|
|
return d
|
|
|
|
|
2014-01-28 16:48:49 +00:00
|
|
|
class FiltersCase(common.TransactionCase):
|
|
|
|
def build(self, model, *args):
|
|
|
|
Model = self.registry(model)
|
|
|
|
for vars in args:
|
|
|
|
Model.create(self.cr, common.ADMIN_USER_ID, vars, {})
|
|
|
|
|
|
|
|
class TestGetFilters(FiltersCase):
|
2014-01-28 15:56:40 +00:00
|
|
|
def setUp(self):
|
|
|
|
super(TestGetFilters, self).setUp()
|
2014-01-28 16:48:49 +00:00
|
|
|
self.USER = self.registry('res.users').name_search(self.cr, self.uid, 'demo')[0]
|
2014-01-28 15:56:40 +00:00
|
|
|
self.USER_ID = self.USER[0]
|
2012-05-22 11:00:31 +00:00
|
|
|
|
|
|
|
def test_own_filters(self):
|
2014-01-28 16:48:49 +00:00
|
|
|
self.build(
|
|
|
|
'ir.filters',
|
|
|
|
dict(name='a', user_id=self.USER_ID, model_id='ir.filters'),
|
|
|
|
dict(name='b', user_id=self.USER_ID, model_id='ir.filters'),
|
|
|
|
dict(name='c', user_id=self.USER_ID, model_id='ir.filters'),
|
|
|
|
dict(name='d', user_id=self.USER_ID, model_id='ir.filters'))
|
|
|
|
|
2012-05-22 11:00:31 +00:00
|
|
|
filters = self.registry('ir.filters').get_filters(
|
|
|
|
self.cr, self.USER_ID, 'ir.filters')
|
|
|
|
|
|
|
|
self.assertItemsEqual(map(noid, filters), [
|
2012-05-22 11:53:30 +00:00
|
|
|
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='{}'),
|
2012-05-22 11:00:31 +00:00
|
|
|
])
|
|
|
|
|
|
|
|
def test_global_filters(self):
|
2014-01-28 16:48:49 +00:00
|
|
|
self.build(
|
|
|
|
'ir.filters',
|
|
|
|
dict(name='a', user_id=False, model_id='ir.filters'),
|
|
|
|
dict(name='b', user_id=False, model_id='ir.filters'),
|
|
|
|
dict(name='c', user_id=False, model_id='ir.filters'),
|
|
|
|
dict(name='d', user_id=False, model_id='ir.filters'),
|
|
|
|
)
|
|
|
|
|
2012-05-22 11:00:31 +00:00
|
|
|
filters = self.registry('ir.filters').get_filters(
|
|
|
|
self.cr, self.USER_ID, 'ir.filters')
|
|
|
|
|
|
|
|
self.assertItemsEqual(map(noid, filters), [
|
2012-05-22 11:53:30 +00:00
|
|
|
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='{}'),
|
2012-05-22 11:00:31 +00:00
|
|
|
])
|
|
|
|
|
|
|
|
def test_no_third_party_filters(self):
|
2014-01-28 16:48:49 +00:00
|
|
|
self.build(
|
|
|
|
'ir.filters',
|
|
|
|
dict(name='a', user_id=False, model_id='ir.filters'),
|
|
|
|
dict(name='b', user_id=common.ADMIN_USER_ID, model_id='ir.filters'),
|
|
|
|
dict(name='c', user_id=self.USER_ID, model_id='ir.filters'),
|
|
|
|
dict(name='d', user_id=common.ADMIN_USER_ID, model_id='ir.filters') )
|
|
|
|
|
2012-05-22 11:00:31 +00:00
|
|
|
filters = self.registry('ir.filters').get_filters(
|
|
|
|
self.cr, self.USER_ID, 'ir.filters')
|
|
|
|
|
|
|
|
self.assertItemsEqual(map(noid, filters), [
|
2012-05-22 11:53:30 +00:00
|
|
|
dict(name='a', is_default=False, user_id=False, domain='[]', context='{}'),
|
|
|
|
dict(name='c', is_default=False, user_id=self.USER, domain='[]', context='{}'),
|
2012-05-22 11:00:31 +00:00
|
|
|
])
|
|
|
|
|
2014-01-28 16:48:49 +00:00
|
|
|
class TestOwnDefaults(FiltersCase):
|
2014-01-28 15:56:40 +00:00
|
|
|
def setUp(self):
|
|
|
|
super(TestOwnDefaults, self).setUp()
|
2014-01-28 16:48:49 +00:00
|
|
|
self.USER = self.registry('res.users').name_search(self.cr, self.uid, 'demo')[0]
|
2014-01-28 15:56:40 +00:00
|
|
|
self.USER_ID = self.USER[0]
|
2012-05-22 11:53:30 +00:00
|
|
|
|
|
|
|
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='{}')
|
|
|
|
])
|
|
|
|
|
|
|
|
def test_new_filter_not_default(self):
|
|
|
|
"""
|
|
|
|
When creating a @is_default filter with existing non-default filters,
|
|
|
|
the new filter gets the flag
|
|
|
|
"""
|
2014-01-28 16:48:49 +00:00
|
|
|
self.build(
|
|
|
|
'ir.filters',
|
|
|
|
dict(name='a', user_id=self.USER_ID, model_id='ir.filters'),
|
|
|
|
dict(name='b', user_id=self.USER_ID, model_id='ir.filters'),
|
|
|
|
)
|
|
|
|
|
2012-05-22 11:53:30 +00:00
|
|
|
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='{}'),
|
|
|
|
])
|
|
|
|
|
|
|
|
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
|
|
|
|
"""
|
2014-01-28 16:48:49 +00:00
|
|
|
self.build(
|
|
|
|
'ir.filters',
|
|
|
|
dict(name='a', user_id=self.USER_ID, model_id='ir.filters'),
|
|
|
|
dict(name='b', is_default=True, user_id=self.USER_ID, model_id='ir.filters'),
|
|
|
|
)
|
|
|
|
|
2012-05-22 11:53:30 +00:00
|
|
|
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='{}'),
|
|
|
|
])
|
|
|
|
|
|
|
|
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
|
|
|
|
"""
|
2014-01-28 16:48:49 +00:00
|
|
|
self.build(
|
|
|
|
'ir.filters',
|
|
|
|
dict(name='a', user_id=self.USER_ID, model_id='ir.filters'),
|
|
|
|
dict(name='b', is_default=True, user_id=self.USER_ID, model_id='ir.filters'),
|
|
|
|
)
|
|
|
|
|
2012-05-22 11:53:30 +00:00
|
|
|
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='{}'),
|
|
|
|
])
|
2012-05-22 12:55:00 +00:00
|
|
|
|
2014-01-28 16:48:49 +00:00
|
|
|
class TestGlobalDefaults(FiltersCase):
|
2014-01-28 15:56:40 +00:00
|
|
|
def setUp(self):
|
|
|
|
super(TestGlobalDefaults, self).setUp()
|
2014-01-28 16:48:49 +00:00
|
|
|
self.USER = self.registry('res.users').name_search(self.cr, self.uid, 'demo')[0]
|
2014-01-28 15:56:40 +00:00
|
|
|
self.USER_ID = self.USER[0]
|
2012-05-22 12:55:00 +00:00
|
|
|
|
|
|
|
def test_new_filter_not_default(self):
|
|
|
|
"""
|
|
|
|
When creating a @is_default filter with existing non-default filters,
|
|
|
|
the new filter gets the flag
|
|
|
|
"""
|
2014-01-28 16:48:49 +00:00
|
|
|
self.build(
|
|
|
|
'ir.filters',
|
|
|
|
dict(name='a', user_id=False, model_id='ir.filters'),
|
|
|
|
dict(name='b', user_id=False, model_id='ir.filters'),
|
|
|
|
)
|
|
|
|
|
2012-05-22 12:55:00 +00:00
|
|
|
Filters = self.registry('ir.filters')
|
|
|
|
Filters.create_or_replace(self.cr, self.USER_ID, {
|
|
|
|
'name': 'c',
|
|
|
|
'model_id': 'ir.filters',
|
|
|
|
'user_id': False,
|
|
|
|
'is_default': True,
|
|
|
|
})
|
|
|
|
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='{}'),
|
|
|
|
])
|
|
|
|
|
|
|
|
def test_new_filter_existing_default(self):
|
|
|
|
"""
|
|
|
|
When creating a @is_default filter where an existing filter is already
|
|
|
|
@is_default, an error should be generated
|
|
|
|
"""
|
2014-01-28 16:48:49 +00:00
|
|
|
self.build(
|
|
|
|
'ir.filters',
|
|
|
|
dict(name='a', user_id=False, model_id='ir.filters'),
|
|
|
|
dict(name='b', is_default=True, user_id=False, model_id='ir.filters'),
|
|
|
|
)
|
|
|
|
|
2012-05-22 12:55:00 +00:00
|
|
|
Filters = self.registry('ir.filters')
|
|
|
|
with self.assertRaises(exceptions.Warning):
|
|
|
|
Filters.create_or_replace(self.cr, self.USER_ID, {
|
|
|
|
'name': 'c',
|
|
|
|
'model_id': 'ir.filters',
|
|
|
|
'user_id': False,
|
|
|
|
'is_default': True,
|
|
|
|
})
|
|
|
|
|
|
|
|
def test_update_filter_set_default(self):
|
|
|
|
"""
|
|
|
|
When updating an existing filter to @is_default, if an other filter
|
|
|
|
already has the flag an error should be generated
|
|
|
|
"""
|
2014-01-28 16:48:49 +00:00
|
|
|
self.build(
|
|
|
|
'ir.filters',
|
|
|
|
dict(name='a', user_id=False, model_id='ir.filters'),
|
|
|
|
dict(name='b', is_default=True, user_id=False, model_id='ir.filters'),
|
|
|
|
)
|
|
|
|
|
2012-05-22 12:55:00 +00:00
|
|
|
Filters = self.registry('ir.filters')
|
|
|
|
|
|
|
|
with self.assertRaises(exceptions.Warning):
|
|
|
|
Filters.create_or_replace(self.cr, self.USER_ID, {
|
|
|
|
'name': 'a',
|
|
|
|
'model_id': 'ir.filters',
|
|
|
|
'user_id': False,
|
|
|
|
'is_default': True,
|
|
|
|
})
|
2012-11-08 09:29:07 +00:00
|
|
|
|
|
|
|
def test_update_default_filter(self):
|
|
|
|
"""
|
|
|
|
Replacing the current default global filter should not generate any error
|
|
|
|
"""
|
2014-01-28 16:48:49 +00:00
|
|
|
self.build(
|
|
|
|
'ir.filters',
|
|
|
|
dict(name='a', user_id=False, model_id='ir.filters'),
|
|
|
|
dict(name='b', is_default=True, user_id=False, model_id='ir.filters'),
|
|
|
|
)
|
|
|
|
|
2012-11-08 09:29:07 +00:00
|
|
|
Filters = self.registry('ir.filters')
|
|
|
|
context_value = "{'some_key': True}"
|
|
|
|
Filters.create_or_replace(self.cr, self.USER_ID, {
|
|
|
|
'name': 'b',
|
|
|
|
'model_id': 'ir.filters',
|
|
|
|
'user_id': False,
|
|
|
|
'context': context_value,
|
|
|
|
'is_default': True,
|
|
|
|
})
|
|
|
|
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),
|
2012-12-17 14:30:29 +00:00
|
|
|
])
|