diff --git a/bayer/views.py b/bayer/views.py index 114053ab..689bea2e 100644 --- a/bayer/views.py +++ b/bayer/views.py @@ -1,4 +1,5 @@ import base64 +import logging import requests from django.conf import settings as s @@ -14,6 +15,9 @@ from utilities.decorators import package_permission_required Package = s.GET_PACKAGE_MODEL() +logger = logging.getLogger(__name__) + + @package_permission_required() def create_pes(request, package_uuid): current_user = _anonymous_or_real(request) @@ -52,21 +56,13 @@ def create_pes(request, package_uuid): "Cannot create secret PESs in non-secret packages." ) - data_pools = pes_data.get("dataPools") - if data_pools: - if (current_package.data_pool.name not in s.DATA_POOL_MAPPING - or s.DATA_POOL_MAPPING[current_package.data_pool.name] not in data_pools): - - if current_package.data_pool.name not in s.DATA_POOL_MAPPING: - detail = f"Data pool {current_package.data_pool.name} not found in Mapping." - else: - detail = f"PES data pool {s.DATA_POOL_MAPPING[current_package.data_pool.name]} not found in PES data" - - return error( - request, - "Invalid PES data", - detail - ) + if not current_package.data_pool or not current_package.data_pool.secret: + logger.info(f"The current package does not have a secret data pool.") + return error( + request, + "The current package does not have a secret data pool.", + "Cannot create secret PESs in package without a secret data pool." + ) pes = PESCompound.create(current_package, pes_data, compound_name, compound_description) @@ -120,21 +116,13 @@ def create_pes_node(request, package_uuid, pathway_uuid): "Cannot create secret PESs in non-secret packages." ) - data_pools = pes_data.get("dataPools") - if data_pools: - if (current_package.data_pool.name not in s.DATA_POOL_MAPPING - or s.DATA_POOL_MAPPING[current_package.data_pool.name] not in data_pools): - - if current_package.data_pool.name not in s.DATA_POOL_MAPPING: - detail = f"Data pool {current_package.data_pool.name} not found in Mapping." - else: - detail = f"PES data pool {s.DATA_POOL_MAPPING[current_package.data_pool.name]} not found in PES data" - - return error( - request, - "Invalid PES data", - detail - ) + if not current_package.data_pool or not current_package.data_pool.secret: + logger.info(f"The current package does not have a secret data pool.") + return error( + request, + "The current package does not have a secret data pool.", + "Cannot create secret PESs in package without a secret data pool." + ) pes = PESCompound.create(current_package, pes_data, compound_name, compound_description) diff --git a/epdb/legacy_api.py b/epdb/legacy_api.py index 5b563c1d..431996ea 100644 --- a/epdb/legacy_api.py +++ b/epdb/legacy_api.py @@ -1975,7 +1975,7 @@ def get_package_pathway_node(request, package_uuid, pathway_uuid, node_uuid): class CreateNode(Schema): - nodeAsSmiles: str + nodeAsSmiles: str | None = None nodeAsMolFile: str | None = None nodeName: str | None = None nodeReason: str | None = None @@ -2007,14 +2007,10 @@ def add_pathway_node(request, package_uuid, pathway_uuid, n: Form[CreateNode]): if "secret" == classification.lower(): if p.classification_level != Package.Classification.SECRET: - return 400, "Cannot create PESs for non-secret packages." + return 400, {"message": "Cannot create secret PESs in non-secret packages."} - data_pools = pes_data.get("dataPools") - if data_pools: - if s.DATA_POOL_MAPPING[p.data_pool.name] not in data_pools: - return 400, { - "messsage": f"PES data pool {s.DATA_POOL_MAPPING[p.data_pool.name]} not found in PES data" - } + if not p.data_pool or not p.data_pool.secret: + return 400, {"message": "Cannot create secret PESs in package without a secret data pool."} c = PESCompound.create(p, pes_data, n.nodeName, n.nodeReason)