|
31 | 31 | QueueType, |
32 | 32 | SubmissionResult, |
33 | 33 | ) |
| 34 | +from dve.pipeline.utils import SubmissionStatus |
34 | 35 |
|
35 | 36 | AuditReturnType = TypeVar("AuditReturnType") # pylint: disable=invalid-name |
36 | 37 |
|
@@ -329,7 +330,7 @@ def mark_business_rules(self, submissions: list[tuple[str, bool]], **kwargs): |
329 | 330 | ProcessingStatusRecord( |
330 | 331 | submission_id=submission_id, |
331 | 332 | processing_status="business_rules", |
332 | | - submission_result="failed" if failed else None, |
| 333 | + submission_result="validation_failed" if failed else None, |
333 | 334 | **kwargs, |
334 | 335 | ) |
335 | 336 | for submission_id, failed in submissions |
@@ -379,7 +380,10 @@ def mark_failed(self, submissions: list[str], **kwargs): |
379 | 380 | """Update submission processing_status to failed.""" |
380 | 381 | recs = [ |
381 | 382 | ProcessingStatusRecord( |
382 | | - submission_id=submission_id, processing_status="failed", **kwargs |
| 383 | + submission_id=submission_id, |
| 384 | + processing_status="failed", |
| 385 | + submission_result="processing_failed", |
| 386 | + **kwargs, |
383 | 387 | ) |
384 | 388 | for submission_id in submissions |
385 | 389 | ] |
@@ -494,6 +498,33 @@ def get_submission_statistics(self, submission_id: str) -> Optional[SubmissionSt |
494 | 498 | except StopIteration: |
495 | 499 | return None |
496 | 500 |
|
| 501 | + def get_submission_status(self, submission_id: str) -> Optional[SubmissionStatus]: |
| 502 | + """Get the latest submission status for a submission""" |
| 503 | + |
| 504 | + try: |
| 505 | + processing_rec: ProcessingStatusRecord = next( # type: ignore |
| 506 | + self._processing_status.conv_to_records( |
| 507 | + self._processing_status.get_most_recent_records( |
| 508 | + order_criteria=[OrderCriteria("time_updated", True)], |
| 509 | + pre_filter_criteria=[FilterCriteria("submission_id", submission_id)], |
| 510 | + ) |
| 511 | + ) |
| 512 | + ) |
| 513 | + except StopIteration: |
| 514 | + return None |
| 515 | + sub_status = SubmissionStatus() |
| 516 | + sub_stats_rec: Optional[SubmissionStatisticsRecord] = self.get_submission_statistics( |
| 517 | + submission_id |
| 518 | + ) |
| 519 | + if processing_rec.submission_result == "processing_failed": |
| 520 | + sub_status.processing_failed = True |
| 521 | + if processing_rec.submission_result == "validation_failed": |
| 522 | + sub_status.validation_failed = True |
| 523 | + if sub_stats_rec: |
| 524 | + sub_status.number_of_records = sub_stats_rec.record_count |
| 525 | + |
| 526 | + return sub_status |
| 527 | + |
497 | 528 | def __enter__(self): |
498 | 529 | """Use audit table as context manager""" |
499 | 530 | if self.pool and self.pool_result.done(): |
|
0 commit comments