def test_encode_filter_interface(self):
        """Test that filter interface is serialized properly."""
        self.maxDiff = 10000
        report_config = ReportConfiguration([
            ColumnConfiguration(column='name', format='text'),
            ColumnConfiguration(column='date',
                                format='us_date',
                                filter_interface='date_range',
                                filter_display='Date'),
            ColumnConfiguration(column='locations',
                                format='city_state_list',
                                filter_interface='city_state',
                                filter_display='Locations',
                                help=True),
            ColumnConfiguration(column='tags',
                                format='comma_sep',
                                filter_interface='search_multiselect',
                                filter_display='Tags',
                                help=True),
            ColumnConfiguration(column='partner',
                                format='text',
                                filter_interface='search_multiselect',
                                filter_display='Partners',
                                help=True),
        ])

        self.assertEquals(
            {
                'filters': [
                    {
                        'display': 'Date',
                        'filter': 'date',
                        'interface_type': 'date_range',
                    },
                    {
                        'display': 'Locations',
                        'filter': 'locations',
                        'interface_type': 'city_state',
                    },
                    {
                        'display': 'Tags',
                        'filter': 'tags',
                        'interface_type': 'search_multiselect',
                    },
                    {
                        'display': 'Partners',
                        'filter': 'partner',
                        'interface_type': 'search_multiselect',
                    },
                ],
                'help': {
                    'partner': True,
                    'tags': True,
                    'locations': True,
                },
            }, self.driver.encode_filter_interface(report_config))
Exemple #2
0
    def test_build_config(self):
        """
        Test building a report configuration from the DB.

        Here, we expect that an appropriate format should be selected for each
        of the columns configured *except* when that column is marked as
        ``filter_only```. For those columns, we expect format to be ``''``.
        """
        expected_config = ReportConfiguration(columns=[
            ColumnConfiguration(column='date',
                                alias='Date',
                                format='us_datetime',
                                filter_interface='date_range',
                                filter_display='Date'),
            ColumnConfiguration(column='',
                                alias='Contact Location',
                                format=None,
                                help=True,
                                filter_interface=u'city_state',
                                filter_display=u'Contact Location'),
            ColumnConfiguration(column='locations',
                                alias='Location',
                                format='city_state_list',
                                filter_interface='city_state',
                                filter_display='Location',
                                help=True),
            ColumnConfiguration(column='tags',
                                alias='Tags',
                                format='tags_list',
                                filter_interface='tags',
                                filter_display='Tags',
                                help=True),
            ColumnConfiguration(column='partner',
                                alias='Partners',
                                format='text',
                                filter_interface='search_multiselect',
                                filter_display='Partners',
                                help=True),
            ColumnConfiguration(column='name', alias='Name', format='text'),
            ColumnConfiguration(column='email', alias='Email', format='text'),
            ColumnConfiguration(column='phone', alias='Phone', format='text'),
            ColumnConfiguration(column='notes', alias='Notes', format='text'),
        ])
        config_model = self.dynamic_models['configuration']['contacts']
        # Add a filter_only column.
        ConfigurationColumnFactory.create(
            alias='Contact Location',
            filter_interface_type='city_state',
            filter_interface_display='Contact Location',
            filter_only=True,
            configuration=config_model,
            multi_value_expansion=False,
            has_help=True)
        self.maxDiff = 10000
        self.assertEqual(expected_config.columns,
                         config_model.build_configuration().columns)
Exemple #3
0
 def build_configuration(self):
     return ReportConfiguration([
         ColumnConfiguration(column=cm.column_name,
                             alias=cm.alias,
                             format=cm.output_format,
                             filter_interface=cm.filter_interface_type,
                             filter_display=cm.filter_interface_display,
                             help=cm.has_help)
         for cm in (self.configurationcolumn_set.filter(
             is_active=True).order_by('order'))
     ])
Exemple #4
0
    def setUp(self):
        super(TestReportConfig, self).setUp()
        # Realistic contacts report configuration
        self.contacts_config = ReportConfiguration(columns=[
            ColumnConfiguration(column='name', format='text'),
            ColumnConfiguration(column='partner',
                                format='text',
                                filter_interface='search_multiselect',
                                filter_display='Partners'),
            ColumnConfiguration(column='email', format='text'),
            ColumnConfiguration(column='phone', format='text'),
            ColumnConfiguration(column='date',
                                format='us_date',
                                filter_interface='date_range',
                                filter_display='Date'),
            ColumnConfiguration(column='notes', format='text'),
            ColumnConfiguration(column='locations',
                                format='city_state_list',
                                filter_interface='city_state',
                                filter_display='Locations'),
            ColumnConfiguration(column='tags',
                                format='comma_sep',
                                filter_interface='search_multiselect',
                                filter_display='Tags'),
        ])

        # Realistic extracted contact records.
        self.test_data = [{
            'date':
            datetime(2015, 10, 3),
            'email':
            u'*****@*****.**',
            'locations': [{
                'city': u'Indianapolis',
                'state': u'IN'
            }, {
                'city': u'Chicago',
                'state': u'IL'
            }],
            'name':
            u'john adams',
            'notes':
            u'',
            'partner':
            u'aaa',
            'phone':
            u'84104391',
            'tags': [u'east']
        }, {
            'date':
            datetime(2015, 9, 30),
            'email':
            u'*****@*****.**',
            'locations': [
                {
                    'city': u'Los Angeles',
                    'state': u'CA'
                },
            ],
            'name':
            u'Sue Baxter',
            'notes':
            u'',
            'partner':
            u'bbb',
            'phone':
            u'84104391',
            'tags': [u'west']
        }]
