--- a/ckanext/ga_report/controller.py +++ b/ckanext/ga_report/controller.py @@ -40,6 +40,7 @@ entries = q.order_by('GA_Stat.period_name, GA_Stat.stat_name, GA_Stat.key').all() response.headers['Content-Type'] = "text/csv; charset=utf-8" + response.headers['Content-Disposition'] = str('attachment; filename=stats_%s.csv' % (month,)) writer = csv.writer(response) writer.writerow(["Period", "Statistic", "Key", "Value"]) @@ -75,9 +76,14 @@ mins, secs = divmod(float(val), 60) hours, mins = divmod(mins, 60) val = '%02d:%02d:%02d (%s seconds) ' % (hours, mins, secs, val) - key = '%s *' % key + if key == 'Percent new visits': + key = 'New visits' + val = "%s%%" % val if key in ['Bounces', 'Total pageviews']: val = int(val) + if key == 'Total pageviews': + key = 'Total page views' + return key, val c.global_totals = [] @@ -99,8 +105,10 @@ c.global_totals = sorted(c.global_totals, key=operator.itemgetter(0)) keys = { - 'Browser versions': 'browsers', - 'Operating Systems versions': 'os', + 'Browser versions': 'browser_versions', + 'Browsers': 'browsers', + 'Operating Systems versions': 'os_versions', + 'Operating Systems': 'os', 'Social sources': 'social_networks', 'Languages': 'languages', 'Country': 'country' @@ -143,9 +151,14 @@ entries.append((key,val,)) entries = sorted(entries, key=operator.itemgetter(1), reverse=True) - setattr(c, v, [(k,v) for k,v in entries ]) - - + def percent(num, total): + p = 100 * float(num)/float(total) + return "%.2f%%" % round(p, 2) + + # Get the total for each set of values and then set the value as + # a percentage of the total + total = sum([num for _,num in entries]) + setattr(c, v, [(k,percent(v,total)) for k,v in entries ]) return render('ga_report/site/index.html') @@ -156,12 +169,10 @@ the datasets associated with the publisher. """ def csv(self, month): - #q = model.Session.query(GA_Stat) - #if month != 'all': - # q = q.filter(GA_Stat.period_name==month) - #entries = q.order_by('GA_Stat.period_name, GA_Stat.stat_name, GA_Stat.key').all() + c.month = month if not month =='all' else '' response.headers['Content-Type'] = "text/csv; charset=utf-8" + response.headers['Content-Disposition'] = str('attachment; filename=publishers_%s.csv' % (month,)) writer = csv.writer(response) writer.writerow(["Publisher", "Views", "Visits", "Period Name"]) @@ -183,6 +194,8 @@ packages = self._get_packages(c.publisher) response.headers['Content-Type'] = "text/csv; charset=utf-8" + response.headers['Content-Disposition'] = \ + str('attachment; filename=%s_%s.csv' % (c.publisher.name, month,)) writer = csv.writer(response) writer.writerow(["Publisher", "Views", "Visits", "Period Name"])