From: Ross Jones Date: Thu, 25 Oct 2012 19:45:27 +0000 Subject: Nicer 404 message X-Git-Url: http://maxious.lambdacomplex.org/git/?p=ckanext-ga-report.git&a=commitdiff&h=884b8ef07990ca928194f0bc78e1b8da1e441fb4 --- Nicer 404 message --- --- a/ckanext/ga_report/controller.py +++ b/ckanext/ga_report/controller.py @@ -1,6 +1,6 @@ import logging import operator -from ckan.lib.base import BaseController, c, render, request, response +from ckan.lib.base import BaseController, c, render, request, response, abort import sqlalchemy from sqlalchemy import func, cast, Integer @@ -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) @@ -60,7 +59,19 @@ filter(GA_Stat.stat_name=='Totals').\ filter(GA_Stat.period_name==c.month).\ order_by('ga_stat.key').all() - c.global_totals = [(s.key, s.value) for s in entries ] + + 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', @@ -102,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: @@ -115,7 +129,10 @@ def read(self, id): + c.publisher = model.Group.get(id) + if not c.publisher: + abort(404, 'A publisher with that name could not be found') c.top_packages = [] # package, dataset_views in c.top_packages # Get the month details by fetching distinct values and determining the --- a/ckanext/ga_report/plugin.py +++ b/ckanext/ga_report/plugin.py @@ -18,7 +18,7 @@ def after_map(self, map): map.connect( - '/data/analytics/publisher/', + '/data/analytics/publisher', controller='ckanext.ga_report.controller:GaPublisherReport', action='index' ) --- a/ckanext/ga_report/templates/ga_report/publisher/index.html +++ b/ckanext/ga_report/templates/ga_report/publisher/index.html @@ -8,6 +8,7 @@
  • Publishers

    +

    The table shows the top 20 publishers as recorded by page views of datasets owned by that publisher, and the number of visits to each publisher's home page.

  • --- a/ckanext/ga_report/templates/ga_report/site/index.html +++ b/ckanext/ga_report/templates/ga_report/site/index.html @@ -50,6 +50,8 @@ + +

    * Values are rounded up to 2 decimal places.