Exemple #5
0
class TestReportConfig(TestCase):
    def setUp(self):
        super(TestReportConfig, self).setUp()
        # Realistic contacts report configuration
        self.contacts_config = ReportConfiguration(columns=[
            ColumnConfiguration(column='name', format='text'),
            ColumnConfiguration(column='partner',
                                format='text',
                                filter_interface='search_multiselect',
                                filter_display='Partners'),
            ColumnConfiguration(column='email', format='text'),
            ColumnConfiguration(column='phone', format='text'),
            ColumnConfiguration(column='date',
                                format='us_date',
                                filter_interface='date_range',
                                filter_display='Date'),
            ColumnConfiguration(column='notes', format='text'),
            ColumnConfiguration(column='locations',
                                format='city_state_list',
                                filter_interface='city_state',
                                filter_display='Locations'),
            ColumnConfiguration(column='tags',
                                format='comma_sep',
                                filter_interface='search_multiselect',
                                filter_display='Tags'),
        ])

        # Realistic extracted contact records.
        self.test_data = [{
            'date':
            datetime(2015, 10, 3),
            'email':
            u'*****@*****.**',
            'locations': [{
                'city': u'Indianapolis',
                'state': u'IN'
            }, {
                'city': u'Chicago',
                'state': u'IL'
            }],
            'name':
            u'john adams',
            'notes':
            u'',
            'partner':
            u'aaa',
            'phone':
            u'84104391',
            'tags': [u'east']
        }, {
            'date':
            datetime(2015, 9, 30),
            'email':
            u'*****@*****.**',
            'locations': [
                {
                    'city': u'Los Angeles',
                    'state': u'CA'
                },
            ],
            'name':
            u'Sue Baxter',
            'notes':
            u'',
            'partner':
            u'bbb',
            'phone':
            u'84104391',
            'tags': [u'west']
        }]

    def test_header(self):
        """Test that the formatter can get an ordered list of columns."""
        header = self.contacts_config.get_header()
        self.assertEqual([
            'name', 'partner', 'email', 'phone', 'date', 'notes', 'locations',
            'tags'
        ], header)

    def test_records(self):
        """Test that records are formatted properly."""
        self.maxDiff = 10000
        rec = self.contacts_config.format_record(self.test_data[0], [])
        self.assertEqual(
            {
                'name': 'john adams',
                'partner': 'aaa',
                'email': '*****@*****.**',
                'phone': '84104391',
                'date': '10/03/2015',
                'notes': '',
                'locations': "Indianapolis, IN, Chicago, IL",
                'tags': 'east',
            }, rec)
        rec = self.contacts_config.format_record(self.test_data[1], [])
        self.assertEqual(
            {
                'name': 'Sue Baxter',
                'partner': 'bbb',
                'email': '*****@*****.**',
                'phone': '84104391',
                'date': '09/30/2015',
                'notes': '',
                'locations': 'Los Angeles, CA',
                'tags': 'west',
            }, rec)

    def test_formatting_limit_columns(self):
        """Test that records contain only desired columns."""
        self.maxDiff = 10000
        rec = self.contacts_config.format_record(self.test_data[0],
                                                 ['partner', 'name'])
        self.assertEqual({
            'name': 'john adams',
            'partner': 'aaa',
        }, rec)

    def test_formatting_ignores_invalid_columns(self):
        """Test that records contain only desired and valid columns."""
        self.maxDiff = 10000
        rec = self.contacts_config.format_record(self.test_data[0],
                                                 ['partner', 'name', 'ZZZZZ'])
        self.assertEqual({
            'name': 'john adams',
            'partner': 'aaa',
        }, rec)
    def setUp(self):
        super(TestReportConfig, self).setUp()
        # Realistic contacts report configuration
        self.contacts_config = ReportConfiguration(
            columns=[
                ColumnConfiguration(
                    column='name',
                    format='text'),
                ColumnConfiguration(
                    column='partner',
                    format='text',
                    filter_interface='search_multiselect',
                    filter_display='Partners'),
                ColumnConfiguration(
                    column='email',
                    format='text'),
                ColumnConfiguration(
                    column='phone',
                    format='text'),
                ColumnConfiguration(
                    column='date',
                    format='us_date',
                    filter_interface='date_range',
                    filter_display='Date'),
                ColumnConfiguration(
                    column='notes',
                    format='text'),
                ColumnConfiguration(
                    column='locations',
                    format='city_state_list',
                    filter_interface='city_state',
                    filter_display='Locations'),
                ColumnConfiguration(
                    column='tags',
                    format='comma_sep',
                    filter_interface='search_multiselect',
                    filter_display='Tags'),
            ])

        # Realistic extracted contact records.
        self.test_data = [
            {
                'date': datetime(2015, 10, 3),
                'email': u'*****@*****.**',
                'locations': [
                    {'city': u'Indianapolis', 'state': u'IN'},
                    {'city': u'Chicago', 'state': u'IL'}
                ],
                'name': u'john adams',
                'notes': u'',
                'partner': u'aaa',
                'phone': u'84104391',
                'tags': [u'east']
            },
            {
                'date': datetime(2015, 9, 30),
                'email': u'*****@*****.**',
                'locations': [
                    {'city': u'Los Angeles', 'state': u'CA'},
                ],
                'name': u'Sue Baxter',
                'notes': u'',
                'partner': u'bbb',
                'phone': u'84104391',
                'tags': [u'west']
            }
        ]
