diff --git a/nomad/app/v1/routers/uploads.py b/nomad/app/v1/routers/uploads.py index 8fede69838f3c6cd69e6ed1c5a1de0a7eec3dc8b..80fc6a7ea1bb10649a46707e77b3069eba02a341 100644 --- a/nomad/app/v1/routers/uploads.py +++ b/nomad/app/v1/routers/uploads.py @@ -227,6 +227,12 @@ class UploadProcDataQuery(BaseModel): If True: only include published uploads. If False: only include unpublished uploads. If unset: include everything.''')) + process_status: Optional[str] = Field( + description=strip('Search by the process status.')) + + @validator('process_status') + def upper_process_status(cls, process_status: str): # pylint: disable=no-self-argument + return process_status.upper() if process_status else None upload_proc_data_query_parameters = parameter_dependency_from_model( diff --git a/nomad/graph/graph_reader.py b/nomad/graph/graph_reader.py index ad10df64ba73a47244e3e890e7de7dc0060f2839..244e0387f5a235b6391f0d976e922839ecb50bdd 100644 --- a/nomad/graph/graph_reader.py +++ b/nomad/graph/graph_reader.py @@ -924,7 +924,9 @@ class MongoReader(GeneralReader): mongo_query &= Q(upload_id__in=config.query.upload_id) if config.query.upload_name: mongo_query &= Q(upload_name__in=config.query.upload_name) - if config.query.is_processing is True: + if config.query.process_status is not None: + mongo_query &= Q(process_status=config.query.process_status) + elif config.query.is_processing is True: mongo_query &= Q(process_status__in=ProcessStatus.STATUSES_PROCESSING) elif config.query.is_processing is False: mongo_query &= Q(process_status__in=ProcessStatus.STATUSES_NOT_PROCESSING)