Support custom resource.download handlers
This commit is contained in:
parent
02dc6f22a5
commit
8d9ea6cd49
10
README.rst
10
README.rst
|
@ -67,6 +67,7 @@ Installation
|
|||
googleanalytics.track_events = false
|
||||
googleanalytics.fields = {}
|
||||
googleanalytics.enable_user_id = false
|
||||
ckanext.googleanalytics.download_handler = ckan.views.resource:download
|
||||
|
||||
``resource_prefix`` is an arbitrary identifier so that we can query
|
||||
for downloads in Google Analytics. It can theoretically be any
|
||||
|
@ -93,6 +94,15 @@ Installation
|
|||
This way metrics can be tracked for every logged in user. You can read more
|
||||
about this feature and its benefits `here <https://support.google.com/analytics/answer/3123662>`_.
|
||||
|
||||
When resource is downloaded, ckanext-googleanalytics posts event to
|
||||
GA and calls default download callback. If you are using CKAN>=2.9
|
||||
and some of your plugins redefines `resource.download`
|
||||
route(ckanext-cloudstorage, for example), you can specify which
|
||||
function must be called instead of `ckan.views.resource:download`
|
||||
via `ckanext.googleanalytics.download_handler` config variable. For ckanext-cloudstorage you can use::
|
||||
|
||||
ckanext.googleanalytics.download_handler = ckanext.cloudstorage.views:download
|
||||
|
||||
Domain Linking
|
||||
--------------
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ import logging
|
|||
import six
|
||||
|
||||
from flask import Blueprint
|
||||
from werkzeug.utils import import_string
|
||||
|
||||
import ckan.logic as logic
|
||||
import ckan.plugins.toolkit as tk
|
||||
|
@ -13,6 +14,8 @@ import ckan.views.resource as resource
|
|||
|
||||
from ckan.common import g
|
||||
|
||||
CONFIG_HANDLER_PATH = 'ckanext.googleanalytics.download_handler'
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
ga = Blueprint("google_analytics", "google_analytics")
|
||||
|
||||
|
@ -49,6 +52,17 @@ ga.add_url_rule(
|
|||
|
||||
|
||||
def download(id, resource_id, filename=None, package_type="dataset"):
|
||||
handler_path = tk.config.get(CONFIG_HANDLER_PATH)
|
||||
if handler_path:
|
||||
handler = import_string(handler_path, silent=True)
|
||||
else:
|
||||
handler = None
|
||||
log.warning((
|
||||
'Missing {} config option.'
|
||||
).format(CONFIG_HANDLER_PATH))
|
||||
if not handler:
|
||||
log.debug('Use default CKAN callback for resource.download')
|
||||
handler = resource.download
|
||||
_post_analytics(
|
||||
g.user,
|
||||
"CKAN Resource Download Request",
|
||||
|
@ -56,7 +70,9 @@ def download(id, resource_id, filename=None, package_type="dataset"):
|
|||
"Download",
|
||||
resource_id,
|
||||
)
|
||||
return resource.download(package_type, id, resource_id, filename)
|
||||
return handler(
|
||||
package_type=package_type, id=id,
|
||||
resource_id=resource_id, filename=filename)
|
||||
|
||||
|
||||
ga.add_url_rule(
|
||||
|
|
Loading…
Reference in New Issue