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
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', )
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'), )
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'), )
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')