"""Blueprint for dataloader API.""" from flask import Blueprint, request from owsrequest import flask_request from owsresponse import response from owsresponse.adaptors.flask import flaskify from royalties.constants import error from royalties.logic import statement_period as logic from royalties.utils import authorization from royalties.utils.format_error import validation_error from royalties.utils.request import get_optional_numeric_list_from_params dataloader_api = Blueprint('dataloader_api', __name__) @dataloader_api.route('/dataloader/statement-periods/', methods=['POST']) def get_statement_periods_by_ids(): """Get statement periods by a list of statement_period_ids.""" access_rule_decision = flask_request.verify_rules_access_standalone(request) if not access_rule_decision: authorized = authorization.pdp_authorize_resource( # This resource type is all-or-nothing, permissions-wise, # so id doesn't matter resource_id=0, resource_type='statement_period', ) if not authorized: return flaskify( response.create_error_response( code=error.ERROR_CODE_AUTHORIZATION, message=error.ERROR_MESSAGE_FORBIDDEN_USER, status=403, ) ) try: statement_period_ids = get_optional_numeric_list_from_params() or [] except ValueError: return flaskify(validation_error(error.ERROR_INVALID_STATEMENT_PERIOD_IDS)) return flaskify(logic.get_statement_periods_by_ids(statement_period_ids))