Beispiel #1
0
    def test_rows(self):
        def positive_int(n):
            if not n or n < 0:
                return
            return int(n)

        t = Table([
            Column('foo', visible=1),
            Column('bar', visible=0),
            Column('baz', type_cast=positive_int, average=100),
        ])

        data = [
            (9999, '1', 123),
            (123, '2', 1234),
            (0000, '3', 23),
            (123, '4', 123),
            (123, '5', 0),
        ]

        for d in data:
            t.add(d)

        self.assertEqual(len(t.rows), len(data))
        self.assertEqual(t.get('foo').min_row, (None, None))
        self.assertEqual(t.get('bar').max_row, (None, None))
        self.assertEqual(t.get('baz').min_row[0], 23)
        self.assertEqual(t.get('baz').max_row[0], 1234)

        rows = t.iter_visible()
        self.assertEqual(list(next(rows)), [t.columns[1], t.columns[0]])
        self.assertEqual(list(next(rows)), ['1', 9999])

        t.tag_rows()
        self.assertFalse(t.rows[-1].tags)
Beispiel #2
0
    def _get_geo(self, google_query, summary_metrics):
        t = google_query.get_table(
            params={
                'ids': 'ga:%s' % self.remote_id,
                'start-date': self.date_start,
                'end-date': self.date_end,
                'sort': '-ga:users',
                'max-results': '50',
            },
            dimensions=[
                Column('ga:country',
                       label='Country',
                       visible=1,
                       type_cast=_prune_abstract),
            ],
            metrics=[col.new() for col in summary_metrics] + [
                Column('ga:sessionsPerUser',
                       label='Sessions Per User',
                       threshold=0.0,
                       type_cast=float,
                       type_format=_format_float),
            ],
        )
        total = float(t.get('ga:users').sum)
        out = Table(columns=[col.new() for col in t.columns] + [
            Column(
                'users', label='Users', visible=0,
                type_format=_format_percent),
        ])
        out.get('ga:users')._threshold = None
        out.set_visible('users', 'ga:country')
        idx_users = t.column_to_index['ga:users']
        for row in t.rows[:5]:
            out.add(row.values + [row.values[idx_users] * 100.0 / total])

        out.tag_rows()

        return out