""" Context. Contexts are per request and it contains important data such as the current user informations. """ from flask import abort from flask import g from flask import request from owsrequest import flask_request from werkzeug import exceptions from analytics.logic import user def get_current_user(): """Get the current user object. Returns: User: the current user. """ if hasattr(g, 'current_user'): return g.current_user account_type, account_id = flask_request.get_grass_headers(request) if not all((account_type, account_id, str(account_id).isdigit())): abort(exceptions.Forbidden.code) new_user = user.create(id=account_id, type=account_type).message if not new_user: abort(exceptions.Forbidden.code) g.current_user = new_user return g.current_user