Fix display of publisher in Featured Dataset.
--- a/ckanext/ga_report/controller.py
+++ b/ckanext/ga_report/controller.py
@@ -309,8 +309,6 @@
select department_id, sum(pageviews::int) views, sum(visitors::int) visits
from ga_url
where department_id <> ''
- and package_id <> ''
- and url like '/dataset/%%'
and period_name=%s
group by department_id order by visits desc
"""
--- a/ckanext/ga_report/ga_model.py
+++ b/ckanext/ga_report/ga_model.py
@@ -116,7 +116,7 @@
return '/' + '/'.join(url.split('/')[2:])
-def _get_package_and_publisher(url):
+def _get_department_id_of_url(url):
# e.g. /dataset/fuel_prices
# e.g. /dataset/fuel_prices/resource/e63380d4
dataset_match = re.match('/dataset/([^/]+)(/.*)?', url)
@@ -126,13 +126,12 @@
if dataset:
publisher_groups = dataset.get_groups('publisher')
if publisher_groups:
- return dataset_ref,publisher_groups[0].name
- return dataset_ref, None
+ return publisher_groups[0].name
else:
publisher_match = re.match('/publisher/([^/]+)(/.*)?', url)
if publisher_match:
- return None, publisher_match.groups()[0]
- return None, None
+ return publisher_match.groups()[0]
+
def update_sitewide_stats(period_name, stat_name, data):
for k,v in data.iteritems():
@@ -184,28 +183,28 @@
def update_url_stats(period_name, period_complete_day, url_data):
-
+ '''
+ Given a list of urls and number of hits for each during a given period,
+ stores them in GA_Url under the period and recalculates the totals for
+ the 'All' period.
+ '''
for url, views, visitors in url_data:
- package, publisher = _get_package_and_publisher(url)
-
- item = model.Session.query(GA_Url).\
- filter(GA_Url.period_name==period_name).\
- filter(GA_Url.url==url).first()
- if item:
- item.pageviews = item.pageviews + views
- item.visitors = item.visitors + visitors
- model.Session.add(item)
- else:
- values = {'id': make_uuid(),
- 'period_name': period_name,
- 'period_complete_day': period_complete_day,
- 'url': url,
- 'pageviews': views,
- 'visitors': visitors,
- 'department_id': publisher,
- 'package_id': package
- }
- model.Session.add(GA_Url(**values))
+ department_id = _get_department_id_of_url(url)
+
+ package = None
+ if url.startswith('/dataset/'):
+ package = url[len('/dataset/'):]
+
+ values = {'id': make_uuid(),
+ 'period_name': period_name,
+ 'period_complete_day': period_complete_day,
+ 'url': url,
+ 'pageviews': views,
+ 'visitors': visitors,
+ 'department_id': department_id,
+ 'package_id': package
+ }
+ model.Session.add(GA_Url(**values))
model.Session.commit()
if package:
@@ -218,10 +217,9 @@
'url': url,
'pageviews': sum([int(e.pageviews) for e in entries]),
'visitors': sum([int(e.visitors) for e in entries]),
- 'department_id': publisher,
+ 'department_id': department_id,
'package_id': package
}
-
model.Session.add(GA_Url(**values))
model.Session.commit()
--- a/ckanext/ga_report/helpers.py
+++ b/ckanext/ga_report/helpers.py
@@ -60,7 +60,8 @@
if not dataset:
return None
dataset_dict = get_action('package_show')({'model': model,
- 'session': model.Session},
+ 'session': model.Session,
+ 'validate': False},
{'id':dataset.id})
return dataset_dict