Skip to content

Commit acdffbc

Browse files
committed
removed attempts at loading nmdc_schema in api.py and models.py
1 parent 576c761 commit acdffbc

File tree

5 files changed

+36
-22
lines changed

5 files changed

+36
-22
lines changed

nmdc_server/api.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,6 @@
3434
from nmdc_server.pagination import Pagination
3535
from nmdc_server.table import Table
3636

37-
from nmdc_schema.nmdc import SubmissionStatusEnum
38-
3937
router = APIRouter()
4038

4139
logger = get_logger(__name__)
@@ -769,7 +767,7 @@ async def get_metadata_submissions_mixs(
769767
):
770768
r"""
771769
Generate a TSV-formatted report of biosamples belonging to submissions
772-
that have a status of "Submitted- Pending Review".
770+
that have a status of "Submitted - Pending Review".
773771
774772
The report indicates which environmental package/extension, broad scale,
775773
local scale, and medium are specified for each biosample. The report is
@@ -1184,8 +1182,8 @@ async def update_submission(
11841182

11851183
# Create GitHub issue when metadata is being submitted and not a test submission
11861184
if (
1187-
submission.status == SubmissionStatusEnum.InProgress.text
1188-
and body_dict.get("status", None) == SubmissionStatusEnum.SubmittedPendingReview.text
1185+
submission.status == "In Progress"
1186+
and body_dict.get("status", None) == "Submitted - Pending Review"
11891187
and submission.is_test_submission is False
11901188
):
11911189
submission_model = schemas_submission.SubmissionMetadataSchema.model_validate(submission)
@@ -1212,7 +1210,7 @@ async def update_submission(
12121210

12131211
if body_dict.get("status", None):
12141212
if (
1215-
body_dict.get("status", None) == "Submitted- Pending Review"
1213+
body_dict.get("status", None) == "Submitted - Pending Review"
12161214
and submission.is_test_submission is False
12171215
):
12181216
submission.status = body_dict["status"]
@@ -1265,7 +1263,7 @@ def create_github_issue(submission: schemas_submission.SubmissionMetadataSchema,
12651263
f"Has data been generated: {data_generated}",
12661264
f"PI name: {pi_name}",
12671265
f"PI orcid: {pi_orcid}",
1268-
"Status: Submitted- Pending Review",
1266+
"Status: Submitted - Pending Review",
12691267
f"Data types: {omics_processing_types}",
12701268
f"Sample type: {sample_types}",
12711269
f"Number of samples: {num_samples}",
@@ -1489,4 +1487,4 @@ async def update_user(
14891487
):
14901488
if body.id != id:
14911489
raise HTTPException(status_code=400, detail="Invalid id")
1492-
return crud.update_user(db, body)
1490+
return crud.update_user(db, body)

nmdc_server/fakes.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from nmdc_server.database import SessionLocal
1313
from nmdc_server.schemas import AnnotationValue
1414

15-
from nmdc_schema.nmdc import SubmissionStatusEnum
15+
from nmdc_schema.nmdc_materialized_patterns import SubmissionStatusEnum
1616

1717

1818
class DoiProvider(BaseProvider):
@@ -341,7 +341,7 @@ class Meta:
341341
id: UUID = Faker("uuid")
342342
author = SubFactory(UserFactory)
343343
author_orcid = Faker("pystr")
344-
status = SubmissionStatusEnum.InProgress.text
344+
status = SubmissionStatusEnum.InProgress.title
345345
study_name = Faker("word")
346346
templates = Faker("pylist", nb_elements=2, value_types=[str])
347347
created = datetime.utcnow()

nmdc_server/models.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,6 @@
3030

3131
from nmdc_server.database import Base, update_multiomics_sql
3232

33-
from nmdc_schema.nmdc import SubmissionStatusEnum
34-
3533
# The models in the file are a specialized representation of the domain objects
3634
# described by https://microbiomedata.github.io/nmdc-schema/.
3735

@@ -923,7 +921,7 @@ class SubmissionMetadata(Base):
923921
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid4)
924922
author_orcid = Column(String, nullable=False)
925923
created = Column(DateTime, nullable=False, default=datetime.utcnow)
926-
status = Column(String, nullable=False, default=SubmissionStatusEnum.InProgress.text)
924+
status = Column(String, nullable=False, default="In Progress")
927925
metadata_submission = Column(JSONB, nullable=False)
928926
author_id = Column(UUID(as_uuid=True), ForeignKey(User.id))
929927
study_name = Column(String, nullable=True)
@@ -1017,4 +1015,4 @@ class AuthorizationCode(Base):
10171015
class InvalidatedToken(Base):
10181016
__tablename__ = "invalidated_token"
10191017

1020-
token = Column(String, primary_key=True)
1018+
token = Column(String, primary_key=True)

tests/test_submission.py

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
from nmdc_server.models import SubmissionEditorRole, SubmissionRole
1111
from nmdc_server.schemas_submission import SubmissionMetadataSchema, SubmissionMetadataSchemaPatch
1212

13+
from nmdc_schema.nmdc import SubmissionStatusEnum
14+
1315
@pytest.fixture
1416
def suggest_payload():
1517
return [
@@ -43,11 +45,19 @@ def test_get_metadata_submissions_mixs_as_non_admin(
4345
response = client.request(method="GET", url="/api/metadata_submission/mixs_report")
4446
assert response.status_code == 403
4547

46-
def test_submission_enum(db: Session, client: TestClient, logged_in_user):
48+
def test_print_submission_enum(db: Session, client: TestClient, logged_in_user):
4749
submission = fakes.MetadataSubmissionFactory(
4850
author=logged_in_user, author_orcid=logged_in_user.orcid
4951
)
50-
print(submission.__dict__)
52+
print("Available submission status enum values:")
53+
for attr_name in dir(SubmissionStatusEnum):
54+
attr_value = getattr(SubmissionStatusEnum, attr_name)
55+
if hasattr(attr_value, 'text'):
56+
print(attr_value.text)
57+
58+
print('\nSpecific enum value string')
59+
print(SubmissionStatusEnum.InProgress.text)
60+
5161
assert not submission
5262

5363
def test_get_metadata_submissions_mixs_as_admin(
@@ -64,7 +74,7 @@ def test_get_metadata_submissions_mixs_as_admin(
6474
author=logged_in_user,
6575
author_orcid=logged_in_user.orcid,
6676
created=now,
67-
status=SubmissionStatusEnum.SubmittedPendingReview,
77+
status=SubmissionStatusEnum.SubmittedPendingReview.text,
6878
metadata_submission={
6979
"sampleData": {
7080
"built_env_data": [
@@ -116,7 +126,7 @@ def test_get_metadata_submissions_mixs_as_admin(
116126

117127
data_row = rows[1] # first data row (data about Sample A in submission1)
118128
assert data_row["Submission ID"] == str(submission1.id)
119-
assert data_row["Status"] == SubmissionStatusEnum.SubmittedPendingReview
129+
assert data_row["Status"] == SubmissionStatusEnum.SubmittedPendingReview.text
120130
assert data_row["Sample Name"] == "Sample A"
121131
assert data_row["Environmental Package/Extension"] == "Env Pkg 1"
122132
assert data_row["Environmental Broad Scale"] == "Broad Scale A"
@@ -129,7 +139,7 @@ def test_get_metadata_submissions_mixs_as_admin(
129139

130140
data_row = rows[2] # second data row (data about Sample B in submission1)
131141
assert data_row["Submission ID"] == str(submission1.id)
132-
assert data_row["Status"] == SubmissionStatusEnum.SubmittedPendingReview
142+
assert data_row["Status"] == SubmissionStatusEnum.SubmittedPendingReview.text
133143
assert data_row["Sample Name"] == "Sample B"
134144
assert data_row["Environmental Package/Extension"] == "Env Pkg 1"
135145
assert data_row["Environmental Broad Scale"] == "Broad Scale B"
@@ -311,7 +321,7 @@ def test_get_metadata_submissions_report_as_admin(
311321
"packageName": [],
312322
},
313323
is_test_submission=True,
314-
status=SubmissionStatusEnum.InProgress,
324+
status=SubmissionStatusEnum.InProgress.text,
315325
source_client="field_notes",
316326
)
317327
db.commit()
@@ -352,7 +362,7 @@ def test_get_metadata_submissions_report_as_admin(
352362
assert data_row["PI Name"] == "My PI name"
353363
assert data_row["PI Email"] == "My PI email"
354364
assert data_row["Source Client"] == "field_notes"
355-
assert data_row["Status"] == SubmissionStatusEnum.InProgress
365+
assert data_row["Status"] == SubmissionStatusEnum.InProgress.text
356366
assert data_row["Is Test Submission"] == "True"
357367
assert data_row["Number of Samples"] == "4"
358368
assert isinstance(data_row["Date Last Modified"], str)
@@ -366,7 +376,7 @@ def test_get_metadata_submissions_report_as_admin(
366376
assert data_row["PI Name"] == ""
367377
assert data_row["PI Email"] == ""
368378
assert data_row["Source Client"] == "" # upstream faker lacks `source_client` attribute
369-
assert data_row["Status"] == SubmissionStatusEnum.InProgress # matches value in upstream faker
379+
assert data_row["Status"] == SubmissionStatusEnum.InProgress.text # matches value in upstream faker
370380
assert data_row["Is Test Submission"] == "False"
371381
assert data_row["Number of Samples"] == "0"
372382
assert isinstance(data_row["Date Last Modified"], str)

web/src/views/SubmissionPortal/store/index.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@ const isSubmissionStatus = (str: any): str is SubmissionStatusTitle => Object.va
6060
const status = ref(submissionStatus.InProgress);
6161
const isTestSubmission = ref(false);
6262

63+
// Helper function to check if current status is valid for saving
64+
const isValidStatusForSaving = (): boolean => isSubmissionStatus(status.value);
65+
6366
/**
6467
* Submission record locking information
6568
*/
@@ -399,6 +402,11 @@ async function incrementalSaveRecord(id: string): Promise<number | void> {
399402
return Promise.resolve();
400403
}
401404

405+
// Check if current status is valid before saving
406+
if (!isValidStatusForSaving()) {
407+
throw new Error(`Cannot save record: current status "${status.value}" is not a valid status`);
408+
}
409+
402410
let payload: Partial<MetadataSubmission> = {};
403411
let permissions: Record<string, PermissionLevelValues> | undefined;
404412
if (isOwner()) {

0 commit comments

Comments
 (0)