File size: 3,186 Bytes
3493993
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
from __future__ import annotations

from app.core.exceptions import MediaAPIError


class ProjectNotFoundError(MediaAPIError):
    code = "PROJECT_NOT_FOUND"
    status_code = 404


class ProjectInvalidNameError(MediaAPIError):
    code = "PROJECT_INVALID_NAME"
    status_code = 422


class ProjectInvalidStatusError(MediaAPIError):
    code = "PROJECT_INVALID_STATUS"
    status_code = 422


class ProjectThumbnailInvalidError(MediaAPIError):
    code = "PROJECT_THUMBNAIL_INVALID"
    status_code = 422


class ProjectAlreadyArchivedError(MediaAPIError):
    code = "PROJECT_ALREADY_ARCHIVED"
    status_code = 409


class ProjectInvalidCursorError(MediaAPIError):
    code = "PROJECT_INVALID_CURSOR"
    status_code = 422


class ProjectAssetNotFoundError(MediaAPIError):
    code = "PROJECT_ASSET_NOT_FOUND"
    status_code = 404


class ProjectAssetConflictError(MediaAPIError):
    code = "PROJECT_ASSET_CONFLICT"
    status_code = 409


class ProjectJobNotFoundError(MediaAPIError):
    code = "PROJECT_JOB_NOT_FOUND"
    status_code = 404


class ProjectJobConflictError(MediaAPIError):
    code = "PROJECT_JOB_CONFLICT"
    status_code = 409


class ProjectEditorNotFoundError(MediaAPIError):
    code = "PROJECT_EDITOR_NOT_FOUND"
    status_code = 404


class ProjectEditorConflictError(MediaAPIError):
    code = "PROJECT_EDITOR_REVISION_CONFLICT"
    status_code = 409


class ProjectEditorInvalidError(MediaAPIError):
    code = "PROJECT_EDITOR_INVALID"
    status_code = 422


class ProjectEditorAssetInvalidError(MediaAPIError):
    code = "PROJECT_EDITOR_ASSET_INVALID"
    status_code = 422


class ProjectRenderNotFoundError(MediaAPIError):
    code = "PROJECT_RENDER_NOT_FOUND"
    status_code = 404


class ProjectRenderConflictError(MediaAPIError):
    code = "PROJECT_RENDER_CONFLICT"
    status_code = 409


class ProjectRenderInvalidError(MediaAPIError):
    code = "PROJECT_RENDER_INVALID"
    status_code = 422


class ProjectRenderUnsupportedError(MediaAPIError):
    code = "PROJECT_RENDER_UNSUPPORTED_FEATURE"
    status_code = 422


class ProjectRenderLimitError(MediaAPIError):
    code = "PROJECT_RENDER_LIMIT_EXCEEDED"
    status_code = 429


class ProjectRenderTransitionError(RuntimeError):
    """Internal invariant failure; never accept state transitions from clients."""

class CollaborationUnauthorizedError(MediaAPIError):
    code = "COLLABORATION_UNAUTHORIZED"
    status_code = 403


class TeamNotFoundError(MediaAPIError):
    code = "TEAM_NOT_FOUND"
    status_code = 404


class TeamMemberNotFoundError(MediaAPIError):
    code = "TEAM_MEMBER_NOT_FOUND"
    status_code = 404


class ApprovalRequestNotFoundError(MediaAPIError):
    code = "APPROVAL_REQUEST_NOT_FOUND"
    status_code = 404


class ApprovalWorkflowStateError(MediaAPIError):
    code = "APPROVAL_WORKFLOW_STATE_ERROR"
    status_code = 409


class ApprovalSeparationOfDutiesError(MediaAPIError):
    code = "APPROVAL_SEPARATION_OF_DUTIES_ERROR"
    status_code = 403


class InvitationNotFoundError(MediaAPIError):
    code = "INVITATION_NOT_FOUND"
    status_code = 404


class InvitationExpiredError(MediaAPIError):
    code = "INVITATION_EXPIRED"
    status_code = 409