api: attach the call context variables to request for later usage

in API calls.
This commit is contained in:
Daniel Dourvaris 2017-06-14 11:07:54 +02:00
parent 091c9d9d99
commit 930c7eebbd
2 changed files with 13 additions and 3 deletions

View file

@ -35,8 +35,9 @@ from pyramid.httpexceptions import HTTPNotFound
from rhodecode.api.exc import (
JSONRPCBaseError, JSONRPCError, JSONRPCForbidden, JSONRPCValidationError)
from rhodecode.apps._base import TemplateArgs
from rhodecode.lib.auth import AuthUser
from rhodecode.lib.base import get_ip_addr
from rhodecode.lib.base import get_ip_addr, attach_context_attributes
from rhodecode.lib.ext_json import json
from rhodecode.lib.utils2 import safe_str
from rhodecode.lib.plugins.utils import get_plugin_settings
@ -278,6 +279,11 @@ def request_view(request):
'request': request,
'apiuser': auth_u
})
# register some common functions for usage
attach_context_attributes(TemplateArgs(), request, request.rpc_user.user_id,
attach_to_request=True)
try:
ret_value = func(**call_params)
return jsonrpc_response(request, ret_value)

View file

@ -265,7 +265,7 @@ class BasicAuth(AuthBasicAuthenticator):
__call__ = authenticate
def attach_context_attributes(context, request, user_id):
def attach_context_attributes(context, request, user_id, attach_to_request=False):
"""
Attach variables into template context called `c`, please note that
request could be pylons or pyramid request in here.
@ -388,7 +388,11 @@ def attach_context_attributes(context, request, user_id):
context.backends = rhodecode.BACKENDS.keys()
context.backends.sort()
context.unread_notifications = NotificationModel().get_unread_cnt_for_user(user_id)
context.pyramid_request = pyramid.threadlocal.get_current_request()
if attach_to_request:
request.call_context = context
else:
context.pyramid_request = pyramid.threadlocal.get_current_request()
def get_auth_user(environ):