def test_given_list_of_search_columns_then_returns_only_columns_for_searching(self): table = Mock() column = Mock() config = SearchConfig(table=table, columns={'column1': column, 'column2': Mock()}, search=['column1'], default_sort='column1') result = config.columns_for_searching() assert_that(result, contains(column))
def test_given_list_of_columns_then_returns_all_columns_for_searching(self): table = Mock() column1 = Mock() column2 = Mock() config = SearchConfig(table=table, columns={'column1': column1, 'column2': column2}, default_sort='column1') result = config.columns_for_searching() assert_that(result, contains(column1, column2))
def test_given_list_of_sort_columns_then_returns_columns_for_sorting(self): table = Mock() column = Mock() column2 = Mock() config = SearchConfig(table=table, columns={'column': column, 'column2': column2, 'column3': Mock()}, sort=['column', 'column2'], default_sort='column') result = config.column_for_sorting('column2') assert_that(result, equal_to(column2))
def test_given_list_of_columns_then_returns_all_columns_for_searching( self): table = Mock() column1 = Mock() column2 = Mock() config = SearchConfig(table=table, columns={ 'column1': column1, 'column2': column2 }, default_sort='column1') result = config.columns_for_searching() assert_that(result, contains(column1, column2))
def test_given_list_of_sort_columns_then_returns_columns_for_sorting(self): table = Mock() column = Mock() column2 = Mock() config = SearchConfig(table=table, columns={ 'column': column, 'column2': column2, 'column3': Mock() }, sort=['column', 'column2'], default_sort='column') result = config.column_for_sorting('column2') assert_that(result, equal_to(column2))
def test_given_list_of_search_columns_then_returns_only_columns_for_searching( self): table = Mock() column = Mock() config = SearchConfig(table=table, columns={ 'column1': column, 'column2': Mock() }, search=['column1'], default_sort='column1') result = config.columns_for_searching() assert_that(result, contains(column))
def test_given_no_columns_when_sorting_then_raises_error(self): table = Mock() config = SearchConfig(table=table, columns={}, default_sort='nothing') self.assertRaisesRegexp( InvalidParametersError, "Invalid parameters: ordering column 'toto' does not exist", config.column_for_sorting, 'toto')
def setUp(self): DAOTestCase.setUp(self) self.config = SearchConfig(table=UserFeatures, columns={ 'lastname': UserFeatures.lastname, 'firstname': UserFeatures.firstname, 'simultcalls': UserFeatures.simultcalls }, default_sort='lastname') self.search = SearchSystem(self.config)
def test_given_sort_column_does_not_exist_when_sorting_then_raises_error( self): table = Mock() config = SearchConfig(table=table, columns={'column1': 'column1'}, default_sort='column1') self.assertRaisesRegexp( InvalidParametersError, "Invalid parameters: ordering column 'column2' does not exist", config.column_for_sorting, 'column2')
# This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/> from xivo_dao.alchemy.extension import Extension from xivo_dao.alchemy.context import Context from xivo_dao.data_handler.utils.search import SearchSystem from xivo_dao.data_handler.utils.search import SearchConfig config = SearchConfig(table=Extension, columns={ 'exten': Extension.exten, 'context': Extension.context }, default_sort='exten') class ExtensionSearchSystem(SearchSystem): def search_from_query(self, query, parameters=None): query = self._apply_type_filter(query, parameters) return SearchSystem.search_from_query(self, query, parameters) def _apply_type_filter(self, query, parameters=None): if parameters and 'type' in parameters: return (query.join(Context, Extension.context == Context.name).filter( Context.contexttype == parameters['type'])) return query
# it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/> from xivo_dao.alchemy.userfeatures import UserFeatures from xivo_dao.data_handler.utils.search import SearchSystem from xivo_dao.data_handler.utils.search import SearchConfig config = SearchConfig( table=UserFeatures, columns={ 'firstname': UserFeatures.firstname, 'lastname': UserFeatures.lastname, 'fullname': (UserFeatures.firstname + " " + UserFeatures.lastname), 'caller_id': UserFeatures.callerid, 'description': UserFeatures.description, 'userfield': UserFeatures.userfield }, search=['fullname', 'caller_id', 'description', 'userfield'], default_sort='lastname') user_search = SearchSystem(config)
# # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/> from xivo_dao.alchemy.voicemail import Voicemail from xivo_dao.data_handler.utils.search import SearchSystem from xivo_dao.data_handler.utils.search import SearchConfig config = SearchConfig(table=Voicemail, columns={'name': Voicemail.fullname, 'number': Voicemail.mailbox, 'email': Voicemail.email, 'context': Voicemail.context, 'language': Voicemail.language, 'timezone': Voicemail.tz}, search=['name', 'number', 'email'], default_sort='number') voicemail_search = SearchSystem(config)
def search(self, parameters): config = SearchConfig(table=FuncKeySchema, columns=self.column_mapping, default_sort='id') return SearchSystem(config).search_from_query(self.query(), parameters)