"""Blueprint for Reference Signing 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.error import ERROR_CODE_AUTHORIZATION from abacus_contract.models.reference_signing_entity import ReferenceSigningEntity from abacus_contract.schemas.reference_signing_entity \ import ReferenceSigningEntitySchema reference_signing_entity_api = Blueprint( 'reference_signing_entity_api', __name__ ) class ReferenceSigningEntityItemView(ItemView): """View to get a reference_signing_entity by ID.""" model_class = ReferenceSigningEntity object_detail_schema = ReferenceSigningEntitySchema() def get(self, object_id, **kwargs): """Get reference_signing_entity by ID.""" access_rule_decision = flask_request.verify_rules_access_standalone(request) if not access_rule_decision: return flaskify(response.create_error_response( code=ERROR_CODE_AUTHORIZATION, message='Unauthorized', status=401, )) return super().get(object_id, **kwargs) class ReferenceSigningEntityListView(ListView): """View to get a list of reference_signing_entity.""" model_class = ReferenceSigningEntity list_entry_schema = ReferenceSigningEntitySchema 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_CODE_AUTHORIZATION, message='Unauthorized', status=401, )) reference_signing_entities = ReferenceSigningEntity.query.order_by( ReferenceSigningEntity.company_code ).all() result = ReferenceSigningEntitySchema(many=True).dump( reference_signing_entities ) return flaskify(response.Response({ 'items': result, 'total_count': len(result) })) reference_signing_entity_api.add_url_rule( '/reference-signing-entity//', methods=['GET'], view_func=ReferenceSigningEntityItemView.as_view('reference_signing_entity') ) reference_signing_entity_api.add_url_rule( '/reference-signing-entities/', methods=['GET'], view_func=ReferenceSigningEntityListView.as_view('reference_signing_entities') )