From: Ross Jones
Date: Thu, 25 Oct 2012 19:45:27 +0000
Subject: Nicer 404 message
X-Git-Url: https://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',
@@ -88,35 +99,40 @@
"""
def index(self):
- try:
- # Get the month details by fetching distinct values and determining the
- # month names from the values.
- c.months = _month_details(GA_Url)
- # 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])
+ # Get the month details by fetching distinct values and determining the
+ # month names from the values.
+ c.months = _month_details(GA_Url)
- 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;
- """
- c.top_publishers = []
- res = connection.execute(q, c.month)
- for row in res:
- c.top_publishers.append((model.Group.get(row[0]), row[1], row[2]))
- except Exception as e:
- raise e
+ # 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])
+
+ connection = model.Session.connection()
+ q = """
+ select department_id, sum(pageviews::int) views, sum(visitors::int) visits
+ from ga_url
+ where department_id <> ''
+ 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:
+ c.top_publishers.append((model.Group.get(row[0]), row[1], row[2]))
+
return render('ga_report/publisher/index.html')
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'
)
@@ -33,7 +33,7 @@
action='index'
)
map.connect(
- '/data/analytics_{month}.csv',
+ '/data/analytics/data_{month}.csv',
controller='ckanext.ga_report.controller:GaReport',
action='csv'
)
--- 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/publisher/read.html
+++ b/ckanext/ga_report/templates/ga_report/publisher/read.html
@@ -15,9 +15,8 @@
As well as showing the number of views within ${c.month_desc}, it will also show the
number of visitors that viewed each dataset.
-
The dataset list page for ${c.publisher.title} was viewed ${c.publisher_page_views} times during ${c.month_desc}
-
+ View the publishers leaderboard
--- 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.