--- a/ckanext/ga_report/controller.py +++ b/ckanext/ga_report/controller.py @@ -10,10 +10,10 @@ log = logging.getLogger('ckanext.ga-report') -def _get_month_name(str): +def _get_month_name(strdate): import calendar from time import strptime - d = strptime('2012-10', '%Y-%m') + d = strptime(strdate, '%Y-%m') return '%s %s' % (calendar.month_name[d.tm_mon], d.tm_year) @@ -21,7 +21,7 @@ months = [] vals = model.Session.query(cls.period_name).distinct().all() for m in vals: - months.append( (m[0], _get_month_name(m))) + months.append( (m[0], _get_month_name(m[0]))) return sorted(months, key=operator.itemgetter(0), reverse=True) @@ -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,7 +57,8 @@ entries = model.Session.query(GA_Stat).\ filter(GA_Stat.stat_name=='Totals').\ - filter(GA_Stat.period_name==c.month).all() + filter(GA_Stat.period_name==c.month).\ + order_by('ga_stat.key').all() c.global_totals = [(s.key, s.value) for s in entries ] keys = { @@ -87,6 +87,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) @@ -94,13 +95,12 @@ # Work out which month to show, based on query params of the first item c.month = request.params.get('month', c.months[0][0] if c.months else '') c.month_desc = ''.join([m[1] for m in c.months if m[0]==c.month]) - +# and not url like '/publisher/%%' connection = model.Session.connection() q = """ 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; """