"""Blueprint for Reference Payment Entity.""" from abacus_common_logic.views.item_view import ItemView from abacus_common_logic.views.list_view import ListView from flask import Blueprint from flask import request from owsrequest import flask_request from owsresponse import response from owsresponse.adaptors.flask import flaskify from abacus_contract.constants import error from abacus_contract.models.reference_payment_entity import ReferencePaymentEntity from abacus_contract.schemas.reference_payment_entity \ import ReferencePaymentEntitySchema from abacus_contract.utils import authorization reference_payment_entity_api = Blueprint( 'reference_payment_entity_api', __name__ ) class ReferencePaymentEntityItemView(ItemView): """View to get a reference_payment_entity by ID.""" model_class = ReferencePaymentEntity object_detail_schema = ReferencePaymentEntitySchema() def get(self, object_id, **kwargs): """Get reference_payment_entity by ID.""" access_rule_decision = flask_request.verify_rules_access_standalone(request) if not access_rule_decision: authorized = authorization.pdp_authorize_resource( resource_id=0, resource_type='reference_payment_entity', ) if not authorized: return flaskify( response.create_error_response( code=error.ERROR_CODE_FORBIDDEN, message=error.ERROR_MESSAGE_FORBIDDEN_USER, status=403, ) ) return super().get(object_id, **kwargs) class ReferencePaymentEntityListView(ListView): """View to get a list of reference_payment_entity.""" model_class = ReferencePaymentEntity list_entry_schema = ReferencePaymentEntitySchema def get(self): """Override base GET method.""" access_rule_decision = flask_request.verify_rules_access_standalone(request) if not access_rule_decision: return flaskify(response.create_error_response( code=error.ERROR_CODE_AUTHORIZATION, message='Unauthorized', status=401, )) reference_payment_entities = self.base_list_query().all() result = ReferencePaymentEntitySchema(many=True).dump( reference_payment_entities ) count = self.base_list_query().count() return flaskify(response.Response({ 'items': result, 'total_count': count })) reference_payment_entity_api.add_url_rule( '/reference-payment-entity//', methods=['GET'], view_func=ReferencePaymentEntityItemView.as_view('reference_payment_entity') ) reference_payment_entity_api.add_url_rule( '/reference-payment-entities/', methods=['GET'], view_func=ReferencePaymentEntityListView.as_view('reference_payment_entities') )