Coverage for backend/django/core/auxiliary/services/upload_types.py: 100%
43 statements
« prev ^ index » next coverage.py v7.10.7, created at 2026-05-13 02:47 +0000
« prev ^ index » next coverage.py v7.10.7, created at 2026-05-13 02:47 +0000
1from datetime import datetime
3from pydantic import BaseModel
6class UploadedPart(BaseModel):
7 """Metadata for a successfully uploaded multipart part."""
9 part_number: int
10 etag: str
11 size_bytes: int
14class CompletedMultipartPart(BaseModel):
15 """Client-supplied part reference used to finalize a multipart upload."""
17 part_number: int
18 etag: str
21class MultipartInitiationResult(BaseModel):
22 """Control-plane data returned when a multipart upload session is created."""
24 upload_session_id: int
25 bucket: str
26 object_key: str
27 s3_upload_id: str
28 part_size_bytes: int
29 expires_in_seconds: int
32class MultipartPartUrlsResult(BaseModel):
33 """Batch of presigned part-upload URLs keyed by multipart part number."""
35 urls: dict[str, str]
38class MultipartUploadStatusResult(BaseModel):
39 """Current server-side state of a multipart upload session."""
41 upload_session_id: int
42 status: str
43 can_resume: bool
44 expires_at: datetime | None = None
45 uploaded_parts: list[UploadedPart]
46 part_size_bytes: int
47 bucket: str
48 object_key: str
49 s3_upload_id: str
52class CompletedMultipartUploadStorageResult(BaseModel):
53 """Storage-layer result of completing a multipart upload in S3-compatible storage."""
55 bucket: str
56 object_key: str
57 etag: str | None = None
58 location: str | None = None
61class CompleteUploadResult(BaseModel):
62 """Application-layer result of finalizing an upload session."""
64 upload_session_id: int
65 bucket: str
66 object_key: str
67 size_bytes: int
68 etag: str | None = None
69 location: str | None = None
72class UploadCleanupSummary(BaseModel):
73 """Counts describing cleanup work completed for stale or expired uploads."""
75 aborted_stale_uploads: int
76 expired_ml_uploads: int