Exemplo n.º 1
0
    def _get_ecommerce(self, google_query, interval_field, limit=10):
        t = google_query.get_table(
            params={
                'ids': 'ga:%s' % self.remote_id,
                #'start-date': self.previous_date_start, # Extra week
                'start-date': self.date_start,
                'end-date': self.date_end,
                'sort': '-{}'.format(interval_field),
            },
            dimensions=[
                Column(interval_field),
                Column('ga:productName', label="Product", visible=1),
            ],
            metrics=[
                Column('ga:itemRevenue',
                       label="Revenue",
                       type_cast=float,
                       type_format=_format_dollars,
                       visible=0,
                       threshold=0),
                Column('ga:itemQuantity',
                       label="Sales",
                       type_cast=int,
                       type_format=h.human_int),
            ],
        )
        t.sort(reverse=True)

        # Add a limit row
        sum_columns = t.column_to_index['ga:itemRevenue'], t.column_to_index[
            'ga:itemQuantity']
        if len(t.rows) > limit:
            extra, t.rows = t.rows[limit - 1:], t.rows[:limit - 1]
            values = extra[0].values[:]
            for row in extra[1:]:
                for col_idx in sum_columns:
                    values[col_idx] += row.values[col_idx]

            values[
                t.column_to_index['ga:productName']] = "(%s)" % h.format_int(
                    len(extra), u"{:,} other product")
            t.add(values)

        idx_sales = t.column_to_index['ga:itemQuantity']
        for row in t.rows:
            v = row.values[idx_sales]
            row.tag(h.format_int(v, u"{:,} Sale"))

        # Add total row
        #row = t.rows[-1].values[:]
        #row[t.column_to_index['ga:itemRevenue']] = t.get('ga:itemRevenue').sum
        #row[t.column_to_index['ga:productName']] = '(total)'
        #t.add(row)

        # Old work from extra week mode
        #split_table_delta(t, interval_field, 'ga:productName', 'ga:itemRevenue')

        return t
Exemplo n.º 2
0
    def get_preview(self):
        primary_metric = self.report.config.get('intro') or 'ga:pageviews'
        assert self.contexts, "ActivityConcatReport with no contexts"

        total_units, interval = None, None
        this_week, last_week = 0, 0
        for context in self.contexts:
            if not context.data or not context.tables.get('summary') or len(context.tables['summary'].rows) < 2:
                continue

            a, b = (r.get(primary_metric) for r in context.tables['summary'].rows[:2])
            this_week += a
            last_week += b
            total_units = context.data.get('total_units', total_units)
            interval = context.data.get('interval_label', interval)

        assert total_units, 'Failed to find valid context: %r' % self.contexts

        delta = (this_week / float(last_week or 1.0)) - 1
        return u"Your {number} combined sites had {this_week} this {interval} ({delta} over last {interval}).".format(
            number=len(self.contexts),
            this_week=h.format_int(this_week, total_units),
            delta=h.human_percent(delta, signed=True),
            interval=interval or 'week',
        )
Exemplo n.º 3
0
    def get_preview(self):
        if len(self.tables['summary'].rows) < 2:
            return u''

        this_week, last_week = self.data['total_current'], self.data['total_last']
        delta = (this_week / float(last_week or 1.0)) - 1
        return u"Your site had {this_week} this {interval} ({delta} over last {interval}).".format(
            this_week=h.format_int(this_week, self.data['total_units']),
            delta=h.human_percent(delta, signed=True),
            interval=self.data.get('interval_label', 'quarter'),
        )
Exemplo n.º 4
0
    def get_preview(self):
        if len(self.tables['summary'].rows) < 2:
            return u''

        primary_metric = self.report.config.get('intro') or 'ga:pageviews'
        this_week, last_week = (r.get(primary_metric) for r in self.tables['summary'].rows[:2])
        delta = (this_week / float(last_week or 1.0)) - 1
        return u"Your site had {this_week} this {interval} ({delta} over last {interval}).".format(
            this_week=h.format_int(this_week, self.data['total_units']),
            delta=h.human_percent(delta, signed=True),
            interval=self.data.get('interval_label', 'week'),
        )
Exemplo n.º 5
0
 def test_format_int(self):
     self.assertEqual(h.format_int(123, u'{:,} view'), u'123 views')
     self.assertEqual(h.format_int(1234, u'{:,} view'), u'1,234 views')
     self.assertEqual(h.format_int(1, u'{:,} view'), u'1 view')