From: David Read Date: Wed, 07 Nov 2012 15:06:53 +0000 Subject: Fix display of publisher in Featured Dataset. X-Git-Url: http://maxious.lambdacomplex.org/git/?p=ckanext-ga-report.git&a=commitdiff&h=d57ef52c79800397fb95a1cf1272c732cf60fb73 --- 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