Skip to content
Snippets Groups Projects
Commit 1c7c067b authored by chbaeh's avatar chbaeh
Browse files

wip

parent b09c1613
No related branches found
No related tags found
No related merge requests found
import ckan.lib.base as base import ckan.lib.base as base
from ckan.controllers.home import HomeController from ckan.controllers.home import HomeController
from ckan.controllers.user import UserController from ckan.controllers.user import UserController
from ckan.controllers.api import ApiController
from ckan.controllers.feed import FeedController
from ckan.controllers.package import PackageController from ckan.controllers.package import PackageController
import ckan.lib.helpers as h import ckan.lib.helpers as h
import ckan.authz as authz import ckan.authz as authz
from ckan.common import c from ckan.common import c
import logging
import matomo
import ckan.logic as logic
abort = base.abort abort = base.abort
log = logging.getLogger(__name__)
class OdshRouteController(HomeController): class OdshRouteController(HomeController):
def info_page(self): def info_page(self):
...@@ -16,7 +22,6 @@ class OdshRouteController(HomeController): ...@@ -16,7 +22,6 @@ class OdshRouteController(HomeController):
def not_found(self): def not_found(self):
abort(404) abort(404)
class OdshUserController(UserController): class OdshUserController(UserController):
def me(self, locale=None): def me(self, locale=None):
if not c.user: if not c.user:
...@@ -55,3 +60,74 @@ class OdshUserController(UserController): ...@@ -55,3 +60,74 @@ class OdshUserController(UserController):
class OdshPackageController(PackageController): class OdshPackageController(PackageController):
pass 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)
side_effect_free = getattr(function, 'side_effect_free', False)
request_data = self._get_request_data(
try_url_params=side_effect_free)
if isinstance(request_data, dict):
id = request_data.get('id', '')
if 'q' in request_data:
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()
matomo.create_matomo_request(userid)
except Exception, e:
log.debug(e)
pass
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)
\ No newline at end of file
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:
def create_matomo_request(userId=None):
# print(request.url)
headers = {
'HTTP_USER_AGENT': request.headers.get('User-Agent'),
'REMOTE_ADDR': request.headers.get('Host'),
# 'HTTP_REFERER': 'http://referer.com/somewhere/',
'HTTP_ACCEPT_LANGUAGE': request.headers.get('Accept-Language'),
'SERVER_NAME': config.get('ckan.site_url'),
'PATH_INFO': c.environ['PATH_INFO'],
# 'QUERY_STRING': 'something=bar',
'HTTPS': False,
}
fakerequest = FakeRequest(headers)
piwiktracker = PiwikTracker('1', fakerequest)
piwiktracker.set_api_url('http://192.168.178.45/piwik.php')
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
...@@ -125,6 +125,13 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm ...@@ -125,6 +125,13 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
map.redirect('/dataset/{id}/resource/{resource_id}', '/dataset/{id}') map.redirect('/dataset/{id}/resource/{resource_id}', '/dataset/{id}')
# /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)
with SubMapper(map, controller='ckanext.odsh.controller:MatomoFeedController') as m:
m.connect('/feeds/custom.atom', action='custom')
# redirect all user routes to custom controller # redirect all user routes to custom controller
with SubMapper(map, controller='ckanext.odsh.controller:OdshUserController') as m: with SubMapper(map, controller='ckanext.odsh.controller:OdshUserController') as m:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment