Example #1
0
    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))
Example #2
0
    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))
Example #3
0
    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))
Example #4
0
    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))
Example #5
0
    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))
Example #6
0
    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))
Example #7
0
    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')
Example #8
0
 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)
Example #9
0
    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')
Example #10
0
# 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
Example #11
0
# 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)
Example #12
0
#
# 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)
Example #13
0
    def search(self, parameters):
        config = SearchConfig(table=FuncKeySchema,
                              columns=self.column_mapping,
                              default_sort='id')

        return SearchSystem(config).search_from_query(self.query(), parameters)