Skip to content

Commit 48a99fe

Browse files
authored
Merge pull request #1491 from microbiomedata/fix-allow-string-package-name-on-create
Allow creating a submission with string or list of strings for `packageName`
2 parents e150223 + 5e11b51 commit 48a99fe

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

nmdc_server/api.py

+8
Original file line numberDiff line numberDiff line change
@@ -1178,6 +1178,14 @@ async def submit_metadata(
11781178
db: Session = Depends(get_db),
11791179
user: models.User = Depends(get_current_user),
11801180
):
1181+
# Old versions of the Field Notes app will continue to send a string for packageName
1182+
# for a little while. This code is to ease that transition and can be removed in the future.
1183+
if isinstance(body.metadata_submission.packageName, str):
1184+
if body.metadata_submission.packageName:
1185+
body.metadata_submission.packageName = [body.metadata_submission.packageName]
1186+
else:
1187+
body.metadata_submission.packageName = []
1188+
11811189
submission = SubmissionMetadata(
11821190
**body.dict(),
11831191
author_orcid=user.orcid,

nmdc_server/schemas_submission.py

+8-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from datetime import datetime
22
from enum import Enum
3-
from typing import Any, Dict, List, Optional
3+
from typing import Any, Dict, List, Optional, Union
44
from uuid import UUID
55

66
from pydantic import BaseModel, ConfigDict, ValidationInfo, field_validator
@@ -74,8 +74,8 @@ class ContextForm(BaseModel):
7474
unknownDoi: Optional[bool] = None
7575

7676

77-
class MetadataSubmissionRecord(BaseModel):
78-
packageName: List[str]
77+
class MetadataSubmissionRecordCreate(BaseModel):
78+
packageName: Union[str, List[str]]
7979
contextForm: ContextForm
8080
addressForm: AddressForm
8181
templates: List[str]
@@ -84,6 +84,10 @@ class MetadataSubmissionRecord(BaseModel):
8484
sampleData: Dict[str, List[Any]]
8585

8686

87+
class MetadataSubmissionRecord(MetadataSubmissionRecordCreate):
88+
packageName: List[str]
89+
90+
8791
class PartialMetadataSubmissionRecord(BaseModel):
8892
packageName: Optional[List[str]] = None
8993
contextForm: Optional[ContextForm] = None
@@ -95,7 +99,7 @@ class PartialMetadataSubmissionRecord(BaseModel):
9599

96100

97101
class SubmissionMetadataSchemaCreate(BaseModel):
98-
metadata_submission: MetadataSubmissionRecord
102+
metadata_submission: MetadataSubmissionRecordCreate
99103
status: Optional[str] = None
100104
source_client: Optional[str] = None
101105

0 commit comments

Comments
 (0)