class TestReportConfig(TestCase):
    def setUp(self):
        super(TestReportConfig, self).setUp()
        # Realistic contacts report configuration
        self.contacts_config = ReportConfiguration(
            columns=[
                ColumnConfiguration(
                    column='name',
                    format='text'),
                ColumnConfiguration(
                    column='partner',
                    format='text',
                    filter_interface='search_multiselect',
                    filter_display='Partners'),
                ColumnConfiguration(
                    column='email',
                    format='text'),
                ColumnConfiguration(
                    column='phone',
                    format='text'),
                ColumnConfiguration(
                    column='date',
                    format='us_date',
                    filter_interface='date_range',
                    filter_display='Date'),
                ColumnConfiguration(
                    column='notes',
                    format='text'),
                ColumnConfiguration(
                    column='locations',
                    format='city_state_list',
                    filter_interface='city_state',
                    filter_display='Locations'),
                ColumnConfiguration(
                    column='tags',
                    format='comma_sep',
                    filter_interface='search_multiselect',
                    filter_display='Tags'),
            ])

        # Realistic extracted contact records.
        self.test_data = [
            {
                'date': datetime(2015, 10, 3),
                'email': u'*****@*****.**',
                'locations': [
                    {'city': u'Indianapolis', 'state': u'IN'},
                    {'city': u'Chicago', 'state': u'IL'}
                ],
                'name': u'john adams',
                'notes': u'',
                'partner': u'aaa',
                'phone': u'84104391',
                'tags': [u'east']
            },
            {
                'date': datetime(2015, 9, 30),
                'email': u'*****@*****.**',
                'locations': [
                    {'city': u'Los Angeles', 'state': u'CA'},
                ],
                'name': u'Sue Baxter',
                'notes': u'',
                'partner': u'bbb',
                'phone': u'84104391',
                'tags': [u'west']
            }
        ]

    def test_header(self):
        """Test that the formatter can get an ordered list of columns."""
        header = self.contacts_config.get_header()
        self.assertEqual([
            'name', 'partner', 'email', 'phone', 'date', 'notes',
            'locations', 'tags'],
            header)

    def test_records(self):
        """Test that records are formatted properly."""
        self.maxDiff = 10000
        rec = self.contacts_config.format_record(self.test_data[0], [])
        self.assertEqual({
            'name': 'john adams',
            'partner': 'aaa',
            'email': '*****@*****.**',
            'phone': '84104391',
            'date': '10/03/2015',
            'notes': '',
            'locations': "Indianapolis, IN, Chicago, IL",
            'tags': 'east',
            }, rec)
        rec = self.contacts_config.format_record(self.test_data[1], [])
        self.assertEqual({
            'name': 'Sue Baxter',
            'partner': 'bbb',
            'email': '*****@*****.**',
            'phone': '84104391',
            'date': '09/30/2015',
            'notes': '',
            'locations': 'Los Angeles, CA',
            'tags': 'west',
            }, rec)

    def test_formatting_limit_columns(self):
        """Test that records contain only desired columns."""
        self.maxDiff = 10000
        rec = self.contacts_config.format_record(
            self.test_data[0],
            ['partner', 'name'])
        self.assertEqual({
            'name': 'john adams',
            'partner': 'aaa',
            }, rec)

    def test_formatting_ignores_invalid_columns(self):
        """Test that records contain only desired and valid columns."""
        self.maxDiff = 10000
        rec = self.contacts_config.format_record(
            self.test_data[0],
            ['partner', 'name', 'ZZZZZ'])
        self.assertEqual({
            'name': 'john adams',
            'partner': 'aaa',
            }, rec)