From 8a5c9c2cbfc3569c91c36c11f204147a0c2ea855 Mon Sep 17 00:00:00 2001 From: Mark Calvert Date: Fri, 19 Mar 2021 14:02:20 -0700 Subject: [PATCH 1/2] Added new CKAN configurable value for recent view days 'googleanalytics.recent_view_days' Default value is still 14 days This will allow modifying the packages recent view date day delta --- ckanext/googleanalytics/cli.py | 17 ++++++++++++----- ckanext/googleanalytics/commands.py | 15 ++++++++++----- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/ckanext/googleanalytics/cli.py b/ckanext/googleanalytics/cli.py index e8f4dc8..4634b68 100644 --- a/ckanext/googleanalytics/cli.py +++ b/ckanext/googleanalytics/cli.py @@ -15,6 +15,7 @@ import ckan.plugins.toolkit as tk log = logging.getLogger(__name__) PACKAGE_URL = "/dataset/" # XXX get from routes... DEFAULT_RESOURCE_URL_TAG = "/downloads/" +DEFAULT_RECENT_VIEW_DAYS = 14 RESOURCE_URL_REGEX = re.compile("/dataset/[a-z0-9-_]+/resource/([a-z0-9-_]+)") DATASET_EDIT_REGEX = re.compile("/dataset/edit/([a-z0-9-_]+)") @@ -73,6 +74,12 @@ def _resource_url_tag(): ) +def _recent_view_days(): + return tk.asint(tk.config.get( + "googleanalytics.recent_view_days", DEFAULT_RECENT_VIEW_DAYS + )) + + ############################################################################### # xxx # ############################################################################### @@ -129,10 +136,10 @@ def internal_save(packages_data, summary_date): SELECT sum(count) FROM tracking_summary t2 WHERE t1.url = t2.url - AND t2.tracking_date <= t1.tracking_date AND t2.tracking_date >= t1.tracking_date - 14 + AND t2.tracking_date <= t1.tracking_date AND t2.tracking_date >= t1.tracking_date - %s ) + t1.count WHERE t1.running_total = 0 AND tracking_type = 'resource';""" - engine.execute(sql) + engine.execute(sql, self.recent_view_days) # update summary totals for pages sql = """UPDATE tracking_summary t1 @@ -146,12 +153,12 @@ def internal_save(packages_data, summary_date): SELECT sum(count) FROM tracking_summary t2 WHERE t1.package_id = t2.package_id - AND t2.tracking_date <= t1.tracking_date AND t2.tracking_date >= t1.tracking_date - 14 + AND t2.tracking_date <= t1.tracking_date AND t2.tracking_date >= t1.tracking_date - %s ) + t1.count WHERE t1.running_total = 0 AND tracking_type = 'page' AND t1.package_id IS NOT NULL AND t1.package_id != '~~not~found~~';""" - engine.execute(sql) + engine.execute(sql, self.recent_view_days) def bulk_import(service, profile_id, start_date=None): @@ -322,7 +329,7 @@ def get_ga_data(service, profile_id, query_filter): {'identifier': {'recent':3, 'ever':6}} """ now = datetime.datetime.now() - recent_date = now - datetime.timedelta(14) + recent_date = now - datetime.timedelta(self.recent_view_days) recent_date = recent_date.strftime("%Y-%m-%d") floor_date = datetime.date(2005, 1, 1) packages = {} diff --git a/ckanext/googleanalytics/commands.py b/ckanext/googleanalytics/commands.py index 21789da..4e6f792 100644 --- a/ckanext/googleanalytics/commands.py +++ b/ckanext/googleanalytics/commands.py @@ -9,12 +9,14 @@ import time from pylons import config as pylonsconfig from ckan.lib.cli import CkanCommand import ckan.model as model +from ckan.plugins.toolkit import asint from . import dbutil log = logging.getLogger("ckanext.googleanalytics") PACKAGE_URL = "/dataset/" # XXX get from routes... DEFAULT_RESOURCE_URL_TAG = "/downloads/" +DEFAULT_RECENT_VIEW_DAYS = 14 RESOURCE_URL_REGEX = re.compile("/dataset/[a-z0-9-_]+/resource/([a-z0-9-_]+)") DATASET_EDIT_REGEX = re.compile("/dataset/edit/([a-z0-9-_]+)") @@ -63,6 +65,9 @@ class LoadAnalytics(CkanCommand): self.resource_url_tag = self.CONFIG.get( "googleanalytics_resource_prefix", DEFAULT_RESOURCE_URL_TAG ) + self.recent_view_days = asint(self.CONFIG.get( + "googleanalytics.recent_view_days", DEFAULT_RECENT_VIEW_DAYS + )) # funny dance we need to do to make sure we've got a # configured session @@ -121,10 +126,10 @@ class LoadAnalytics(CkanCommand): SELECT sum(count) FROM tracking_summary t2 WHERE t1.url = t2.url - AND t2.tracking_date <= t1.tracking_date AND t2.tracking_date >= t1.tracking_date - 14 + AND t2.tracking_date <= t1.tracking_date AND t2.tracking_date >= t1.tracking_date - %s ) + t1.count WHERE t1.running_total = 0 AND tracking_type = 'resource';""" - engine.execute(sql) + engine.execute(sql, self.recent_view_days) # update summary totals for pages sql = """UPDATE tracking_summary t1 @@ -138,12 +143,12 @@ class LoadAnalytics(CkanCommand): SELECT sum(count) FROM tracking_summary t2 WHERE t1.package_id = t2.package_id - AND t2.tracking_date <= t1.tracking_date AND t2.tracking_date >= t1.tracking_date - 14 + AND t2.tracking_date <= t1.tracking_date AND t2.tracking_date >= t1.tracking_date - %s ) + t1.count WHERE t1.running_total = 0 AND tracking_type = 'page' AND t1.package_id IS NOT NULL AND t1.package_id != '~~not~found~~';""" - engine.execute(sql) + engine.execute(sql, self.recent_view_days) def bulk_import(self): if len(self.args) == 3: @@ -345,7 +350,7 @@ class LoadAnalytics(CkanCommand): {'identifier': {'recent':3, 'ever':6}} """ now = datetime.datetime.now() - recent_date = now - datetime.timedelta(14) + recent_date = now - datetime.timedelta(self.recent_view_days) recent_date = recent_date.strftime("%Y-%m-%d") floor_date = datetime.date(2005, 1, 1) packages = {} From 2c0b03f8d7e3224999dcebfe1d440e10c0d2e058 Mon Sep 17 00:00:00 2001 From: Mark Calvert Date: Fri, 19 Mar 2021 14:57:12 -0700 Subject: [PATCH 2/2] Fixed copy and paste issue with `self.recent_view_days`. Updated to correct value `_recent_view_days()` --- ckanext/googleanalytics/cli.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ckanext/googleanalytics/cli.py b/ckanext/googleanalytics/cli.py index 4634b68..36f8cc4 100644 --- a/ckanext/googleanalytics/cli.py +++ b/ckanext/googleanalytics/cli.py @@ -139,7 +139,7 @@ def internal_save(packages_data, summary_date): AND t2.tracking_date <= t1.tracking_date AND t2.tracking_date >= t1.tracking_date - %s ) + t1.count WHERE t1.running_total = 0 AND tracking_type = 'resource';""" - engine.execute(sql, self.recent_view_days) + engine.execute(sql, _recent_view_days()) # update summary totals for pages sql = """UPDATE tracking_summary t1 @@ -158,7 +158,7 @@ def internal_save(packages_data, summary_date): WHERE t1.running_total = 0 AND tracking_type = 'page' AND t1.package_id IS NOT NULL AND t1.package_id != '~~not~found~~';""" - engine.execute(sql, self.recent_view_days) + engine.execute(sql, _recent_view_days()) def bulk_import(service, profile_id, start_date=None): @@ -329,7 +329,7 @@ def get_ga_data(service, profile_id, query_filter): {'identifier': {'recent':3, 'ever':6}} """ now = datetime.datetime.now() - recent_date = now - datetime.timedelta(self.recent_view_days) + recent_date = now - datetime.timedelta(_recent_view_days()) recent_date = recent_date.strftime("%Y-%m-%d") floor_date = datetime.date(2005, 1, 1) packages = {}