diff --git a/ckanext/odsh/controller.py b/ckanext/odsh/controller.py index 5913c930e1889ee836e72ec8faac9499309d8f76..119d758250fce6182f9991efe6a7280b3a3a0654 100644 --- a/ckanext/odsh/controller.py +++ b/ckanext/odsh/controller.py @@ -12,6 +12,7 @@ import logging import matomo import ckan.logic as logic from ckan.common import c, request, config +import hashlib abort = base.abort log = logging.getLogger(__name__) @@ -64,25 +65,6 @@ class OdshPackageController(PackageController): pass class MamotoApiController(ApiController): - - def _post_matomo(self, user, request_obj_type, request_function, request_id): - # if config.get('googleanalytics.id'): - data_dict = { - "siteid": 1, - "rec": 1, - # "tid": config.get('googleanalytics.id'), - # "cid": hashlib.md5(user).hexdigest(), - # # customer id should be obfuscated - # "t": "event", - # "dh": c.environ['HTTP_HOST'], - # "dp": c.environ['PATH_INFO'], - # "dr": c.environ.get('HTTP_REFERER', ''), - # "ec": "CKAN API Request", - # "ea": request_obj_type+request_function, - # "el": request_id, - } - # plugin.GoogleAnalyticsPlugin.analytics_queue.put(data_dict) - def action(self, logic_function, ver=None): try: function = logic.get_action(logic_function) @@ -95,47 +77,21 @@ class MamotoApiController(ApiController): id = request_data['q'] if 'query' in request_data: id = request_data['query'] - # self._post_matomo(c.user, logic_function, '', id) - userid=hashlib.md5(user).hexdigest() + userid=None + if c.user: + userid=hashlib.md5(c.user).hexdigest()[:16] matomo.create_matomo_request(userid) + else: + matomo.create_matomo_request() + except Exception, e: - log.debug(e) - pass + log.error(e) - return ApiController.action(self, logic_function, ver) - - # def list(self, ver=None, register=None, subregister=None, id=None): - - # def show(self, ver=None, register=None, subregister=None, - # id=None, id2=None): - # self._post_analytics(c.user, - # register + - # ("_"+str(subregister) if subregister else ""), - # "show", - # id) - # return ApiController.show(self, ver, register, subregister, id, id2) - - # def create(self, ver=None, register=None, subregister=None, - # id=None, id2=None): - - - # def update(self, ver=None, register=None, subregister=None, - # id=None, id2=None): - - # def delete(self, ver=None, register=None, subregister=None, - # id=None, id2=None): - - # def search(self, ver=None, register=None): - -class MatomoFeedController(FeedController): - def custom(self): - matomo.create_matomo_request() - return FeedController.custom(self) - class OdshFeedController(FeedController): def custom(self): + matomo.create_matomo_request() extra_fields=['ext_startdate', 'ext_enddate', 'ext_bbox', 'ext_prev_extent'] q = request.params.get('q', u'') fq = '' diff --git a/ckanext/odsh/helpers.py b/ckanext/odsh/helpers.py index 6234d7eeb27383c6f03db5e834d6afe540e5fc90..fc8a830023bd4b132573e65b06f915e54713ab89 100644 --- a/ckanext/odsh/helpers.py +++ b/ckanext/odsh/helpers.py @@ -139,6 +139,11 @@ def odsh_upload_known_formats(): value = toolkit.aslist(value) return value +def odsh_tracking_id(): + return config.get('ckanext.odsh.matomo_id') + +def odsh_tracking_url(): + return config.get('ckanext.odsh.matomo_url') def odsh_encodeurl(url): return urllib.quote(url, safe='') diff --git a/ckanext/odsh/matomo.py b/ckanext/odsh/matomo.py index 48ec3c04d9415042a4926c02437deadf9023ac2d..a3fd6fc1ae16564f5ad5eeed7de94e04f5d2c5a3 100644 --- a/ckanext/odsh/matomo.py +++ b/ckanext/odsh/matomo.py @@ -2,14 +2,10 @@ from piwikapi.tracking import PiwikTracker from piwikapi.tests.request import FakeRequest from ckan.common import c, request from pylons import config - -# def get_request_url_with_params(): -# if request.GET: +import logging +from ckan.plugins.toolkit import enqueue_job def create_matomo_request(userId=None): - - # print(request.url) - headers = { 'HTTP_USER_AGENT': request.headers.get('User-Agent'), 'REMOTE_ADDR': request.headers.get('Host'), @@ -21,12 +17,8 @@ def create_matomo_request(userId=None): 'HTTPS': False, } fakerequest = FakeRequest(headers) - piwiktracker = PiwikTracker('1', fakerequest) - piwiktracker.set_api_url('http://192.168.178.45/piwik.php') + piwiktracker =PiwikTracker(config.get('ckanext.odsh.matomo_id'), fakerequest) + piwiktracker.set_api_url(config.get('ckanext.odsh.matomo_url')) if userId: piwiktracker.set_visitor_id(userId) - # piwiktracker.set_ip(headers['REMOTE_ADDR']) # Optional, to override the IP - # piwiktracker.set_token_auth(PIWIK_TOKEN_AUTH) # Optional, to override the IP - # print(piwiktracker.do_track_page_view('My Page Title')) - # print(c.environ['PATH_INFO']) - piwiktracker.do_track_page_view(request.path_qs) \ No newline at end of file + enqueue_job(piwiktracker.do_track_page_view,[request.path_qs], queue='tracking') diff --git a/ckanext/odsh/plugin.py b/ckanext/odsh/plugin.py index 0381c327a2605ac066a0658b7bde63bebc9d713d..9b5a7a81e27f6d285341c9bc293677724556fd19 100644 --- a/ckanext/odsh/plugin.py +++ b/ckanext/odsh/plugin.py @@ -111,7 +111,9 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm 'odsh_extract_error_new': odsh_helpers.odsh_extract_error_new, 'odsh_extract_value_from_extras': odsh_helpers.odsh_extract_value_from_extras, 'odsh_create_checksum': odsh_helpers.odsh_create_checksum, - 'presorted_license_options': odsh_helpers.presorted_license_options + 'presorted_license_options': odsh_helpers.presorted_license_options, + 'odsh_tracking_id': odsh_helpers.odsh_tracking_id, + 'odsh_tracking_url': odsh_helpers.odsh_tracking_url } def after_map(self, map): @@ -128,7 +130,7 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm # /api ver 3 or none with matomo GET_POST = dict(method=['GET', 'POST']) with SubMapper(map, controller='ckanext.odsh.controller:MamotoApiController', path_prefix='/api{ver:/3|}', ver='/3') as m: - m.connect('/action2/{logic_function}', action='action', conditions=GET_POST) + m.connect('/action/{logic_function}', action='action', conditions=GET_POST) with SubMapper(map, controller='ckanext.odsh.controller:OdshFeedController') as m: m.connect('/feeds/custom.atom', action='custom') diff --git a/ckanext/odsh/templates/base.html b/ckanext/odsh/templates/base.html index e7d5bc3853bb5def3f75d03b32aa276bf14a6de2..5962c139dbd823b28c0289e0794ea1e724b245c9 100644 --- a/ckanext/odsh/templates/base.html +++ b/ckanext/odsh/templates/base.html @@ -10,8 +10,8 @@ {% block head_extras %} {{ super() }} -{% set matomo_url = 'https://phpefi.schleswig-holstein.de/gsb_analytics/'%} -{% set matomo_id = 3%} +{% set matomo_url = h.odsh_tracking_url()%} +{% set matomo_id = h.odsh_tracking_id()%} <!-- Matomo --> <script type="text/javascript"> var _paq = _paq || []; @@ -19,11 +19,10 @@ _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { - var u="{{matomo_url}}"; - _paq.push(['setTrackerUrl', u+'piwik.php']); + _paq.push(['setTrackerUrl', '{{matomo_url}}']); _paq.push(['setSiteId', '{{matomo_id}}']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; - g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s); + g.type='text/javascript'; g.async=true; g.defer=true; g.src='{{matomo_url|replace('piwik.php','piwik.js')}}'; s.parentNode.insertBefore(g,s); })(); </script> <!-- End Matomo Code --> diff --git a/ckanext/odsh/templates/page.html b/ckanext/odsh/templates/page.html index 05e49c0821beea5d43648e25e274ceea68a6f8ad..525e8240c1ac1e427c88b2755a4fba2f736a10ce 100644 --- a/ckanext/odsh/templates/page.html +++ b/ckanext/odsh/templates/page.html @@ -3,9 +3,9 @@ {%- block content %} {% block maintag %}<div role="main">{% endblock %} -{% set matomo_url = 'https://phpefi.schleswig-holstein.de/gsb_analytics/'%} -{% set matomo_id = 3%} -<noscript><p><img src="{{matomo_url}}/piwik.php?idsite={{matomo_id}}&rec=1" style="border:0;" alt="" /></p></noscript> +{% set matomo_url = h.odsh_tracking_url()%} +{% set matomo_id = h.odsh_tracking_id()%} +<noscript><p><img src="{{matomo_url}}?idsite={{matomo_id}}&rec=1" style="border:0;" alt="" /></p></noscript> <div id="content" class="container"> <div id="testsystem"> <p>TESTSYSTEM</p>