Files
pillar/pillar/web/system_util.py
Francesco Siddi 9ee7b742ab Make more consistent use of BLENDER_ID_ENDPOINT
Now BLENDER_ID_ENDPOINT is used for the Blender ID OAuth config,
and it's directly accessed when building requests for Blender ID token
validation (without using utility functions).
2018-06-22 19:38:27 +02:00

58 lines
1.5 KiB
Python

"""
Replacement of the old SystemUtility class.
"""
import os
import logging
from flask import current_app, session, request
from flask_login import current_user
from pillar.sdk import FlaskInternalApi
log = logging.getLogger(__name__)
def pillar_server_endpoint():
"""Gets the endpoint for the authentication API. If the env variable
is defined, we will use the one from the config object.
"""
return os.environ.get('PILLAR_SERVER_ENDPOINT',
current_app.config['PILLAR_SERVER_ENDPOINT'])
def pillar_server_endpoint_static():
"""Endpoint to retrieve static files (previews, videos, etc)"""
return "{0}/file_server/file/".format(pillar_server_endpoint())
def pillar_api(token=None):
# Cache API objects on the request per token.
api = getattr(request, 'pillar_api', {}).get(token)
if api is not None:
return api
# Check if current_user is initialized (in order to support manage.py
# scripts and non authenticated server requests).
use_token = token
if token is None and current_user and current_user.is_authenticated:
use_token = current_user.id
api = FlaskInternalApi(
endpoint=pillar_server_endpoint(),
username=None,
password=None,
token=use_token
)
if token is None:
if not hasattr(request, 'pillar_api'):
request.pillar_api = {}
request.pillar_api[token] = api
return api
def session_item(item):
return session.get(item, None)