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

1from datetime import datetime 

2 

3from pydantic import BaseModel 

4 

5 

6class UploadedPart(BaseModel): 

7 """Metadata for a successfully uploaded multipart part.""" 

8 

9 part_number: int 

10 etag: str 

11 size_bytes: int 

12 

13 

14class CompletedMultipartPart(BaseModel): 

15 """Client-supplied part reference used to finalize a multipart upload.""" 

16 

17 part_number: int 

18 etag: str 

19 

20 

21class MultipartInitiationResult(BaseModel): 

22 """Control-plane data returned when a multipart upload session is created.""" 

23 

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 

30 

31 

32class MultipartPartUrlsResult(BaseModel): 

33 """Batch of presigned part-upload URLs keyed by multipart part number.""" 

34 

35 urls: dict[str, str] 

36 

37 

38class MultipartUploadStatusResult(BaseModel): 

39 """Current server-side state of a multipart upload session.""" 

40 

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 

50 

51 

52class CompletedMultipartUploadStorageResult(BaseModel): 

53 """Storage-layer result of completing a multipart upload in S3-compatible storage.""" 

54 

55 bucket: str 

56 object_key: str 

57 etag: str | None = None 

58 location: str | None = None 

59 

60 

61class CompleteUploadResult(BaseModel): 

62 """Application-layer result of finalizing an upload session.""" 

63 

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 

70 

71 

72class UploadCleanupSummary(BaseModel): 

73 """Counts describing cleanup work completed for stale or expired uploads.""" 

74 

75 aborted_stale_uploads: int 

76 expired_ml_uploads: int