--- a/ckanext/ga_report/controller.py +++ b/ckanext/ga_report/controller.py @@ -34,7 +34,6 @@ filter(GA_Stat.period_name==month).\ order_by('GA_Stat.stat_name, GA_Stat.key').all() - response.headers['Content-disposition'] = 'attachment; filename=dgu_analytics_%s.csv' % (month) response.headers['Content-Type'] = "text/csv; charset=utf-8" writer = csv.writer(response) @@ -58,8 +57,21 @@ entries = model.Session.query(GA_Stat).\ filter(GA_Stat.stat_name=='Totals').\ - filter(GA_Stat.period_name==c.month).all() - c.global_totals = [(s.key, s.value) for s in entries ] + filter(GA_Stat.period_name==c.month).\ + order_by('ga_stat.key').all() + + c.global_totals = [] + for e in entries: + val = e.value + if e.key in ['Average time on site', 'Pages per visit', 'Percent new visits']: + val = "%.2f" % round(float(e.value), 2) + if e.key == 'Average time on site': + mins, secs = divmod(float(val), 60) + hours, mins = divmod(mins, 60) + val = '%02d:%02d:%02d (%s seconds) ' % (hours, mins, secs, val) + e.key = '%s *' % e.key + c.global_totals.append((e.key, val)) + keys = { 'Browser versions': 'browsers', @@ -87,6 +99,7 @@ """ def index(self): + # Get the month details by fetching distinct values and determining the # month names from the values. c.months = _month_details(GA_Url) @@ -100,10 +113,13 @@ select department_id, sum(pageviews::int) views, sum(visitors::int) visits from ga_url where department_id <> '' - and not url like '/publisher/%%' and period_name=%s group by department_id order by views desc limit 20; """ + # Add this back (before and period_name =%s) if you want to ignore publisher + # homepage views + # and not url like '/publisher/%%' + c.top_publishers = [] res = connection.execute(q, c.month) for row in res: