Removed some unused commented out code
--- a/README.rst
+++ b/README.rst
@@ -32,11 +32,9 @@
googleanalytics.id = UA-1010101-1
googleanalytics.account = Account name (i.e. data.gov.uk, see top level item at https://www.google.com/analytics)
- googleanalytics.username = googleaccount@gmail.com
- googleanalytics.password = googlepassword
ga-report.period = monthly
- Note that your password will be readable by system administrators on your server. Rather than use sensitive account details, it is suggested you give access to the GA account to a new Google account that you create just for this purpose.
+ Note that your credentials will be readable by system administrators on your server. Rather than use sensitive account details, it is suggested you give access to the GA account to a new Google account that you create just for this purpose.
3. Set up this extension's database tables using a paster command. (Ensure your CKAN pyenv is still activated, run the command from ``src/ckanext-ga-report``, alter the ``--config`` option to point to your site config file)::
--- a/ckanext/ga_report/download_analytics.py
+++ b/ckanext/ga_report/download_analytics.py
@@ -1,3 +1,4 @@
+import os
import logging
import datetime
@@ -94,9 +95,6 @@
'''Get data from GA for a given time period'''
start_date = start_date.strftime('%Y-%m-%d')
end_date = end_date.strftime('%Y-%m-%d')
- # url
- #query = 'ga:pagePath=~^%s,ga:pagePath=~^%s' % \
- # (PACKAGE_URL, self.resource_url_tag)
query = 'ga:pagePath=~/dataset/[a-z0-9-]+$'
metrics = 'ga:uniquePageviews'
sort = '-ga:uniquePageviews'
@@ -110,27 +108,19 @@
metrics=metrics,
sort=sort,
dimensions="ga:pagePath",
+ max_results=10000,
end_date=end_date).execute()
- import pprint
- pprint.pprint(results)
- print 'Total results: %s' % results.get('totalResults')
+ if os.getenv('DEBUG'):
+ import pprint
+ pprint.pprint(results)
+ print 'Total results: %s' % results.get('totalResults')
packages = []
for entry in results.get('rows'):
(loc,size,) = entry
- packages.append( ('http:/' + loc,size, '',) )
+ packages.append( ('http:/' + loc,size, '',) ) # Temporary hack
return dict(url=packages)
-
- def print_results(self, results):
- import pprint
- pprint.pprint(results)
- if results:
- print 'Profile: %s' % results.get('profileInfo').get('profileName')
-
- print 'Total Visits: %s' % results.get('rows', [[-1]])[0][0]
- else:
- print 'No results found'
def store(self, period_name, period_complete_day, data):
if 'url' in data:
--- a/ckanext/ga_report/ga_model.py
+++ b/ckanext/ga_report/ga_model.py
@@ -28,9 +28,10 @@
default=make_uuid),
Column('period_name', types.UnicodeText),
Column('period_complete_day', types.Integer),
- Column('visits', types.Integer),
+ Column('metric', types.UnicodeText),
+ Column('value', types.UnicodeText),
Column('url', types.UnicodeText),
- Column('next_page', types.UnicodeText),
+ Column('department_id', types.UnicodeText),
)
mapper(GA_Url, url_table)
@@ -71,21 +72,23 @@
if dataset:
publisher_groups = dataset.get_groups('publisher')
if publisher_groups:
- return publisher_groups[0].id
+ return publisher_groups[0].name
def update_url_stats(period_name, period_complete_day, url_data):
- table = get_table('ga_url')
for url, views, next_page in url_data:
url = _normalize_url(url)
department_id = _get_department_id_of_url(url)
+
# see if the row for this url & month is in the table already
- item = model.Session.query(GA_Url).filter(GA_Url.period_name==period_name).filter(GA_Url.url==url).first()
+ item = model.Session.query(GA_Url).\
+ filter(GA_Url.period_name==period_name).\
+ filter(GA_Url.url==url).\
+ filter(GA_Url.metric == 'Total views').first()
if item:
- item.period_name = period_complete_day=period_complete_day
- item.views = views
+ item.period_name = period_complete_day = period_complete_day
+ item.value = views
item.department_id = department_id
- item.next_page = next_page
model.Session.add(item)
else:
# create the row
@@ -93,10 +96,10 @@
'period_name': period_name,
'period_complete_day': period_complete_day,
'url': url,
- 'views': views,
- 'department_id': department_id,
- 'next_page': next_page}
- obj = GA_Url(**values)
- model.Session.add(obj)
+ 'value': views,
+ 'metric': 'Total views',
+ 'department_id': department_id
+ }
+ model.Session.add(GA_Url(**values))
model.Session.commit()
--- /dev/null
+++ b/ckanext/ga_report/tests/test_api.py
@@ -1,1 +1,38 @@
+import os
+import datetime
+from nose.tools import assert_equal
+from ckanext.ga_report.download_analytics import DownloadAnalytics
+from ckanext.ga_report.ga_auth import (init_service, get_profile_id)
+from ckanext.ga_report.ga_model import init_tables
+class TestAPI:
+
+ @classmethod
+ def setup_class(cls):
+ if not os.path.exists("token.dat") or not os.path.exists("credentials.json"):
+ print '*' * 60
+ print "Tests may not run without first having run the auth process"
+ print '*' * 60
+ init_tables()
+
+ @classmethod
+ def teardown_class(cls):
+ pass
+
+ def test_latest(self):
+ svc = init_service("token.dat", "credentials.json")
+ try:
+ downloader = DownloadAnalytics(svc, profile_id=get_profile_id(svc))
+ downloader.latest()
+ except Exception as e:
+ assert False, e
+
+
+ def test_since(self):
+ svc = init_service("token.dat", "credentials.json")
+ downloader = DownloadAnalytics(svc, profile_id=get_profile_id(svc))
+ try:
+ downloader.since_date(datetime.datetime.now() - datetime.timedelta(days=-30))
+ except Exception as e:
+ assert False, e
+