diff --git a/endpoints/common.py b/endpoints/common.py index a7f31b204..0a88b3900 100644 --- a/endpoints/common.py +++ b/endpoints/common.py @@ -11,10 +11,9 @@ from random import SystemRandom from data import model from data.database import db -from app import analytics, app, login_manager, dockerfile_build_queue, notification_queue +from app import app, login_manager, dockerfile_build_queue, notification_queue from auth.permissions import QuayDeferredPermissionUser from auth import scopes -from auth.auth_context import get_authenticated_user, get_validated_token, get_validated_oauth_token from endpoints.api.discovery import swagger_route_data from werkzeug.routing import BaseConverter from functools import wraps @@ -274,44 +273,4 @@ def start_build(repository, dockerfile_id, tags, build_name, subdir, manual, spawn_notification(repository, 'build_queued', event_data, subpage='build?current=%s' % build_request.uuid, pathargs=['build', build_request.uuid]) - return build_request - - -def track_and_log(event_name, repo, **kwargs): - repository = repo.name - namespace = repo.namespace_user.username - metadata = { - 'repo': repository, - 'namespace': namespace, - } - metadata.update(kwargs) - - analytics_id = 'anonymous' - - profile.debug('Logging the %s to Mixpanel and the log system', event_name) - if get_validated_oauth_token(): - oauth_token = get_validated_oauth_token() - metadata['oauth_token_id'] = oauth_token.id - metadata['oauth_token_application_id'] = oauth_token.application.client_id - metadata['oauth_token_application'] = oauth_token.application.name - analytics_id = 'oauth:' + oauth_token.id - elif get_authenticated_user(): - metadata['username'] = get_authenticated_user().username - analytics_id = get_authenticated_user().username - elif get_validated_token(): - metadata['token'] = get_validated_token().friendly_name - metadata['token_code'] = get_validated_token().code - analytics_id = 'token:' + get_validated_token().code - else: - metadata['public'] = True - analytics_id = 'anonymous' - - extra_params = { - 'repository': '%s/%s' % (namespace, repository), - } - - analytics.track(analytics_id, event_name, extra_params) - model.log_action(event_name, namespace, - performer=get_authenticated_user(), - ip=request.remote_addr, metadata=metadata, - repository=repo) \ No newline at end of file + return build_request \ No newline at end of file diff --git a/endpoints/index.py b/endpoints/index.py index a0df57375..1c8e551a0 100644 --- a/endpoints/index.py +++ b/endpoints/index.py @@ -17,7 +17,7 @@ from auth.permissions import (ModifyRepositoryPermission, UserAdminPermission, ReadRepositoryPermission, CreateRepositoryPermission) from util.http import abort -from endpoints.common import track_and_log +from endpoints.trackhelper import track_and_log from endpoints.notificationhelper import spawn_notification import features diff --git a/endpoints/trackhelper.py b/endpoints/trackhelper.py new file mode 100644 index 000000000..df8af5aae --- /dev/null +++ b/endpoints/trackhelper.py @@ -0,0 +1,48 @@ +import logging + +from app import analytics, app +from data import model +from flask import request +from auth.auth_context import get_authenticated_user, get_validated_token, get_validated_oauth_token + +logger = logging.getLogger(__name__) +profile = logging.getLogger('application.profiler') + +def track_and_log(event_name, repo, **kwargs): + repository = repo.name + namespace = repo.namespace_user.username + metadata = { + 'repo': repository, + 'namespace': namespace, + } + metadata.update(kwargs) + + analytics_id = 'anonymous' + + profile.debug('Logging the %s to Mixpanel and the log system', event_name) + if get_validated_oauth_token(): + oauth_token = get_validated_oauth_token() + metadata['oauth_token_id'] = oauth_token.id + metadata['oauth_token_application_id'] = oauth_token.application.client_id + metadata['oauth_token_application'] = oauth_token.application.name + analytics_id = 'oauth:' + oauth_token.id + elif get_authenticated_user(): + metadata['username'] = get_authenticated_user().username + analytics_id = get_authenticated_user().username + elif get_validated_token(): + metadata['token'] = get_validated_token().friendly_name + metadata['token_code'] = get_validated_token().code + analytics_id = 'token:' + get_validated_token().code + else: + metadata['public'] = True + analytics_id = 'anonymous' + + extra_params = { + 'repository': '%s/%s' % (namespace, repository), + } + + analytics.track(analytics_id, event_name, extra_params) + model.log_action(event_name, namespace, + performer=get_authenticated_user(), + ip=request.remote_addr, metadata=metadata, + repository=repo) \ No newline at end of file diff --git a/endpoints/verbs.py b/endpoints/verbs.py index e3d5da37d..b410251d3 100644 --- a/endpoints/verbs.py +++ b/endpoints/verbs.py @@ -10,7 +10,7 @@ from auth.auth_context import get_authenticated_user from auth.permissions import ReadRepositoryPermission from data import model from data import database -from endpoints.common import track_and_log +from endpoints.trackhelper import track_and_log from storage import Storage from util.queuefile import QueueFile diff --git a/test/data/test.db b/test/data/test.db index 66abd92f7..dc7950361 100644 Binary files a/test/data/test.db and b/test/data/test.db differ