zou 0.20.82__py3-none-any.whl → 0.20.84__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- zou/__init__.py +1 -1
- zou/app/blueprints/assets/resources.py +1060 -153
- zou/app/blueprints/auth/resources.py +368 -238
- zou/app/blueprints/breakdown/resources.py +584 -94
- zou/app/blueprints/chats/resources.py +176 -37
- zou/app/blueprints/comments/resources.py +409 -150
- zou/app/blueprints/concepts/resources.py +443 -63
- zou/app/blueprints/crud/asset_instance.py +272 -0
- zou/app/blueprints/crud/attachment_file.py +263 -0
- zou/app/blueprints/crud/base.py +176 -69
- zou/app/blueprints/crud/budget.py +278 -0
- zou/app/blueprints/crud/budget_entry.py +269 -0
- zou/app/blueprints/crud/chat.py +282 -0
- zou/app/blueprints/crud/chat_message.py +286 -0
- zou/app/blueprints/crud/comments.py +312 -1
- zou/app/blueprints/crud/custom_action.py +268 -0
- zou/app/blueprints/crud/day_off.py +298 -0
- zou/app/blueprints/crud/department.py +268 -0
- zou/app/blueprints/crud/entity.py +297 -3
- zou/app/blueprints/crud/entity_link.py +303 -0
- zou/app/blueprints/crud/entity_type.py +269 -0
- zou/app/blueprints/crud/event.py +197 -0
- zou/app/blueprints/crud/file_status.py +268 -0
- zou/app/blueprints/crud/hardware_item.py +268 -0
- zou/app/blueprints/crud/metadata_descriptor.py +312 -0
- zou/app/blueprints/crud/milestone.py +302 -1
- zou/app/blueprints/crud/news.py +285 -0
- zou/app/blueprints/crud/notification.py +287 -0
- zou/app/blueprints/crud/organisation.py +269 -0
- zou/app/blueprints/crud/output_file.py +34 -10
- zou/app/blueprints/crud/output_type.py +30 -10
- zou/app/blueprints/crud/person.py +407 -2
- zou/app/blueprints/crud/playlist.py +322 -4
- zou/app/blueprints/crud/plugin.py +269 -0
- zou/app/blueprints/crud/preview_background_file.py +272 -0
- zou/app/blueprints/crud/preview_file.py +280 -9
- zou/app/blueprints/crud/production_schedule_version.py +569 -0
- zou/app/blueprints/crud/project.py +440 -0
- zou/app/blueprints/crud/project_status.py +268 -0
- zou/app/blueprints/crud/salary_scale.py +185 -5
- zou/app/blueprints/crud/schedule_item.py +305 -0
- zou/app/blueprints/crud/search_filter.py +302 -0
- zou/app/blueprints/crud/search_filter_group.py +270 -0
- zou/app/blueprints/crud/software.py +30 -10
- zou/app/blueprints/crud/status_automation.py +296 -2
- zou/app/blueprints/crud/studio.py +268 -0
- zou/app/blueprints/crud/subscription.py +279 -0
- zou/app/blueprints/crud/task.py +325 -5
- zou/app/blueprints/crud/task_status.py +301 -0
- zou/app/blueprints/crud/task_type.py +283 -0
- zou/app/blueprints/crud/time_spent.py +327 -0
- zou/app/blueprints/crud/working_file.py +273 -10
- zou/app/blueprints/departments/resources.py +302 -68
- zou/app/blueprints/edits/resources.py +651 -81
- zou/app/blueprints/entities/resources.py +104 -39
- zou/app/blueprints/events/resources.py +96 -8
- zou/app/blueprints/export/csv/assets.py +15 -5
- zou/app/blueprints/export/csv/base.py +12 -3
- zou/app/blueprints/export/csv/casting.py +32 -5
- zou/app/blueprints/export/csv/edits.py +15 -5
- zou/app/blueprints/export/csv/persons.py +24 -0
- zou/app/blueprints/export/csv/playlists.py +16 -5
- zou/app/blueprints/export/csv/projects.py +23 -0
- zou/app/blueprints/export/csv/shots.py +15 -5
- zou/app/blueprints/export/csv/task_types.py +23 -0
- zou/app/blueprints/export/csv/tasks.py +24 -0
- zou/app/blueprints/export/csv/time_spents.py +24 -0
- zou/app/blueprints/files/resources.py +928 -377
- zou/app/blueprints/index/resources.py +49 -42
- zou/app/blueprints/news/resources.py +47 -27
- zou/app/blueprints/persons/resources.py +644 -271
- zou/app/blueprints/playlists/resources.py +154 -72
- zou/app/blueprints/previews/resources.py +473 -228
- zou/app/blueprints/projects/__init__.py +5 -0
- zou/app/blueprints/projects/resources.py +987 -420
- zou/app/blueprints/search/resources.py +44 -32
- zou/app/blueprints/shots/resources.py +1338 -88
- zou/app/blueprints/source/csv/assets.py +44 -6
- zou/app/blueprints/source/csv/casting.py +43 -6
- zou/app/blueprints/source/csv/edits.py +47 -9
- zou/app/blueprints/source/csv/persons.py +43 -4
- zou/app/blueprints/source/csv/shots.py +47 -6
- zou/app/blueprints/source/csv/task_type_estimations.py +95 -35
- zou/app/blueprints/source/kitsu.py +433 -11
- zou/app/blueprints/source/otio.py +215 -20
- zou/app/blueprints/source/shotgun/assets.py +146 -0
- zou/app/blueprints/source/shotgun/base.py +85 -14
- zou/app/blueprints/source/shotgun/episode.py +124 -0
- zou/app/blueprints/source/shotgun/import_errors.py +105 -14
- zou/app/blueprints/source/shotgun/notes.py +132 -0
- zou/app/blueprints/source/shotgun/person.py +163 -0
- zou/app/blueprints/source/shotgun/project.py +120 -0
- zou/app/blueprints/source/shotgun/scene.py +120 -0
- zou/app/blueprints/source/shotgun/sequence.py +134 -0
- zou/app/blueprints/source/shotgun/shot.py +166 -0
- zou/app/blueprints/source/shotgun/status.py +129 -0
- zou/app/blueprints/source/shotgun/steps.py +138 -0
- zou/app/blueprints/source/shotgun/tasks.py +199 -0
- zou/app/blueprints/source/shotgun/team.py +132 -0
- zou/app/blueprints/source/shotgun/versions.py +155 -0
- zou/app/blueprints/tasks/resources.py +1197 -308
- zou/app/blueprints/user/resources.py +1808 -215
- zou/app/models/metadata_descriptor.py +1 -0
- zou/app/services/persons_service.py +1 -1
- zou/app/services/projects_service.py +45 -1
- zou/app/services/time_spents_service.py +1 -1
- zou/app/swagger.py +100 -27
- zou/migrations/versions/a1b2c3d4e5f6_add_position_to_metadata_descriptor.py +32 -0
- {zou-0.20.82.dist-info → zou-0.20.84.dist-info}/METADATA +18 -18
- {zou-0.20.82.dist-info → zou-0.20.84.dist-info}/RECORD +114 -113
- {zou-0.20.82.dist-info → zou-0.20.84.dist-info}/WHEEL +0 -0
- {zou-0.20.82.dist-info → zou-0.20.84.dist-info}/entry_points.txt +0 -0
- {zou-0.20.82.dist-info → zou-0.20.84.dist-info}/licenses/LICENSE +0 -0
- {zou-0.20.82.dist-info → zou-0.20.84.dist-info}/top_level.txt +0 -0
|
@@ -27,10 +27,12 @@ class ShotResource(Resource, ArgsMixin):
|
|
|
27
27
|
@jwt_required()
|
|
28
28
|
def get(self, shot_id):
|
|
29
29
|
"""
|
|
30
|
-
|
|
30
|
+
Get shot
|
|
31
31
|
---
|
|
32
32
|
tags:
|
|
33
33
|
- Shots
|
|
34
|
+
description: Get a shot by id. Returns full shot data. Use this to fetch
|
|
35
|
+
a single shot with all fields needed by the UI.
|
|
34
36
|
parameters:
|
|
35
37
|
- in: path
|
|
36
38
|
name: shot_id
|
|
@@ -40,7 +42,33 @@ class ShotResource(Resource, ArgsMixin):
|
|
|
40
42
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
41
43
|
responses:
|
|
42
44
|
200:
|
|
43
|
-
description:
|
|
45
|
+
description: Shot found and returned
|
|
46
|
+
content:
|
|
47
|
+
application/json:
|
|
48
|
+
schema:
|
|
49
|
+
type: object
|
|
50
|
+
properties:
|
|
51
|
+
id:
|
|
52
|
+
type: string
|
|
53
|
+
format: uuid
|
|
54
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
55
|
+
name:
|
|
56
|
+
type: string
|
|
57
|
+
example: SH010
|
|
58
|
+
project_id:
|
|
59
|
+
type: string
|
|
60
|
+
format: uuid
|
|
61
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
62
|
+
parent_id:
|
|
63
|
+
type: string
|
|
64
|
+
format: uuid
|
|
65
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
66
|
+
nb_frames:
|
|
67
|
+
type: integer
|
|
68
|
+
example: 120
|
|
69
|
+
data:
|
|
70
|
+
type: object
|
|
71
|
+
example: {"camera": "camA", "cut_in": 1001}
|
|
44
72
|
"""
|
|
45
73
|
shot = shots_service.get_full_shot(shot_id)
|
|
46
74
|
if shot is None:
|
|
@@ -53,10 +81,12 @@ class ShotResource(Resource, ArgsMixin):
|
|
|
53
81
|
@jwt_required()
|
|
54
82
|
def put(self, shot_id):
|
|
55
83
|
"""
|
|
56
|
-
Update
|
|
84
|
+
Update shot
|
|
57
85
|
---
|
|
58
86
|
tags:
|
|
59
87
|
- Shots
|
|
88
|
+
description: Update a shot by id. Only mutable fields are allowed. Send a
|
|
89
|
+
JSON body with the fields to change.
|
|
60
90
|
parameters:
|
|
61
91
|
- in: path
|
|
62
92
|
name: shot_id
|
|
@@ -70,10 +100,51 @@ class ShotResource(Resource, ArgsMixin):
|
|
|
70
100
|
application/json:
|
|
71
101
|
schema:
|
|
72
102
|
type: object
|
|
73
|
-
description:
|
|
103
|
+
description: Data to update on the shot
|
|
104
|
+
properties:
|
|
105
|
+
name:
|
|
106
|
+
type: string
|
|
107
|
+
example: SH010 new name
|
|
108
|
+
description:
|
|
109
|
+
type: string
|
|
110
|
+
example: Update description for the shot
|
|
111
|
+
nb_frames:
|
|
112
|
+
type: integer
|
|
113
|
+
example: 24
|
|
114
|
+
data:
|
|
115
|
+
type: object
|
|
116
|
+
example: {"camera": "camA", "cut_in": 1001}
|
|
74
117
|
responses:
|
|
75
118
|
200:
|
|
76
|
-
description:
|
|
119
|
+
description: Shot updated
|
|
120
|
+
content:
|
|
121
|
+
application/json:
|
|
122
|
+
schema:
|
|
123
|
+
type: object
|
|
124
|
+
properties:
|
|
125
|
+
id:
|
|
126
|
+
type: string
|
|
127
|
+
format: uuid
|
|
128
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
129
|
+
name:
|
|
130
|
+
type: string
|
|
131
|
+
example: SH010
|
|
132
|
+
project_id:
|
|
133
|
+
type: string
|
|
134
|
+
format: uuid
|
|
135
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
136
|
+
parent_id:
|
|
137
|
+
type: string
|
|
138
|
+
format: uuid
|
|
139
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
140
|
+
nb_frames:
|
|
141
|
+
type: integer
|
|
142
|
+
example: 120
|
|
143
|
+
data:
|
|
144
|
+
type: object
|
|
145
|
+
example: {"camera": "camA", "cut_in": 1001}
|
|
146
|
+
400:
|
|
147
|
+
description: Invalid body or unsupported fields
|
|
77
148
|
"""
|
|
78
149
|
shot = shots_service.get_shot(shot_id)
|
|
79
150
|
user_service.check_manager_project_access(shot["project_id"])
|
|
@@ -102,10 +173,12 @@ class ShotResource(Resource, ArgsMixin):
|
|
|
102
173
|
@jwt_required()
|
|
103
174
|
def delete(self, shot_id):
|
|
104
175
|
"""
|
|
105
|
-
Delete
|
|
176
|
+
Delete shot
|
|
106
177
|
---
|
|
107
178
|
tags:
|
|
108
179
|
- Shots
|
|
180
|
+
description: Delete a shot by id. Requires manager access or ownership of
|
|
181
|
+
the shot.
|
|
109
182
|
parameters:
|
|
110
183
|
- in: path
|
|
111
184
|
name: shot_id
|
|
@@ -115,7 +188,7 @@ class ShotResource(Resource, ArgsMixin):
|
|
|
115
188
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
116
189
|
responses:
|
|
117
190
|
204:
|
|
118
|
-
description:
|
|
191
|
+
description: Shot deleted
|
|
119
192
|
"""
|
|
120
193
|
force = self.get_force()
|
|
121
194
|
shot = shots_service.get_shot(shot_id)
|
|
@@ -131,10 +204,11 @@ class SceneResource(Resource):
|
|
|
131
204
|
@jwt_required()
|
|
132
205
|
def get(self, scene_id):
|
|
133
206
|
"""
|
|
134
|
-
|
|
207
|
+
Get scene
|
|
135
208
|
---
|
|
136
209
|
tags:
|
|
137
210
|
- Shots
|
|
211
|
+
description: Get a scene by id. Returns full scene data needed by clients.
|
|
138
212
|
parameters:
|
|
139
213
|
- in: path
|
|
140
214
|
name: scene_id
|
|
@@ -144,7 +218,23 @@ class SceneResource(Resource):
|
|
|
144
218
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
145
219
|
responses:
|
|
146
220
|
200:
|
|
147
|
-
description:
|
|
221
|
+
description: Scene found and returned
|
|
222
|
+
content:
|
|
223
|
+
application/json:
|
|
224
|
+
schema:
|
|
225
|
+
type: object
|
|
226
|
+
properties:
|
|
227
|
+
id:
|
|
228
|
+
type: string
|
|
229
|
+
format: uuid
|
|
230
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
231
|
+
name:
|
|
232
|
+
type: string
|
|
233
|
+
example: SC001
|
|
234
|
+
project_id:
|
|
235
|
+
type: string
|
|
236
|
+
format: uuid
|
|
237
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
148
238
|
"""
|
|
149
239
|
scene = shots_service.get_full_scene(scene_id)
|
|
150
240
|
user_service.check_project_access(scene["project_id"])
|
|
@@ -154,10 +244,11 @@ class SceneResource(Resource):
|
|
|
154
244
|
@jwt_required()
|
|
155
245
|
def delete(self, scene_id):
|
|
156
246
|
"""
|
|
157
|
-
Delete
|
|
247
|
+
Delete scene
|
|
158
248
|
---
|
|
159
249
|
tags:
|
|
160
250
|
- Shots
|
|
251
|
+
description: Delete a scene by id. Requires manager access or ownership.
|
|
161
252
|
parameters:
|
|
162
253
|
- in: path
|
|
163
254
|
name: scene_id
|
|
@@ -167,7 +258,7 @@ class SceneResource(Resource):
|
|
|
167
258
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
168
259
|
responses:
|
|
169
260
|
204:
|
|
170
|
-
description:
|
|
261
|
+
description: Scene deleted
|
|
171
262
|
"""
|
|
172
263
|
scene = shots_service.get_scene(scene_id)
|
|
173
264
|
if scene["created_by"] == persons_service.get_current_user()["id"]:
|
|
@@ -182,11 +273,12 @@ class ShotsResource(Resource):
|
|
|
182
273
|
@jwt_required()
|
|
183
274
|
def get(self):
|
|
184
275
|
"""
|
|
185
|
-
|
|
276
|
+
Get shots
|
|
186
277
|
---
|
|
187
278
|
tags:
|
|
188
279
|
- Shots
|
|
189
|
-
description:
|
|
280
|
+
description: Get shots with optional filters. Use query params like
|
|
281
|
+
project_id, sequence_id or parent_id to filter results.
|
|
190
282
|
parameters:
|
|
191
283
|
- in: query
|
|
192
284
|
name: sequence_id
|
|
@@ -209,6 +301,28 @@ class ShotsResource(Resource):
|
|
|
209
301
|
responses:
|
|
210
302
|
200:
|
|
211
303
|
description: All shot entries
|
|
304
|
+
content:
|
|
305
|
+
application/json:
|
|
306
|
+
schema:
|
|
307
|
+
type: array
|
|
308
|
+
items:
|
|
309
|
+
type: object
|
|
310
|
+
properties:
|
|
311
|
+
id:
|
|
312
|
+
type: string
|
|
313
|
+
format: uuid
|
|
314
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
315
|
+
name:
|
|
316
|
+
type: string
|
|
317
|
+
example: SH010
|
|
318
|
+
project_id:
|
|
319
|
+
type: string
|
|
320
|
+
format: uuid
|
|
321
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
322
|
+
parent_id:
|
|
323
|
+
type: string
|
|
324
|
+
format: uuid
|
|
325
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
212
326
|
"""
|
|
213
327
|
criterions = query.get_query_criterions_from_request(request)
|
|
214
328
|
if "sequence_id" in criterions:
|
|
@@ -228,11 +342,12 @@ class AllShotsResource(Resource):
|
|
|
228
342
|
@jwt_required()
|
|
229
343
|
def get(self):
|
|
230
344
|
"""
|
|
231
|
-
|
|
345
|
+
Get all shots
|
|
232
346
|
---
|
|
233
347
|
tags:
|
|
234
348
|
- Shots
|
|
235
|
-
description:
|
|
349
|
+
description: Get all shots across projects with optional filters. Use
|
|
350
|
+
sequence_id, project_id, or parent_id to filter.
|
|
236
351
|
parameters:
|
|
237
352
|
- in: query
|
|
238
353
|
name: sequence_id
|
|
@@ -255,6 +370,28 @@ class AllShotsResource(Resource):
|
|
|
255
370
|
responses:
|
|
256
371
|
200:
|
|
257
372
|
description: All shot entries
|
|
373
|
+
content:
|
|
374
|
+
application/json:
|
|
375
|
+
schema:
|
|
376
|
+
type: array
|
|
377
|
+
items:
|
|
378
|
+
type: object
|
|
379
|
+
properties:
|
|
380
|
+
id:
|
|
381
|
+
type: string
|
|
382
|
+
format: uuid
|
|
383
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
384
|
+
name:
|
|
385
|
+
type: string
|
|
386
|
+
example: SH020
|
|
387
|
+
project_id:
|
|
388
|
+
type: string
|
|
389
|
+
format: uuid
|
|
390
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
391
|
+
parent_id:
|
|
392
|
+
type: string
|
|
393
|
+
format: uuid
|
|
394
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
258
395
|
"""
|
|
259
396
|
criterions = query.get_query_criterions_from_request(request)
|
|
260
397
|
if "sequence_id" in criterions:
|
|
@@ -274,11 +411,12 @@ class ScenesResource(Resource):
|
|
|
274
411
|
@jwt_required()
|
|
275
412
|
def get(self):
|
|
276
413
|
"""
|
|
277
|
-
|
|
414
|
+
Get scenes
|
|
278
415
|
---
|
|
279
416
|
tags:
|
|
280
417
|
- Shots
|
|
281
|
-
description:
|
|
418
|
+
description: Get scenes with optional filters. Use project_id to filter
|
|
419
|
+
by project.
|
|
282
420
|
parameters:
|
|
283
421
|
- in: query
|
|
284
422
|
name: project_id
|
|
@@ -289,6 +427,24 @@ class ScenesResource(Resource):
|
|
|
289
427
|
responses:
|
|
290
428
|
200:
|
|
291
429
|
description: All scene entries
|
|
430
|
+
content:
|
|
431
|
+
application/json:
|
|
432
|
+
schema:
|
|
433
|
+
type: array
|
|
434
|
+
items:
|
|
435
|
+
type: object
|
|
436
|
+
properties:
|
|
437
|
+
id:
|
|
438
|
+
type: string
|
|
439
|
+
format: uuid
|
|
440
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
441
|
+
name:
|
|
442
|
+
type: string
|
|
443
|
+
example: SC001
|
|
444
|
+
project_id:
|
|
445
|
+
type: string
|
|
446
|
+
format: uuid
|
|
447
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
292
448
|
"""
|
|
293
449
|
criterions = query.get_query_criterions_from_request(request)
|
|
294
450
|
user_service.check_project_access(criterions.get("project_id", None))
|
|
@@ -299,10 +455,12 @@ class ShotAssetsResource(Resource):
|
|
|
299
455
|
@jwt_required()
|
|
300
456
|
def get(self, shot_id):
|
|
301
457
|
"""
|
|
302
|
-
|
|
458
|
+
Get shot assets
|
|
303
459
|
---
|
|
304
460
|
tags:
|
|
305
461
|
- Shots
|
|
462
|
+
description: Get assets linked to a shot. Returns the breakdown casting
|
|
463
|
+
for the shot.
|
|
306
464
|
parameters:
|
|
307
465
|
- in: path
|
|
308
466
|
name: shot_id
|
|
@@ -313,6 +471,24 @@ class ShotAssetsResource(Resource):
|
|
|
313
471
|
responses:
|
|
314
472
|
200:
|
|
315
473
|
description: All assets for given shot
|
|
474
|
+
content:
|
|
475
|
+
application/json:
|
|
476
|
+
schema:
|
|
477
|
+
type: array
|
|
478
|
+
items:
|
|
479
|
+
type: object
|
|
480
|
+
properties:
|
|
481
|
+
id:
|
|
482
|
+
type: string
|
|
483
|
+
format: uuid
|
|
484
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
485
|
+
name:
|
|
486
|
+
type: string
|
|
487
|
+
example: Character A
|
|
488
|
+
entity_type_id:
|
|
489
|
+
type: string
|
|
490
|
+
format: uuid
|
|
491
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
316
492
|
"""
|
|
317
493
|
shot = shots_service.get_shot(shot_id)
|
|
318
494
|
user_service.check_project_access(shot["project_id"])
|
|
@@ -324,10 +500,11 @@ class ShotTaskTypesResource(Resource):
|
|
|
324
500
|
@jwt_required()
|
|
325
501
|
def get(self, shot_id):
|
|
326
502
|
"""
|
|
327
|
-
|
|
503
|
+
Get shot task types
|
|
328
504
|
---
|
|
329
505
|
tags:
|
|
330
506
|
- Shots
|
|
507
|
+
description: Get task types for a shot.
|
|
331
508
|
parameters:
|
|
332
509
|
- in: path
|
|
333
510
|
name: shot_id
|
|
@@ -338,6 +515,20 @@ class ShotTaskTypesResource(Resource):
|
|
|
338
515
|
responses:
|
|
339
516
|
200:
|
|
340
517
|
description: All task types related to given shot
|
|
518
|
+
content:
|
|
519
|
+
application/json:
|
|
520
|
+
schema:
|
|
521
|
+
type: array
|
|
522
|
+
items:
|
|
523
|
+
type: object
|
|
524
|
+
properties:
|
|
525
|
+
id:
|
|
526
|
+
type: string
|
|
527
|
+
format: uuid
|
|
528
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
529
|
+
name:
|
|
530
|
+
type: string
|
|
531
|
+
example: Animation
|
|
341
532
|
"""
|
|
342
533
|
shot = shots_service.get_shot(shot_id)
|
|
343
534
|
user_service.check_project_access(shot["project_id"])
|
|
@@ -349,10 +540,12 @@ class ShotTasksResource(Resource, ArgsMixin):
|
|
|
349
540
|
@jwt_required()
|
|
350
541
|
def get(self, shot_id):
|
|
351
542
|
"""
|
|
352
|
-
|
|
543
|
+
Get shot tasks
|
|
353
544
|
---
|
|
354
545
|
tags:
|
|
355
546
|
- Shots
|
|
547
|
+
description: Get tasks for a shot. Optionally include relations using
|
|
548
|
+
query params.
|
|
356
549
|
parameters:
|
|
357
550
|
- in: path
|
|
358
551
|
name: shot_id
|
|
@@ -363,6 +556,42 @@ class ShotTasksResource(Resource, ArgsMixin):
|
|
|
363
556
|
responses:
|
|
364
557
|
200:
|
|
365
558
|
description: All tasks related to given shot
|
|
559
|
+
content:
|
|
560
|
+
application/json:
|
|
561
|
+
schema:
|
|
562
|
+
type: array
|
|
563
|
+
items:
|
|
564
|
+
type: object
|
|
565
|
+
properties:
|
|
566
|
+
id:
|
|
567
|
+
type: string
|
|
568
|
+
format: uuid
|
|
569
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
570
|
+
name:
|
|
571
|
+
type: string
|
|
572
|
+
example: SH010 Animation
|
|
573
|
+
task_type_id:
|
|
574
|
+
type: string
|
|
575
|
+
format: uuid
|
|
576
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
577
|
+
task_status_id:
|
|
578
|
+
type: string
|
|
579
|
+
format: uuid
|
|
580
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
581
|
+
entity_id:
|
|
582
|
+
type: string
|
|
583
|
+
format: uuid
|
|
584
|
+
example: d24a6ea4-ce75-4665-a070-57453082c25
|
|
585
|
+
project_id:
|
|
586
|
+
type: string
|
|
587
|
+
format: uuid
|
|
588
|
+
example: e24a6ea4-ce75-4665-a070-57453082c25
|
|
589
|
+
assignees:
|
|
590
|
+
type: array
|
|
591
|
+
items:
|
|
592
|
+
type: string
|
|
593
|
+
format: uuid
|
|
594
|
+
example: ["f24a6ea4-ce75-4665-a070-57453082c25"]
|
|
366
595
|
"""
|
|
367
596
|
shot = shots_service.get_shot(shot_id)
|
|
368
597
|
user_service.check_project_access(shot["project_id"])
|
|
@@ -375,10 +604,12 @@ class SequenceShotTasksResource(Resource, ArgsMixin):
|
|
|
375
604
|
@jwt_required()
|
|
376
605
|
def get(self, sequence_id):
|
|
377
606
|
"""
|
|
378
|
-
|
|
607
|
+
Get sequence shot tasks
|
|
379
608
|
---
|
|
380
609
|
tags:
|
|
381
610
|
- Shots
|
|
611
|
+
description: Get shot tasks for a sequence. Restricted for vendor
|
|
612
|
+
permissions.
|
|
382
613
|
parameters:
|
|
383
614
|
- in: path
|
|
384
615
|
name: sequence_id
|
|
@@ -388,7 +619,33 @@ class SequenceShotTasksResource(Resource, ArgsMixin):
|
|
|
388
619
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
389
620
|
responses:
|
|
390
621
|
200:
|
|
391
|
-
description: All
|
|
622
|
+
description: All shot tasks related to given sequence
|
|
623
|
+
content:
|
|
624
|
+
application/json:
|
|
625
|
+
schema:
|
|
626
|
+
type: array
|
|
627
|
+
items:
|
|
628
|
+
type: object
|
|
629
|
+
properties:
|
|
630
|
+
id:
|
|
631
|
+
type: string
|
|
632
|
+
format: uuid
|
|
633
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
634
|
+
name:
|
|
635
|
+
type: string
|
|
636
|
+
example: SH010 Animation
|
|
637
|
+
task_type_id:
|
|
638
|
+
type: string
|
|
639
|
+
format: uuid
|
|
640
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
641
|
+
entity_id:
|
|
642
|
+
type: string
|
|
643
|
+
format: uuid
|
|
644
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
645
|
+
task_status_id:
|
|
646
|
+
type: string
|
|
647
|
+
format: uuid
|
|
648
|
+
example: d24a6ea4-ce75-4665-a070-57453082c25
|
|
392
649
|
"""
|
|
393
650
|
sequence = shots_service.get_sequence(sequence_id)
|
|
394
651
|
user_service.check_project_access(sequence["project_id"])
|
|
@@ -405,10 +662,12 @@ class EpisodeShotTasksResource(Resource, ArgsMixin):
|
|
|
405
662
|
@jwt_required()
|
|
406
663
|
def get(self, episode_id):
|
|
407
664
|
"""
|
|
408
|
-
|
|
665
|
+
Get episode shot tasks
|
|
409
666
|
---
|
|
410
667
|
tags:
|
|
411
668
|
- Shots
|
|
669
|
+
description: Get shot tasks for an episode. Restricted for vendor
|
|
670
|
+
permissions.
|
|
412
671
|
parameters:
|
|
413
672
|
- in: path
|
|
414
673
|
name: episode_id
|
|
@@ -418,7 +677,33 @@ class EpisodeShotTasksResource(Resource, ArgsMixin):
|
|
|
418
677
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
419
678
|
responses:
|
|
420
679
|
200:
|
|
421
|
-
description: All
|
|
680
|
+
description: All shot tasks related to given episode
|
|
681
|
+
content:
|
|
682
|
+
application/json:
|
|
683
|
+
schema:
|
|
684
|
+
type: array
|
|
685
|
+
items:
|
|
686
|
+
type: object
|
|
687
|
+
properties:
|
|
688
|
+
id:
|
|
689
|
+
type: string
|
|
690
|
+
format: uuid
|
|
691
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
692
|
+
name:
|
|
693
|
+
type: string
|
|
694
|
+
example: EP01 Layout
|
|
695
|
+
task_type_id:
|
|
696
|
+
type: string
|
|
697
|
+
format: uuid
|
|
698
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
699
|
+
entity_id:
|
|
700
|
+
type: string
|
|
701
|
+
format: uuid
|
|
702
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
703
|
+
task_status_id:
|
|
704
|
+
type: string
|
|
705
|
+
format: uuid
|
|
706
|
+
example: d24a6ea4-ce75-4665-a070-57453082c25
|
|
422
707
|
"""
|
|
423
708
|
episode = shots_service.get_episode(episode_id)
|
|
424
709
|
user_service.check_project_access(episode["project_id"])
|
|
@@ -435,10 +720,12 @@ class EpisodeAssetTasksResource(Resource, ArgsMixin):
|
|
|
435
720
|
@jwt_required()
|
|
436
721
|
def get(self, episode_id):
|
|
437
722
|
"""
|
|
438
|
-
|
|
723
|
+
Get episode asset tasks
|
|
439
724
|
---
|
|
440
725
|
tags:
|
|
441
726
|
- Shots
|
|
727
|
+
description: Get asset tasks for an episode. Restricted for vendor
|
|
728
|
+
permissions.
|
|
442
729
|
parameters:
|
|
443
730
|
- in: path
|
|
444
731
|
name: episode_id
|
|
@@ -449,6 +736,32 @@ class EpisodeAssetTasksResource(Resource, ArgsMixin):
|
|
|
449
736
|
responses:
|
|
450
737
|
200:
|
|
451
738
|
description: All assets tasks related to given episode
|
|
739
|
+
content:
|
|
740
|
+
application/json:
|
|
741
|
+
schema:
|
|
742
|
+
type: array
|
|
743
|
+
items:
|
|
744
|
+
type: object
|
|
745
|
+
properties:
|
|
746
|
+
id:
|
|
747
|
+
type: string
|
|
748
|
+
format: uuid
|
|
749
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
750
|
+
name:
|
|
751
|
+
type: string
|
|
752
|
+
example: Character Modeling
|
|
753
|
+
task_type_id:
|
|
754
|
+
type: string
|
|
755
|
+
format: uuid
|
|
756
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
757
|
+
entity_id:
|
|
758
|
+
type: string
|
|
759
|
+
format: uuid
|
|
760
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
761
|
+
task_status_id:
|
|
762
|
+
type: string
|
|
763
|
+
format: uuid
|
|
764
|
+
example: d24a6ea4-ce75-4665-a070-57453082c25
|
|
452
765
|
"""
|
|
453
766
|
episode = shots_service.get_episode(episode_id)
|
|
454
767
|
user_service.check_project_access(episode["project_id"])
|
|
@@ -465,10 +778,12 @@ class EpisodeShotsResource(Resource, ArgsMixin):
|
|
|
465
778
|
@jwt_required()
|
|
466
779
|
def get(self, episode_id):
|
|
467
780
|
"""
|
|
468
|
-
|
|
781
|
+
Get episode shots
|
|
469
782
|
---
|
|
470
783
|
tags:
|
|
471
784
|
- Shots
|
|
785
|
+
description: Get shots for an episode. Supports including relations via
|
|
786
|
+
query params.
|
|
472
787
|
parameters:
|
|
473
788
|
- in: path
|
|
474
789
|
name: episode_id
|
|
@@ -479,6 +794,28 @@ class EpisodeShotsResource(Resource, ArgsMixin):
|
|
|
479
794
|
responses:
|
|
480
795
|
200:
|
|
481
796
|
description: All shots related to given episode
|
|
797
|
+
content:
|
|
798
|
+
application/json:
|
|
799
|
+
schema:
|
|
800
|
+
type: array
|
|
801
|
+
items:
|
|
802
|
+
type: object
|
|
803
|
+
properties:
|
|
804
|
+
id:
|
|
805
|
+
type: string
|
|
806
|
+
format: uuid
|
|
807
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
808
|
+
name:
|
|
809
|
+
type: string
|
|
810
|
+
example: SH010
|
|
811
|
+
project_id:
|
|
812
|
+
type: string
|
|
813
|
+
format: uuid
|
|
814
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
815
|
+
parent_id:
|
|
816
|
+
type: string
|
|
817
|
+
format: uuid
|
|
818
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
482
819
|
"""
|
|
483
820
|
episode = shots_service.get_episode(episode_id)
|
|
484
821
|
user_service.check_project_access(episode["project_id"])
|
|
@@ -493,12 +830,12 @@ class ShotPreviewsResource(Resource):
|
|
|
493
830
|
@jwt_required()
|
|
494
831
|
def get(self, shot_id):
|
|
495
832
|
"""
|
|
496
|
-
|
|
833
|
+
Get shot previews
|
|
497
834
|
---
|
|
498
835
|
tags:
|
|
499
836
|
- Shots
|
|
500
|
-
description:
|
|
501
|
-
|
|
837
|
+
description: Return previews for a shot as a dict keyed by task type id.
|
|
838
|
+
Each value is an array of previews for that task type.
|
|
502
839
|
parameters:
|
|
503
840
|
- in: path
|
|
504
841
|
name: shot_id
|
|
@@ -508,7 +845,35 @@ class ShotPreviewsResource(Resource):
|
|
|
508
845
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
509
846
|
responses:
|
|
510
847
|
200:
|
|
511
|
-
description: All previews related to given
|
|
848
|
+
description: All previews related to given shot
|
|
849
|
+
content:
|
|
850
|
+
application/json:
|
|
851
|
+
schema:
|
|
852
|
+
type: object
|
|
853
|
+
additionalProperties:
|
|
854
|
+
type: array
|
|
855
|
+
items:
|
|
856
|
+
type: object
|
|
857
|
+
properties:
|
|
858
|
+
id:
|
|
859
|
+
type: string
|
|
860
|
+
format: uuid
|
|
861
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
862
|
+
revision:
|
|
863
|
+
type: integer
|
|
864
|
+
example: 3
|
|
865
|
+
file_id:
|
|
866
|
+
type: string
|
|
867
|
+
format: uuid
|
|
868
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
869
|
+
example:
|
|
870
|
+
"a24a6ea4-ce75-4665-a070-57453082c25": [
|
|
871
|
+
{
|
|
872
|
+
"id": "b24a6ea4-ce75-4665-a070-57453082c25",
|
|
873
|
+
"revision": 3,
|
|
874
|
+
"file_id": "c24a6ea4-ce75-4665-a070-57453082c25"
|
|
875
|
+
}
|
|
876
|
+
]
|
|
512
877
|
"""
|
|
513
878
|
shot = shots_service.get_shot(shot_id)
|
|
514
879
|
user_service.check_project_access(shot["project_id"])
|
|
@@ -520,10 +885,12 @@ class SequenceTasksResource(Resource, ArgsMixin):
|
|
|
520
885
|
@jwt_required()
|
|
521
886
|
def get(self, sequence_id):
|
|
522
887
|
"""
|
|
523
|
-
|
|
888
|
+
Get sequence tasks
|
|
524
889
|
---
|
|
525
890
|
tags:
|
|
526
891
|
- Shots
|
|
892
|
+
description: Get tasks for a sequence. Optionally include relations using
|
|
893
|
+
query params.
|
|
527
894
|
parameters:
|
|
528
895
|
- in: path
|
|
529
896
|
name: sequence_id
|
|
@@ -534,6 +901,36 @@ class SequenceTasksResource(Resource, ArgsMixin):
|
|
|
534
901
|
responses:
|
|
535
902
|
200:
|
|
536
903
|
description: All tasks related to given shot
|
|
904
|
+
content:
|
|
905
|
+
application/json:
|
|
906
|
+
schema:
|
|
907
|
+
type: array
|
|
908
|
+
items:
|
|
909
|
+
type: object
|
|
910
|
+
properties:
|
|
911
|
+
id:
|
|
912
|
+
type: string
|
|
913
|
+
format: uuid
|
|
914
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
915
|
+
name:
|
|
916
|
+
type: string
|
|
917
|
+
example: SH010 Animation
|
|
918
|
+
task_type_id:
|
|
919
|
+
type: string
|
|
920
|
+
format: uuid
|
|
921
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
922
|
+
task_status_id:
|
|
923
|
+
type: string
|
|
924
|
+
format: uuid
|
|
925
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
926
|
+
entity_id:
|
|
927
|
+
type: string
|
|
928
|
+
format: uuid
|
|
929
|
+
example: d24a6ea4-ce75-4665-a070-57453082c25
|
|
930
|
+
project_id:
|
|
931
|
+
type: string
|
|
932
|
+
format: uuid
|
|
933
|
+
example: e24a6ea4-ce75-4665-a070-57453082c25
|
|
537
934
|
"""
|
|
538
935
|
sequence = shots_service.get_sequence(sequence_id)
|
|
539
936
|
user_service.check_project_access(sequence["project_id"])
|
|
@@ -547,10 +944,11 @@ class SequenceTaskTypesResource(Resource):
|
|
|
547
944
|
@jwt_required()
|
|
548
945
|
def get(self, sequence_id):
|
|
549
946
|
"""
|
|
550
|
-
|
|
947
|
+
Get sequence task types
|
|
551
948
|
---
|
|
552
949
|
tags:
|
|
553
950
|
- Shots
|
|
951
|
+
description: Get task types for a sequence.
|
|
554
952
|
parameters:
|
|
555
953
|
- in: path
|
|
556
954
|
name: sequence_id
|
|
@@ -561,6 +959,20 @@ class SequenceTaskTypesResource(Resource):
|
|
|
561
959
|
responses:
|
|
562
960
|
200:
|
|
563
961
|
description: All task types related to given shot
|
|
962
|
+
content:
|
|
963
|
+
application/json:
|
|
964
|
+
schema:
|
|
965
|
+
type: array
|
|
966
|
+
items:
|
|
967
|
+
type: object
|
|
968
|
+
properties:
|
|
969
|
+
id:
|
|
970
|
+
type: string
|
|
971
|
+
format: uuid
|
|
972
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
973
|
+
name:
|
|
974
|
+
type: string
|
|
975
|
+
example: Animation
|
|
564
976
|
"""
|
|
565
977
|
sequence = shots_service.get_sequence(sequence_id)
|
|
566
978
|
user_service.check_project_access(sequence["project_id"])
|
|
@@ -572,10 +984,11 @@ class ShotsAndTasksResource(Resource):
|
|
|
572
984
|
@jwt_required()
|
|
573
985
|
def get(self):
|
|
574
986
|
"""
|
|
575
|
-
|
|
987
|
+
Get shots and tasks
|
|
576
988
|
---
|
|
577
989
|
tags:
|
|
578
990
|
- Shots
|
|
991
|
+
description: Get shots and their related tasks. Optionally filter by project.
|
|
579
992
|
parameters:
|
|
580
993
|
- in: query
|
|
581
994
|
name: project_id
|
|
@@ -586,6 +999,36 @@ class ShotsAndTasksResource(Resource):
|
|
|
586
999
|
responses:
|
|
587
1000
|
200:
|
|
588
1001
|
description: All shots
|
|
1002
|
+
content:
|
|
1003
|
+
application/json:
|
|
1004
|
+
schema:
|
|
1005
|
+
type: array
|
|
1006
|
+
items:
|
|
1007
|
+
type: object
|
|
1008
|
+
properties:
|
|
1009
|
+
id:
|
|
1010
|
+
type: string
|
|
1011
|
+
format: uuid
|
|
1012
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
1013
|
+
name:
|
|
1014
|
+
type: string
|
|
1015
|
+
example: SH010
|
|
1016
|
+
project_id:
|
|
1017
|
+
type: string
|
|
1018
|
+
format: uuid
|
|
1019
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
1020
|
+
tasks:
|
|
1021
|
+
type: array
|
|
1022
|
+
items:
|
|
1023
|
+
type: object
|
|
1024
|
+
properties:
|
|
1025
|
+
id:
|
|
1026
|
+
type: string
|
|
1027
|
+
format: uuid
|
|
1028
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
1029
|
+
name:
|
|
1030
|
+
type: string
|
|
1031
|
+
example: SH010 Animation
|
|
589
1032
|
"""
|
|
590
1033
|
criterions = query.get_query_criterions_from_request(request)
|
|
591
1034
|
user_service.check_project_access(criterions.get("project_id", None))
|
|
@@ -604,10 +1047,11 @@ class SceneAndTasksResource(Resource):
|
|
|
604
1047
|
@jwt_required()
|
|
605
1048
|
def get(self):
|
|
606
1049
|
"""
|
|
607
|
-
|
|
1050
|
+
Get scenes and tasks
|
|
608
1051
|
---
|
|
609
1052
|
tags:
|
|
610
1053
|
- Shots
|
|
1054
|
+
description: Get scenes and their related tasks. Optionally filter by project.
|
|
611
1055
|
parameters:
|
|
612
1056
|
- in: query
|
|
613
1057
|
name: project_id
|
|
@@ -618,6 +1062,36 @@ class SceneAndTasksResource(Resource):
|
|
|
618
1062
|
responses:
|
|
619
1063
|
200:
|
|
620
1064
|
description: All scenes
|
|
1065
|
+
content:
|
|
1066
|
+
application/json:
|
|
1067
|
+
schema:
|
|
1068
|
+
type: array
|
|
1069
|
+
items:
|
|
1070
|
+
type: object
|
|
1071
|
+
properties:
|
|
1072
|
+
id:
|
|
1073
|
+
type: string
|
|
1074
|
+
format: uuid
|
|
1075
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
1076
|
+
name:
|
|
1077
|
+
type: string
|
|
1078
|
+
example: SC001
|
|
1079
|
+
project_id:
|
|
1080
|
+
type: string
|
|
1081
|
+
format: uuid
|
|
1082
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
1083
|
+
tasks:
|
|
1084
|
+
type: array
|
|
1085
|
+
items:
|
|
1086
|
+
type: object
|
|
1087
|
+
properties:
|
|
1088
|
+
id:
|
|
1089
|
+
type: string
|
|
1090
|
+
format: uuid
|
|
1091
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
1092
|
+
name:
|
|
1093
|
+
type: string
|
|
1094
|
+
example: Layout
|
|
621
1095
|
"""
|
|
622
1096
|
criterions = query.get_query_criterions_from_request(request)
|
|
623
1097
|
user_service.check_project_access(criterions.get("project_id", None))
|
|
@@ -629,10 +1103,12 @@ class SequenceAndTasksResource(Resource):
|
|
|
629
1103
|
@jwt_required()
|
|
630
1104
|
def get(self):
|
|
631
1105
|
"""
|
|
632
|
-
|
|
1106
|
+
Get sequences and tasks
|
|
633
1107
|
---
|
|
634
1108
|
tags:
|
|
635
1109
|
- Shots
|
|
1110
|
+
description: Get sequences and their related tasks.
|
|
1111
|
+
Optionally filter by project.
|
|
636
1112
|
parameters:
|
|
637
1113
|
- in: query
|
|
638
1114
|
name: project_id
|
|
@@ -643,6 +1119,36 @@ class SequenceAndTasksResource(Resource):
|
|
|
643
1119
|
responses:
|
|
644
1120
|
200:
|
|
645
1121
|
description: All sequences
|
|
1122
|
+
content:
|
|
1123
|
+
application/json:
|
|
1124
|
+
schema:
|
|
1125
|
+
type: array
|
|
1126
|
+
items:
|
|
1127
|
+
type: object
|
|
1128
|
+
properties:
|
|
1129
|
+
id:
|
|
1130
|
+
type: string
|
|
1131
|
+
format: uuid
|
|
1132
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
1133
|
+
name:
|
|
1134
|
+
type: string
|
|
1135
|
+
example: SQ010
|
|
1136
|
+
project_id:
|
|
1137
|
+
type: string
|
|
1138
|
+
format: uuid
|
|
1139
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
1140
|
+
tasks:
|
|
1141
|
+
type: array
|
|
1142
|
+
items:
|
|
1143
|
+
type: object
|
|
1144
|
+
properties:
|
|
1145
|
+
id:
|
|
1146
|
+
type: string
|
|
1147
|
+
format: uuid
|
|
1148
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
1149
|
+
name:
|
|
1150
|
+
type: string
|
|
1151
|
+
example: SQ010 Editing
|
|
646
1152
|
"""
|
|
647
1153
|
criterions = query.get_query_criterions_from_request(request)
|
|
648
1154
|
user_service.check_project_access(criterions.get("project_id", None))
|
|
@@ -654,10 +1160,12 @@ class EpisodeAndTasksResource(Resource):
|
|
|
654
1160
|
@jwt_required()
|
|
655
1161
|
def get(self):
|
|
656
1162
|
"""
|
|
657
|
-
|
|
1163
|
+
Get episodes and tasks
|
|
658
1164
|
---
|
|
659
1165
|
tags:
|
|
660
1166
|
- Shots
|
|
1167
|
+
description: Get episodes and their related tasks.
|
|
1168
|
+
Optionally filter by project.
|
|
661
1169
|
parameters:
|
|
662
1170
|
- in: query
|
|
663
1171
|
name: project_id
|
|
@@ -668,6 +1176,36 @@ class EpisodeAndTasksResource(Resource):
|
|
|
668
1176
|
responses:
|
|
669
1177
|
200:
|
|
670
1178
|
description: All episodes
|
|
1179
|
+
content:
|
|
1180
|
+
application/json:
|
|
1181
|
+
schema:
|
|
1182
|
+
type: array
|
|
1183
|
+
items:
|
|
1184
|
+
type: object
|
|
1185
|
+
properties:
|
|
1186
|
+
id:
|
|
1187
|
+
type: string
|
|
1188
|
+
format: uuid
|
|
1189
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
1190
|
+
name:
|
|
1191
|
+
type: string
|
|
1192
|
+
example: EP01
|
|
1193
|
+
project_id:
|
|
1194
|
+
type: string
|
|
1195
|
+
format: uuid
|
|
1196
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
1197
|
+
tasks:
|
|
1198
|
+
type: array
|
|
1199
|
+
items:
|
|
1200
|
+
type: object
|
|
1201
|
+
properties:
|
|
1202
|
+
id:
|
|
1203
|
+
type: string
|
|
1204
|
+
format: uuid
|
|
1205
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
1206
|
+
name:
|
|
1207
|
+
type: string
|
|
1208
|
+
example: EP01 Layout
|
|
671
1209
|
"""
|
|
672
1210
|
criterions = query.get_query_criterions_from_request(request)
|
|
673
1211
|
user_service.check_project_access(criterions.get("project_id", None))
|
|
@@ -679,10 +1217,12 @@ class ProjectShotsResource(Resource, ArgsMixin):
|
|
|
679
1217
|
@jwt_required()
|
|
680
1218
|
def get(self, project_id):
|
|
681
1219
|
"""
|
|
682
|
-
|
|
1220
|
+
Get project shots
|
|
683
1221
|
---
|
|
684
1222
|
tags:
|
|
685
1223
|
- Shots
|
|
1224
|
+
description: Get shots for a project. May limit to assigned shots for
|
|
1225
|
+
vendor users.
|
|
686
1226
|
parameters:
|
|
687
1227
|
- in: path
|
|
688
1228
|
name: project_id
|
|
@@ -693,6 +1233,28 @@ class ProjectShotsResource(Resource, ArgsMixin):
|
|
|
693
1233
|
responses:
|
|
694
1234
|
200:
|
|
695
1235
|
description: All shots related to given project
|
|
1236
|
+
content:
|
|
1237
|
+
application/json:
|
|
1238
|
+
schema:
|
|
1239
|
+
type: array
|
|
1240
|
+
items:
|
|
1241
|
+
type: object
|
|
1242
|
+
properties:
|
|
1243
|
+
id:
|
|
1244
|
+
type: string
|
|
1245
|
+
format: uuid
|
|
1246
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
1247
|
+
name:
|
|
1248
|
+
type: string
|
|
1249
|
+
example: SH010
|
|
1250
|
+
project_id:
|
|
1251
|
+
type: string
|
|
1252
|
+
format: uuid
|
|
1253
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
1254
|
+
parent_id:
|
|
1255
|
+
type: string
|
|
1256
|
+
format: uuid
|
|
1257
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
696
1258
|
"""
|
|
697
1259
|
projects_service.get_project(project_id)
|
|
698
1260
|
user_service.check_project_access(project_id)
|
|
@@ -703,10 +1265,12 @@ class ProjectShotsResource(Resource, ArgsMixin):
|
|
|
703
1265
|
@jwt_required()
|
|
704
1266
|
def post(self, project_id):
|
|
705
1267
|
"""
|
|
706
|
-
Create
|
|
1268
|
+
Create project shot
|
|
707
1269
|
---
|
|
708
1270
|
tags:
|
|
709
1271
|
- Shots
|
|
1272
|
+
description: Create a shot in a project. Provide name and optional
|
|
1273
|
+
fields like description, sequence_id and nb_frames.
|
|
710
1274
|
parameters:
|
|
711
1275
|
- in: path
|
|
712
1276
|
name: project_id
|
|
@@ -726,11 +1290,11 @@ class ProjectShotsResource(Resource, ArgsMixin):
|
|
|
726
1290
|
name:
|
|
727
1291
|
type: string
|
|
728
1292
|
required: true
|
|
729
|
-
example:
|
|
1293
|
+
example: SH010
|
|
730
1294
|
description:
|
|
731
1295
|
type: string
|
|
732
1296
|
required: false
|
|
733
|
-
example:
|
|
1297
|
+
example: A short description of the shot
|
|
734
1298
|
sequence_id:
|
|
735
1299
|
type: string
|
|
736
1300
|
format: uuid
|
|
@@ -742,7 +1306,33 @@ class ProjectShotsResource(Resource, ArgsMixin):
|
|
|
742
1306
|
example: 24
|
|
743
1307
|
responses:
|
|
744
1308
|
201:
|
|
745
|
-
description: Shot created
|
|
1309
|
+
description: Shot created
|
|
1310
|
+
content:
|
|
1311
|
+
application/json:
|
|
1312
|
+
schema:
|
|
1313
|
+
type: object
|
|
1314
|
+
properties:
|
|
1315
|
+
id:
|
|
1316
|
+
type: string
|
|
1317
|
+
format: uuid
|
|
1318
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
1319
|
+
name:
|
|
1320
|
+
type: string
|
|
1321
|
+
example: SH010
|
|
1322
|
+
project_id:
|
|
1323
|
+
type: string
|
|
1324
|
+
format: uuid
|
|
1325
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
1326
|
+
sequence_id:
|
|
1327
|
+
type: string
|
|
1328
|
+
format: uuid
|
|
1329
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
1330
|
+
nb_frames:
|
|
1331
|
+
type: integer
|
|
1332
|
+
example: 24
|
|
1333
|
+
description:
|
|
1334
|
+
type: string
|
|
1335
|
+
example: A short description of the shot
|
|
746
1336
|
"""
|
|
747
1337
|
(
|
|
748
1338
|
sequence_id,
|
|
@@ -789,10 +1379,12 @@ class ProjectSequencesResource(Resource, ArgsMixin):
|
|
|
789
1379
|
@jwt_required()
|
|
790
1380
|
def get(self, project_id):
|
|
791
1381
|
"""
|
|
792
|
-
|
|
1382
|
+
Get project sequences
|
|
793
1383
|
---
|
|
794
1384
|
tags:
|
|
795
1385
|
- Shots
|
|
1386
|
+
description: Get sequences for a project. May limit to assigned items for
|
|
1387
|
+
vendor users.
|
|
796
1388
|
parameters:
|
|
797
1389
|
- in: path
|
|
798
1390
|
name: project_id
|
|
@@ -803,6 +1395,28 @@ class ProjectSequencesResource(Resource, ArgsMixin):
|
|
|
803
1395
|
responses:
|
|
804
1396
|
200:
|
|
805
1397
|
description: All sequences related to given project
|
|
1398
|
+
content:
|
|
1399
|
+
application/json:
|
|
1400
|
+
schema:
|
|
1401
|
+
type: array
|
|
1402
|
+
items:
|
|
1403
|
+
type: object
|
|
1404
|
+
properties:
|
|
1405
|
+
id:
|
|
1406
|
+
type: string
|
|
1407
|
+
format: uuid
|
|
1408
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
1409
|
+
name:
|
|
1410
|
+
type: string
|
|
1411
|
+
example: SQ01
|
|
1412
|
+
project_id:
|
|
1413
|
+
type: string
|
|
1414
|
+
format: uuid
|
|
1415
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
1416
|
+
episode_id:
|
|
1417
|
+
type: string
|
|
1418
|
+
format: uuid
|
|
1419
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
806
1420
|
"""
|
|
807
1421
|
projects_service.get_project(project_id)
|
|
808
1422
|
user_service.check_project_access(project_id)
|
|
@@ -813,10 +1427,12 @@ class ProjectSequencesResource(Resource, ArgsMixin):
|
|
|
813
1427
|
@jwt_required()
|
|
814
1428
|
def post(self, project_id):
|
|
815
1429
|
"""
|
|
816
|
-
Create
|
|
1430
|
+
Create project sequence
|
|
817
1431
|
---
|
|
818
1432
|
tags:
|
|
819
1433
|
- Shots
|
|
1434
|
+
description: Create a sequence in a project. Provide name and optional
|
|
1435
|
+
episode_id.
|
|
820
1436
|
parameters:
|
|
821
1437
|
- in: path
|
|
822
1438
|
name: project_id
|
|
@@ -836,7 +1452,7 @@ class ProjectSequencesResource(Resource, ArgsMixin):
|
|
|
836
1452
|
name:
|
|
837
1453
|
type: string
|
|
838
1454
|
required: true
|
|
839
|
-
example:
|
|
1455
|
+
example: SQ01
|
|
840
1456
|
episode_id:
|
|
841
1457
|
type: string
|
|
842
1458
|
format: uuid
|
|
@@ -844,7 +1460,30 @@ class ProjectSequencesResource(Resource, ArgsMixin):
|
|
|
844
1460
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
845
1461
|
responses:
|
|
846
1462
|
201:
|
|
847
|
-
description: Sequence created
|
|
1463
|
+
description: Sequence created
|
|
1464
|
+
content:
|
|
1465
|
+
application/json:
|
|
1466
|
+
schema:
|
|
1467
|
+
type: object
|
|
1468
|
+
properties:
|
|
1469
|
+
id:
|
|
1470
|
+
type: string
|
|
1471
|
+
format: uuid
|
|
1472
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
1473
|
+
name:
|
|
1474
|
+
type: string
|
|
1475
|
+
example: SQ01
|
|
1476
|
+
project_id:
|
|
1477
|
+
type: string
|
|
1478
|
+
format: uuid
|
|
1479
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
1480
|
+
episode_id:
|
|
1481
|
+
type: string
|
|
1482
|
+
format: uuid
|
|
1483
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
1484
|
+
description:
|
|
1485
|
+
type: string
|
|
1486
|
+
example: A sequence description
|
|
848
1487
|
"""
|
|
849
1488
|
(episode_id, name, description, data) = self.get_arguments()
|
|
850
1489
|
projects_service.get_project(project_id)
|
|
@@ -881,10 +1520,12 @@ class ProjectEpisodesResource(Resource, ArgsMixin):
|
|
|
881
1520
|
@jwt_required()
|
|
882
1521
|
def get(self, project_id):
|
|
883
1522
|
"""
|
|
884
|
-
|
|
1523
|
+
Get project episodes
|
|
885
1524
|
---
|
|
886
1525
|
tags:
|
|
887
1526
|
- Shots
|
|
1527
|
+
description: Get episodes for a project. May limit to assigned items for
|
|
1528
|
+
vendor users.
|
|
888
1529
|
parameters:
|
|
889
1530
|
- in: path
|
|
890
1531
|
name: project_id
|
|
@@ -895,6 +1536,30 @@ class ProjectEpisodesResource(Resource, ArgsMixin):
|
|
|
895
1536
|
responses:
|
|
896
1537
|
200:
|
|
897
1538
|
description: All episodes related to given project
|
|
1539
|
+
content:
|
|
1540
|
+
application/json:
|
|
1541
|
+
schema:
|
|
1542
|
+
type: array
|
|
1543
|
+
items:
|
|
1544
|
+
type: object
|
|
1545
|
+
properties:
|
|
1546
|
+
id:
|
|
1547
|
+
type: string
|
|
1548
|
+
format: uuid
|
|
1549
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
1550
|
+
name:
|
|
1551
|
+
type: string
|
|
1552
|
+
example: EP01
|
|
1553
|
+
project_id:
|
|
1554
|
+
type: string
|
|
1555
|
+
format: uuid
|
|
1556
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
1557
|
+
description:
|
|
1558
|
+
type: string
|
|
1559
|
+
example: A short description of the episode
|
|
1560
|
+
status:
|
|
1561
|
+
type: string
|
|
1562
|
+
example: running
|
|
898
1563
|
"""
|
|
899
1564
|
projects_service.get_project(project_id)
|
|
900
1565
|
user_service.check_project_access(project_id)
|
|
@@ -905,10 +1570,12 @@ class ProjectEpisodesResource(Resource, ArgsMixin):
|
|
|
905
1570
|
@jwt_required()
|
|
906
1571
|
def post(self, project_id):
|
|
907
1572
|
"""
|
|
908
|
-
Create
|
|
1573
|
+
Create project episode
|
|
909
1574
|
---
|
|
910
1575
|
tags:
|
|
911
1576
|
- Shots
|
|
1577
|
+
description: Create an episode in a project. Provide name and
|
|
1578
|
+
description. Status is optional.
|
|
912
1579
|
parameters:
|
|
913
1580
|
- in: path
|
|
914
1581
|
name: project_id
|
|
@@ -929,14 +1596,40 @@ class ProjectEpisodesResource(Resource, ArgsMixin):
|
|
|
929
1596
|
name:
|
|
930
1597
|
type: string
|
|
931
1598
|
required: true
|
|
932
|
-
example:
|
|
1599
|
+
example: EP01
|
|
933
1600
|
description:
|
|
934
1601
|
type: string
|
|
935
1602
|
required: true
|
|
936
|
-
example:
|
|
1603
|
+
example: A short description of the episode
|
|
1604
|
+
status:
|
|
1605
|
+
type: string
|
|
1606
|
+
required: false
|
|
1607
|
+
example: running
|
|
937
1608
|
responses:
|
|
938
1609
|
201:
|
|
939
|
-
description: Episode created
|
|
1610
|
+
description: Episode created
|
|
1611
|
+
content:
|
|
1612
|
+
application/json:
|
|
1613
|
+
schema:
|
|
1614
|
+
type: object
|
|
1615
|
+
properties:
|
|
1616
|
+
id:
|
|
1617
|
+
type: string
|
|
1618
|
+
format: uuid
|
|
1619
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
1620
|
+
name:
|
|
1621
|
+
type: string
|
|
1622
|
+
example: EP01
|
|
1623
|
+
project_id:
|
|
1624
|
+
type: string
|
|
1625
|
+
format: uuid
|
|
1626
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
1627
|
+
description:
|
|
1628
|
+
type: string
|
|
1629
|
+
example: A short description of the episode
|
|
1630
|
+
status:
|
|
1631
|
+
type: string
|
|
1632
|
+
example: running
|
|
940
1633
|
"""
|
|
941
1634
|
name, status, description, data = self.get_arguments()
|
|
942
1635
|
projects_service.get_project(project_id)
|
|
@@ -970,10 +1663,12 @@ class ProjectEpisodeStatsResource(Resource):
|
|
|
970
1663
|
@jwt_required()
|
|
971
1664
|
def get(self, project_id):
|
|
972
1665
|
"""
|
|
973
|
-
|
|
1666
|
+
Get episode stats
|
|
974
1667
|
---
|
|
975
1668
|
tags:
|
|
976
1669
|
- Shots
|
|
1670
|
+
description: Return number of tasks by status, task type and episode
|
|
1671
|
+
for the project.
|
|
977
1672
|
parameters:
|
|
978
1673
|
- in: path
|
|
979
1674
|
name: project_id
|
|
@@ -984,6 +1679,43 @@ class ProjectEpisodeStatsResource(Resource):
|
|
|
984
1679
|
responses:
|
|
985
1680
|
200:
|
|
986
1681
|
description: Number of tasks by status, task types and episodes for given project
|
|
1682
|
+
content:
|
|
1683
|
+
application/json:
|
|
1684
|
+
schema:
|
|
1685
|
+
type: object
|
|
1686
|
+
additionalProperties:
|
|
1687
|
+
type: object
|
|
1688
|
+
additionalProperties:
|
|
1689
|
+
type: object
|
|
1690
|
+
additionalProperties:
|
|
1691
|
+
type: object
|
|
1692
|
+
properties:
|
|
1693
|
+
count:
|
|
1694
|
+
type: integer
|
|
1695
|
+
example: 120
|
|
1696
|
+
frames:
|
|
1697
|
+
type: integer
|
|
1698
|
+
example: 1440
|
|
1699
|
+
drawings:
|
|
1700
|
+
type: integer
|
|
1701
|
+
example: 360
|
|
1702
|
+
example:
|
|
1703
|
+
episodeId1:
|
|
1704
|
+
taskTypeId1:
|
|
1705
|
+
taskStatusId1:
|
|
1706
|
+
count: 50
|
|
1707
|
+
frames: 600
|
|
1708
|
+
drawings: 150
|
|
1709
|
+
taskStatusId2:
|
|
1710
|
+
count: 70
|
|
1711
|
+
frames: 840
|
|
1712
|
+
drawings: 210
|
|
1713
|
+
all:
|
|
1714
|
+
all:
|
|
1715
|
+
taskStatusId1:
|
|
1716
|
+
count: 200
|
|
1717
|
+
frames: 2400
|
|
1718
|
+
drawings: 600
|
|
987
1719
|
"""
|
|
988
1720
|
projects_service.get_project(project_id)
|
|
989
1721
|
user_service.check_project_access(project_id)
|
|
@@ -996,10 +1728,12 @@ class ProjectEpisodeRetakeStatsResource(Resource):
|
|
|
996
1728
|
@jwt_required()
|
|
997
1729
|
def get(self, project_id):
|
|
998
1730
|
"""
|
|
999
|
-
|
|
1731
|
+
Get episode retake stats
|
|
1000
1732
|
---
|
|
1001
1733
|
tags:
|
|
1002
1734
|
- Shots
|
|
1735
|
+
description: Return retake and done counts by task type and episode.
|
|
1736
|
+
Includes evolution data and max retake count.
|
|
1003
1737
|
parameters:
|
|
1004
1738
|
- in: path
|
|
1005
1739
|
name: project_id
|
|
@@ -1010,6 +1744,121 @@ class ProjectEpisodeRetakeStatsResource(Resource):
|
|
|
1010
1744
|
responses:
|
|
1011
1745
|
200:
|
|
1012
1746
|
description: Number of tasks by status, task types and episodes for given project
|
|
1747
|
+
content:
|
|
1748
|
+
application/json:
|
|
1749
|
+
schema:
|
|
1750
|
+
type: object
|
|
1751
|
+
additionalProperties:
|
|
1752
|
+
type: object
|
|
1753
|
+
properties:
|
|
1754
|
+
max_retake_count:
|
|
1755
|
+
type: integer
|
|
1756
|
+
example: 4
|
|
1757
|
+
evolution:
|
|
1758
|
+
type: object
|
|
1759
|
+
additionalProperties:
|
|
1760
|
+
type: object
|
|
1761
|
+
properties:
|
|
1762
|
+
retake:
|
|
1763
|
+
type: object
|
|
1764
|
+
properties:
|
|
1765
|
+
count:
|
|
1766
|
+
type: integer
|
|
1767
|
+
example: 80
|
|
1768
|
+
frames:
|
|
1769
|
+
type: integer
|
|
1770
|
+
example: 7900
|
|
1771
|
+
drawings:
|
|
1772
|
+
type: integer
|
|
1773
|
+
example: 8000
|
|
1774
|
+
done:
|
|
1775
|
+
type: object
|
|
1776
|
+
properties:
|
|
1777
|
+
count:
|
|
1778
|
+
type: integer
|
|
1779
|
+
example: 117
|
|
1780
|
+
frames:
|
|
1781
|
+
type: integer
|
|
1782
|
+
example: 3900
|
|
1783
|
+
drawings:
|
|
1784
|
+
type: integer
|
|
1785
|
+
example: 8000
|
|
1786
|
+
done:
|
|
1787
|
+
type: object
|
|
1788
|
+
properties:
|
|
1789
|
+
count:
|
|
1790
|
+
type: integer
|
|
1791
|
+
example: 197
|
|
1792
|
+
frames:
|
|
1793
|
+
type: integer
|
|
1794
|
+
example: 16090
|
|
1795
|
+
drawings:
|
|
1796
|
+
type: integer
|
|
1797
|
+
example: 16090
|
|
1798
|
+
retake:
|
|
1799
|
+
type: object
|
|
1800
|
+
properties:
|
|
1801
|
+
count:
|
|
1802
|
+
type: integer
|
|
1803
|
+
example: 0
|
|
1804
|
+
frames:
|
|
1805
|
+
type: integer
|
|
1806
|
+
example: 0
|
|
1807
|
+
drawings:
|
|
1808
|
+
type: integer
|
|
1809
|
+
example: 0
|
|
1810
|
+
other:
|
|
1811
|
+
type: object
|
|
1812
|
+
properties:
|
|
1813
|
+
count:
|
|
1814
|
+
type: integer
|
|
1815
|
+
example: 5
|
|
1816
|
+
frames:
|
|
1817
|
+
type: integer
|
|
1818
|
+
example: 185
|
|
1819
|
+
drawings:
|
|
1820
|
+
type: integer
|
|
1821
|
+
example: 185
|
|
1822
|
+
example:
|
|
1823
|
+
episodeId1:
|
|
1824
|
+
max_retake_count: 4
|
|
1825
|
+
evolution:
|
|
1826
|
+
"1":
|
|
1827
|
+
retake:
|
|
1828
|
+
count: 80
|
|
1829
|
+
frames: 7900
|
|
1830
|
+
drawings: 8000
|
|
1831
|
+
done:
|
|
1832
|
+
count: 117
|
|
1833
|
+
frames: 3900
|
|
1834
|
+
drawings: 8000
|
|
1835
|
+
done:
|
|
1836
|
+
count: 197
|
|
1837
|
+
frames: 16090
|
|
1838
|
+
drawings: 16090
|
|
1839
|
+
retake:
|
|
1840
|
+
count: 0
|
|
1841
|
+
frames: 0
|
|
1842
|
+
drawings: 0
|
|
1843
|
+
other:
|
|
1844
|
+
count: 5
|
|
1845
|
+
frames: 185
|
|
1846
|
+
drawings: 185
|
|
1847
|
+
all:
|
|
1848
|
+
all:
|
|
1849
|
+
max_retake_count: 4
|
|
1850
|
+
done:
|
|
1851
|
+
count: 500
|
|
1852
|
+
frames: 50000
|
|
1853
|
+
drawings: 50000
|
|
1854
|
+
retake:
|
|
1855
|
+
count: 100
|
|
1856
|
+
frames: 10000
|
|
1857
|
+
drawings: 10000
|
|
1858
|
+
other:
|
|
1859
|
+
count: 10
|
|
1860
|
+
frames: 1000
|
|
1861
|
+
drawings: 1000
|
|
1013
1862
|
"""
|
|
1014
1863
|
projects_service.get_project(project_id)
|
|
1015
1864
|
user_service.check_project_access(project_id)
|
|
@@ -1022,10 +1871,12 @@ class EpisodeResource(Resource, ArgsMixin):
|
|
|
1022
1871
|
@jwt_required()
|
|
1023
1872
|
def get(self, episode_id):
|
|
1024
1873
|
"""
|
|
1025
|
-
|
|
1874
|
+
Get episode
|
|
1026
1875
|
---
|
|
1027
1876
|
tags:
|
|
1028
1877
|
- Shots
|
|
1878
|
+
description: Get an episode by id.
|
|
1879
|
+
needs.
|
|
1029
1880
|
parameters:
|
|
1030
1881
|
- in: path
|
|
1031
1882
|
name: episode_id
|
|
@@ -1035,7 +1886,29 @@ class EpisodeResource(Resource, ArgsMixin):
|
|
|
1035
1886
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
1036
1887
|
responses:
|
|
1037
1888
|
200:
|
|
1038
|
-
description:
|
|
1889
|
+
description: Episode found and returned
|
|
1890
|
+
content:
|
|
1891
|
+
application/json:
|
|
1892
|
+
schema:
|
|
1893
|
+
type: object
|
|
1894
|
+
properties:
|
|
1895
|
+
id:
|
|
1896
|
+
type: string
|
|
1897
|
+
format: uuid
|
|
1898
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
1899
|
+
name:
|
|
1900
|
+
type: string
|
|
1901
|
+
example: EP01
|
|
1902
|
+
project_id:
|
|
1903
|
+
type: string
|
|
1904
|
+
format: uuid
|
|
1905
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
1906
|
+
description:
|
|
1907
|
+
type: string
|
|
1908
|
+
example: A short description of the episode
|
|
1909
|
+
status:
|
|
1910
|
+
type: string
|
|
1911
|
+
example: running
|
|
1039
1912
|
"""
|
|
1040
1913
|
episode = shots_service.get_full_episode(episode_id)
|
|
1041
1914
|
user_service.check_project_access(episode["project_id"])
|
|
@@ -1044,10 +1917,12 @@ class EpisodeResource(Resource, ArgsMixin):
|
|
|
1044
1917
|
@jwt_required()
|
|
1045
1918
|
def delete(self, episode_id):
|
|
1046
1919
|
"""
|
|
1047
|
-
Delete
|
|
1920
|
+
Delete episode
|
|
1048
1921
|
---
|
|
1049
1922
|
tags:
|
|
1050
1923
|
- Shots
|
|
1924
|
+
description: Delete an episode by id. Requires manager access or
|
|
1925
|
+
ownership.
|
|
1051
1926
|
parameters:
|
|
1052
1927
|
- in: path
|
|
1053
1928
|
name: episode_id
|
|
@@ -1057,7 +1932,7 @@ class EpisodeResource(Resource, ArgsMixin):
|
|
|
1057
1932
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
1058
1933
|
responses:
|
|
1059
1934
|
204:
|
|
1060
|
-
description:
|
|
1935
|
+
description: Episode deleted
|
|
1061
1936
|
"""
|
|
1062
1937
|
force = self.get_force()
|
|
1063
1938
|
episode = shots_service.get_episode(episode_id)
|
|
@@ -1073,11 +1948,12 @@ class EpisodesResource(Resource):
|
|
|
1073
1948
|
@jwt_required()
|
|
1074
1949
|
def get(self):
|
|
1075
1950
|
"""
|
|
1076
|
-
|
|
1951
|
+
Get episodes
|
|
1077
1952
|
---
|
|
1078
1953
|
tags:
|
|
1079
1954
|
- Shots
|
|
1080
|
-
description:
|
|
1955
|
+
description: Get episodes with optional filters. Use project_id to
|
|
1956
|
+
filter by project.
|
|
1081
1957
|
parameters:
|
|
1082
1958
|
- in: query
|
|
1083
1959
|
name: project_id
|
|
@@ -1088,6 +1964,30 @@ class EpisodesResource(Resource):
|
|
|
1088
1964
|
responses:
|
|
1089
1965
|
200:
|
|
1090
1966
|
description: All episode entries
|
|
1967
|
+
content:
|
|
1968
|
+
application/json:
|
|
1969
|
+
schema:
|
|
1970
|
+
type: array
|
|
1971
|
+
items:
|
|
1972
|
+
type: object
|
|
1973
|
+
properties:
|
|
1974
|
+
id:
|
|
1975
|
+
type: string
|
|
1976
|
+
format: uuid
|
|
1977
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
1978
|
+
name:
|
|
1979
|
+
type: string
|
|
1980
|
+
example: EP01
|
|
1981
|
+
project_id:
|
|
1982
|
+
type: string
|
|
1983
|
+
format: uuid
|
|
1984
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
1985
|
+
description:
|
|
1986
|
+
type: string
|
|
1987
|
+
example: A short description of the episode
|
|
1988
|
+
status:
|
|
1989
|
+
type: string
|
|
1990
|
+
example: running
|
|
1091
1991
|
"""
|
|
1092
1992
|
criterions = query.get_query_criterions_from_request(request)
|
|
1093
1993
|
user_service.check_project_access(criterions.get("project_id", None))
|
|
@@ -1098,11 +1998,12 @@ class EpisodeSequencesResource(Resource):
|
|
|
1098
1998
|
@jwt_required()
|
|
1099
1999
|
def get(self, episode_id):
|
|
1100
2000
|
"""
|
|
1101
|
-
|
|
2001
|
+
Get episode sequences
|
|
1102
2002
|
---
|
|
1103
2003
|
tags:
|
|
1104
2004
|
- Shots
|
|
1105
|
-
description:
|
|
2005
|
+
description: Get sequences for an episode. You can add query filters
|
|
2006
|
+
if needed.
|
|
1106
2007
|
parameters:
|
|
1107
2008
|
- in: path
|
|
1108
2009
|
name: episode_id
|
|
@@ -1119,6 +2020,28 @@ class EpisodeSequencesResource(Resource):
|
|
|
1119
2020
|
responses:
|
|
1120
2021
|
200:
|
|
1121
2022
|
description: All sequence entries for given episode
|
|
2023
|
+
content:
|
|
2024
|
+
application/json:
|
|
2025
|
+
schema:
|
|
2026
|
+
type: array
|
|
2027
|
+
items:
|
|
2028
|
+
type: object
|
|
2029
|
+
properties:
|
|
2030
|
+
id:
|
|
2031
|
+
type: string
|
|
2032
|
+
format: uuid
|
|
2033
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
2034
|
+
name:
|
|
2035
|
+
type: string
|
|
2036
|
+
example: SQ01
|
|
2037
|
+
project_id:
|
|
2038
|
+
type: string
|
|
2039
|
+
format: uuid
|
|
2040
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
2041
|
+
parent_id:
|
|
2042
|
+
type: string
|
|
2043
|
+
format: uuid
|
|
2044
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
1122
2045
|
"""
|
|
1123
2046
|
if not fields.is_valid_id(episode_id):
|
|
1124
2047
|
return []
|
|
@@ -1138,7 +2061,7 @@ class EpisodeTaskTypesResource(Resource):
|
|
|
1138
2061
|
@jwt_required()
|
|
1139
2062
|
def get(self, episode_id):
|
|
1140
2063
|
"""
|
|
1141
|
-
|
|
2064
|
+
Get episode task types
|
|
1142
2065
|
---
|
|
1143
2066
|
tags:
|
|
1144
2067
|
- Shots
|
|
@@ -1152,6 +2075,20 @@ class EpisodeTaskTypesResource(Resource):
|
|
|
1152
2075
|
responses:
|
|
1153
2076
|
200:
|
|
1154
2077
|
description: All task types related to given episode
|
|
2078
|
+
content:
|
|
2079
|
+
application/json:
|
|
2080
|
+
schema:
|
|
2081
|
+
type: array
|
|
2082
|
+
items:
|
|
2083
|
+
type: object
|
|
2084
|
+
properties:
|
|
2085
|
+
id:
|
|
2086
|
+
type: string
|
|
2087
|
+
format: uuid
|
|
2088
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
2089
|
+
name:
|
|
2090
|
+
type: string
|
|
2091
|
+
example: Animation
|
|
1155
2092
|
"""
|
|
1156
2093
|
episode = shots_service.get_episode(episode_id)
|
|
1157
2094
|
user_service.check_project_access(episode["project_id"])
|
|
@@ -1162,7 +2099,7 @@ class EpisodeTasksResource(Resource):
|
|
|
1162
2099
|
@jwt_required()
|
|
1163
2100
|
def get(self, episode_id):
|
|
1164
2101
|
"""
|
|
1165
|
-
|
|
2102
|
+
Get episode tasks
|
|
1166
2103
|
---
|
|
1167
2104
|
tags:
|
|
1168
2105
|
- Shots
|
|
@@ -1176,6 +2113,42 @@ class EpisodeTasksResource(Resource):
|
|
|
1176
2113
|
responses:
|
|
1177
2114
|
200:
|
|
1178
2115
|
description: All tasks related to given episode
|
|
2116
|
+
content:
|
|
2117
|
+
application/json:
|
|
2118
|
+
schema:
|
|
2119
|
+
type: array
|
|
2120
|
+
items:
|
|
2121
|
+
type: object
|
|
2122
|
+
properties:
|
|
2123
|
+
id:
|
|
2124
|
+
type: string
|
|
2125
|
+
format: uuid
|
|
2126
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
2127
|
+
name:
|
|
2128
|
+
type: string
|
|
2129
|
+
example: EP01 Layout
|
|
2130
|
+
task_type_id:
|
|
2131
|
+
type: string
|
|
2132
|
+
format: uuid
|
|
2133
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
2134
|
+
task_status_id:
|
|
2135
|
+
type: string
|
|
2136
|
+
format: uuid
|
|
2137
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
2138
|
+
entity_id:
|
|
2139
|
+
type: string
|
|
2140
|
+
format: uuid
|
|
2141
|
+
example: d24a6ea4-ce75-4665-a070-57453082c25
|
|
2142
|
+
project_id:
|
|
2143
|
+
type: string
|
|
2144
|
+
format: uuid
|
|
2145
|
+
example: e24a6ea4-ce75-4665-a070-57453082c25
|
|
2146
|
+
assignees:
|
|
2147
|
+
type: array
|
|
2148
|
+
items:
|
|
2149
|
+
type: string
|
|
2150
|
+
format: uuid
|
|
2151
|
+
example: ["f24a6ea4-ce75-4665-a070-57453082c25"]
|
|
1179
2152
|
"""
|
|
1180
2153
|
episode = shots_service.get_episode(episode_id)
|
|
1181
2154
|
user_service.check_project_access(episode["project_id"])
|
|
@@ -1186,10 +2159,11 @@ class SequenceResource(Resource, ArgsMixin):
|
|
|
1186
2159
|
@jwt_required()
|
|
1187
2160
|
def get(self, sequence_id):
|
|
1188
2161
|
"""
|
|
1189
|
-
|
|
2162
|
+
Get sequence
|
|
1190
2163
|
---
|
|
1191
2164
|
tags:
|
|
1192
2165
|
- Shots
|
|
2166
|
+
description: Get a sequence by id.
|
|
1193
2167
|
parameters:
|
|
1194
2168
|
- in: path
|
|
1195
2169
|
name: sequence_id
|
|
@@ -1199,7 +2173,27 @@ class SequenceResource(Resource, ArgsMixin):
|
|
|
1199
2173
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
1200
2174
|
responses:
|
|
1201
2175
|
200:
|
|
1202
|
-
description:
|
|
2176
|
+
description: Sequence found and returned
|
|
2177
|
+
content:
|
|
2178
|
+
application/json:
|
|
2179
|
+
schema:
|
|
2180
|
+
type: object
|
|
2181
|
+
properties:
|
|
2182
|
+
id:
|
|
2183
|
+
type: string
|
|
2184
|
+
format: uuid
|
|
2185
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
2186
|
+
name:
|
|
2187
|
+
type: string
|
|
2188
|
+
example: SQ01
|
|
2189
|
+
project_id:
|
|
2190
|
+
type: string
|
|
2191
|
+
format: uuid
|
|
2192
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
2193
|
+
parent_id:
|
|
2194
|
+
type: string
|
|
2195
|
+
format: uuid
|
|
2196
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
1203
2197
|
"""
|
|
1204
2198
|
sequence = shots_service.get_full_sequence(sequence_id)
|
|
1205
2199
|
user_service.check_project_access(sequence["project_id"])
|
|
@@ -1208,10 +2202,12 @@ class SequenceResource(Resource, ArgsMixin):
|
|
|
1208
2202
|
@jwt_required()
|
|
1209
2203
|
def delete(self, sequence_id):
|
|
1210
2204
|
"""
|
|
1211
|
-
Delete
|
|
2205
|
+
Delete sequence
|
|
1212
2206
|
---
|
|
1213
2207
|
tags:
|
|
1214
2208
|
- Shots
|
|
2209
|
+
description: Delete a sequence by id. Requires manager access or
|
|
2210
|
+
ownership.
|
|
1215
2211
|
parameters:
|
|
1216
2212
|
- in: path
|
|
1217
2213
|
name: sequence_id
|
|
@@ -1221,7 +2217,7 @@ class SequenceResource(Resource, ArgsMixin):
|
|
|
1221
2217
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
1222
2218
|
responses:
|
|
1223
2219
|
204:
|
|
1224
|
-
description:
|
|
2220
|
+
description: Sequence deleted
|
|
1225
2221
|
"""
|
|
1226
2222
|
force = self.get_force()
|
|
1227
2223
|
sequence = shots_service.get_sequence(sequence_id)
|
|
@@ -1237,11 +2233,12 @@ class SequencesResource(Resource):
|
|
|
1237
2233
|
@jwt_required()
|
|
1238
2234
|
def get(self):
|
|
1239
2235
|
"""
|
|
1240
|
-
|
|
2236
|
+
Get sequences
|
|
1241
2237
|
---
|
|
1242
2238
|
tags:
|
|
1243
2239
|
- Shots
|
|
1244
|
-
description:
|
|
2240
|
+
description: Get sequences with optional filters. Use episode_id to
|
|
2241
|
+
filter by episode.
|
|
1245
2242
|
parameters:
|
|
1246
2243
|
- in: query
|
|
1247
2244
|
name: episode_id
|
|
@@ -1252,6 +2249,28 @@ class SequencesResource(Resource):
|
|
|
1252
2249
|
responses:
|
|
1253
2250
|
200:
|
|
1254
2251
|
description: All sequence entries
|
|
2252
|
+
content:
|
|
2253
|
+
application/json:
|
|
2254
|
+
schema:
|
|
2255
|
+
type: array
|
|
2256
|
+
items:
|
|
2257
|
+
type: object
|
|
2258
|
+
properties:
|
|
2259
|
+
id:
|
|
2260
|
+
type: string
|
|
2261
|
+
format: uuid
|
|
2262
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
2263
|
+
name:
|
|
2264
|
+
type: string
|
|
2265
|
+
example: SQ01
|
|
2266
|
+
project_id:
|
|
2267
|
+
type: string
|
|
2268
|
+
format: uuid
|
|
2269
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
2270
|
+
parent_id:
|
|
2271
|
+
type: string
|
|
2272
|
+
format: uuid
|
|
2273
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
1255
2274
|
"""
|
|
1256
2275
|
criterions = query.get_query_criterions_from_request(request)
|
|
1257
2276
|
if "episode_id" in criterions:
|
|
@@ -1267,11 +2286,12 @@ class SequenceShotsResource(Resource):
|
|
|
1267
2286
|
@jwt_required()
|
|
1268
2287
|
def get(self, sequence_id):
|
|
1269
2288
|
"""
|
|
1270
|
-
|
|
2289
|
+
Get sequence shots
|
|
1271
2290
|
---
|
|
1272
2291
|
tags:
|
|
1273
2292
|
- Shots
|
|
1274
|
-
description:
|
|
2293
|
+
description: Get shots for a sequence. Supports filtering using query
|
|
2294
|
+
params.
|
|
1275
2295
|
parameters:
|
|
1276
2296
|
- in: path
|
|
1277
2297
|
name: sequence_id
|
|
@@ -1288,6 +2308,28 @@ class SequenceShotsResource(Resource):
|
|
|
1288
2308
|
responses:
|
|
1289
2309
|
200:
|
|
1290
2310
|
description: All shot entries for given sequence
|
|
2311
|
+
content:
|
|
2312
|
+
application/json:
|
|
2313
|
+
schema:
|
|
2314
|
+
type: array
|
|
2315
|
+
items:
|
|
2316
|
+
type: object
|
|
2317
|
+
properties:
|
|
2318
|
+
id:
|
|
2319
|
+
type: string
|
|
2320
|
+
format: uuid
|
|
2321
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
2322
|
+
name:
|
|
2323
|
+
type: string
|
|
2324
|
+
example: SH010
|
|
2325
|
+
project_id:
|
|
2326
|
+
type: string
|
|
2327
|
+
format: uuid
|
|
2328
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
2329
|
+
parent_id:
|
|
2330
|
+
type: string
|
|
2331
|
+
format: uuid
|
|
2332
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
1291
2333
|
"""
|
|
1292
2334
|
sequence = shots_service.get_sequence(sequence_id)
|
|
1293
2335
|
user_service.check_project_access(sequence["project_id"])
|
|
@@ -1304,10 +2346,11 @@ class ProjectScenesResource(Resource, ArgsMixin):
|
|
|
1304
2346
|
@jwt_required()
|
|
1305
2347
|
def get(self, project_id):
|
|
1306
2348
|
"""
|
|
1307
|
-
|
|
2349
|
+
Get project scenes
|
|
1308
2350
|
---
|
|
1309
2351
|
tags:
|
|
1310
2352
|
- Shots
|
|
2353
|
+
description: Get all scenes for a project.
|
|
1311
2354
|
parameters:
|
|
1312
2355
|
- in: path
|
|
1313
2356
|
name: project_id
|
|
@@ -1318,6 +2361,28 @@ class ProjectScenesResource(Resource, ArgsMixin):
|
|
|
1318
2361
|
responses:
|
|
1319
2362
|
200:
|
|
1320
2363
|
description: All scenes related to given project
|
|
2364
|
+
content:
|
|
2365
|
+
application/json:
|
|
2366
|
+
schema:
|
|
2367
|
+
type: array
|
|
2368
|
+
items:
|
|
2369
|
+
type: object
|
|
2370
|
+
properties:
|
|
2371
|
+
id:
|
|
2372
|
+
type: string
|
|
2373
|
+
format: uuid
|
|
2374
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
2375
|
+
name:
|
|
2376
|
+
type: string
|
|
2377
|
+
example: SC001
|
|
2378
|
+
project_id:
|
|
2379
|
+
type: string
|
|
2380
|
+
format: uuid
|
|
2381
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
2382
|
+
parent_id:
|
|
2383
|
+
type: string
|
|
2384
|
+
format: uuid
|
|
2385
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
1321
2386
|
"""
|
|
1322
2387
|
projects_service.get_project(project_id)
|
|
1323
2388
|
user_service.check_project_access(project_id)
|
|
@@ -1326,10 +2391,12 @@ class ProjectScenesResource(Resource, ArgsMixin):
|
|
|
1326
2391
|
@jwt_required()
|
|
1327
2392
|
def post(self, project_id):
|
|
1328
2393
|
"""
|
|
1329
|
-
Create
|
|
2394
|
+
Create project scene
|
|
1330
2395
|
---
|
|
1331
2396
|
tags:
|
|
1332
2397
|
- Shots
|
|
2398
|
+
description: Create a new scene in a project. Provide a name and the
|
|
2399
|
+
related sequence id.
|
|
1333
2400
|
parameters:
|
|
1334
2401
|
- in: path
|
|
1335
2402
|
name: project_id
|
|
@@ -1359,6 +2426,26 @@ class ProjectScenesResource(Resource, ArgsMixin):
|
|
|
1359
2426
|
responses:
|
|
1360
2427
|
201:
|
|
1361
2428
|
description: Scene created for given project
|
|
2429
|
+
content:
|
|
2430
|
+
application/json:
|
|
2431
|
+
schema:
|
|
2432
|
+
type: object
|
|
2433
|
+
properties:
|
|
2434
|
+
id:
|
|
2435
|
+
type: string
|
|
2436
|
+
format: uuid
|
|
2437
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
2438
|
+
name:
|
|
2439
|
+
type: string
|
|
2440
|
+
example: SC001
|
|
2441
|
+
project_id:
|
|
2442
|
+
type: string
|
|
2443
|
+
format: uuid
|
|
2444
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
2445
|
+
parent_id:
|
|
2446
|
+
type: string
|
|
2447
|
+
format: uuid
|
|
2448
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
1362
2449
|
"""
|
|
1363
2450
|
(sequence_id, name) = self.get_arguments()
|
|
1364
2451
|
projects_service.get_project(project_id)
|
|
@@ -1383,10 +2470,11 @@ class SequenceScenesResource(Resource):
|
|
|
1383
2470
|
@jwt_required()
|
|
1384
2471
|
def get(self, sequence_id):
|
|
1385
2472
|
"""
|
|
1386
|
-
|
|
2473
|
+
Get sequence scenes
|
|
1387
2474
|
---
|
|
1388
2475
|
tags:
|
|
1389
2476
|
- Shots
|
|
2477
|
+
description: Get scenes that belong to a sequence.
|
|
1390
2478
|
parameters:
|
|
1391
2479
|
- in: path
|
|
1392
2480
|
name: sequence_id
|
|
@@ -1397,6 +2485,28 @@ class SequenceScenesResource(Resource):
|
|
|
1397
2485
|
responses:
|
|
1398
2486
|
200:
|
|
1399
2487
|
description: All scenes related to given sequence
|
|
2488
|
+
content:
|
|
2489
|
+
application/json:
|
|
2490
|
+
schema:
|
|
2491
|
+
type: array
|
|
2492
|
+
items:
|
|
2493
|
+
type: object
|
|
2494
|
+
properties:
|
|
2495
|
+
id:
|
|
2496
|
+
type: string
|
|
2497
|
+
format: uuid
|
|
2498
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
2499
|
+
name:
|
|
2500
|
+
type: string
|
|
2501
|
+
example: SC010
|
|
2502
|
+
project_id:
|
|
2503
|
+
type: string
|
|
2504
|
+
format: uuid
|
|
2505
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
2506
|
+
parent_id:
|
|
2507
|
+
type: string
|
|
2508
|
+
format: uuid
|
|
2509
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
1400
2510
|
"""
|
|
1401
2511
|
sequence = shots_service.get_sequence(sequence_id)
|
|
1402
2512
|
user_service.check_project_access(sequence["project_id"])
|
|
@@ -1407,10 +2517,11 @@ class SceneTaskTypesResource(Resource):
|
|
|
1407
2517
|
@jwt_required()
|
|
1408
2518
|
def get(self, scene_id):
|
|
1409
2519
|
"""
|
|
1410
|
-
|
|
2520
|
+
Get scene task types
|
|
1411
2521
|
---
|
|
1412
2522
|
tags:
|
|
1413
2523
|
- Shots
|
|
2524
|
+
description: Get task types for a scene.
|
|
1414
2525
|
parameters:
|
|
1415
2526
|
- in: path
|
|
1416
2527
|
name: scene_id
|
|
@@ -1421,6 +2532,20 @@ class SceneTaskTypesResource(Resource):
|
|
|
1421
2532
|
responses:
|
|
1422
2533
|
200:
|
|
1423
2534
|
description: All task types related to given scene
|
|
2535
|
+
content:
|
|
2536
|
+
application/json:
|
|
2537
|
+
schema:
|
|
2538
|
+
type: array
|
|
2539
|
+
items:
|
|
2540
|
+
type: object
|
|
2541
|
+
properties:
|
|
2542
|
+
id:
|
|
2543
|
+
type: string
|
|
2544
|
+
format: uuid
|
|
2545
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
2546
|
+
name:
|
|
2547
|
+
type: string
|
|
2548
|
+
example: Animation
|
|
1424
2549
|
"""
|
|
1425
2550
|
scene = shots_service.get_scene(scene_id)
|
|
1426
2551
|
user_service.check_project_access(scene["project_id"])
|
|
@@ -1432,10 +2557,11 @@ class SceneTasksResource(Resource):
|
|
|
1432
2557
|
@jwt_required()
|
|
1433
2558
|
def get(self, scene_id):
|
|
1434
2559
|
"""
|
|
1435
|
-
|
|
2560
|
+
Get scene tasks
|
|
1436
2561
|
---
|
|
1437
2562
|
tags:
|
|
1438
2563
|
- Shots
|
|
2564
|
+
description: Get tasks for a scene.
|
|
1439
2565
|
parameters:
|
|
1440
2566
|
- in: path
|
|
1441
2567
|
name: scene_id
|
|
@@ -1446,6 +2572,36 @@ class SceneTasksResource(Resource):
|
|
|
1446
2572
|
responses:
|
|
1447
2573
|
200:
|
|
1448
2574
|
description: All tasks related to given scene
|
|
2575
|
+
content:
|
|
2576
|
+
application/json:
|
|
2577
|
+
schema:
|
|
2578
|
+
type: array
|
|
2579
|
+
items:
|
|
2580
|
+
type: object
|
|
2581
|
+
properties:
|
|
2582
|
+
id:
|
|
2583
|
+
type: string
|
|
2584
|
+
format: uuid
|
|
2585
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
2586
|
+
name:
|
|
2587
|
+
type: string
|
|
2588
|
+
example: SC001 Layout
|
|
2589
|
+
task_type_id:
|
|
2590
|
+
type: string
|
|
2591
|
+
format: uuid
|
|
2592
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
2593
|
+
task_status_id:
|
|
2594
|
+
type: string
|
|
2595
|
+
format: uuid
|
|
2596
|
+
example: c24a6ea4-ce75-4665-a070-57453082c25
|
|
2597
|
+
entity_id:
|
|
2598
|
+
type: string
|
|
2599
|
+
format: uuid
|
|
2600
|
+
example: d24a6ea4-ce75-4665-a070-57453082c25
|
|
2601
|
+
project_id:
|
|
2602
|
+
type: string
|
|
2603
|
+
format: uuid
|
|
2604
|
+
example: e24a6ea4-ce75-4665-a070-57453082c25
|
|
1449
2605
|
"""
|
|
1450
2606
|
scene = shots_service.get_scene(scene_id)
|
|
1451
2607
|
user_service.check_entity_access(scene["id"])
|
|
@@ -1456,10 +2612,11 @@ class SceneShotsResource(Resource, ArgsMixin):
|
|
|
1456
2612
|
@jwt_required()
|
|
1457
2613
|
def get(self, scene_id):
|
|
1458
2614
|
"""
|
|
1459
|
-
|
|
2615
|
+
Get scene shots
|
|
1460
2616
|
---
|
|
1461
2617
|
tags:
|
|
1462
2618
|
- Shots
|
|
2619
|
+
description: Get shots that come from a scene.
|
|
1463
2620
|
parameters:
|
|
1464
2621
|
- in: path
|
|
1465
2622
|
name: scene_id
|
|
@@ -1470,6 +2627,24 @@ class SceneShotsResource(Resource, ArgsMixin):
|
|
|
1470
2627
|
responses:
|
|
1471
2628
|
200:
|
|
1472
2629
|
description: All shots that come from given scene
|
|
2630
|
+
content:
|
|
2631
|
+
application/json:
|
|
2632
|
+
schema:
|
|
2633
|
+
type: array
|
|
2634
|
+
items:
|
|
2635
|
+
type: object
|
|
2636
|
+
properties:
|
|
2637
|
+
id:
|
|
2638
|
+
type: string
|
|
2639
|
+
format: uuid
|
|
2640
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
2641
|
+
name:
|
|
2642
|
+
type: string
|
|
2643
|
+
example: SH010
|
|
2644
|
+
project_id:
|
|
2645
|
+
type: string
|
|
2646
|
+
format: uuid
|
|
2647
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
1473
2648
|
"""
|
|
1474
2649
|
scene = shots_service.get_scene(scene_id)
|
|
1475
2650
|
user_service.check_entity_access(scene["id"])
|
|
@@ -1478,10 +2653,11 @@ class SceneShotsResource(Resource, ArgsMixin):
|
|
|
1478
2653
|
@jwt_required()
|
|
1479
2654
|
def post(self, scene_id):
|
|
1480
2655
|
"""
|
|
1481
|
-
|
|
2656
|
+
Link shot to scene
|
|
1482
2657
|
---
|
|
1483
2658
|
tags:
|
|
1484
2659
|
- Shots
|
|
2660
|
+
description: Link a shot to a scene as its source.
|
|
1485
2661
|
parameters:
|
|
1486
2662
|
- in: path
|
|
1487
2663
|
name: scene_id
|
|
@@ -1504,8 +2680,21 @@ class SceneShotsResource(Resource, ArgsMixin):
|
|
|
1504
2680
|
required: true
|
|
1505
2681
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
1506
2682
|
responses:
|
|
1507
|
-
|
|
1508
|
-
description:
|
|
2683
|
+
201:
|
|
2684
|
+
description: Scene marked as source of shot
|
|
2685
|
+
content:
|
|
2686
|
+
application/json:
|
|
2687
|
+
schema:
|
|
2688
|
+
type: object
|
|
2689
|
+
properties:
|
|
2690
|
+
scene_id:
|
|
2691
|
+
type: string
|
|
2692
|
+
format: uuid
|
|
2693
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
2694
|
+
shot_id:
|
|
2695
|
+
type: string
|
|
2696
|
+
format: uuid
|
|
2697
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
1509
2698
|
"""
|
|
1510
2699
|
args = self.get_args([("shot_id", None, True)])
|
|
1511
2700
|
|
|
@@ -1549,16 +2738,18 @@ class RemoveShotFromSceneResource(Resource):
|
|
|
1549
2738
|
|
|
1550
2739
|
class ShotVersionsResource(Resource):
|
|
1551
2740
|
"""
|
|
1552
|
-
|
|
2741
|
+
Get shot versions
|
|
1553
2742
|
"""
|
|
1554
2743
|
|
|
1555
2744
|
@jwt_required()
|
|
1556
2745
|
def get(self, shot_id):
|
|
1557
2746
|
"""
|
|
1558
|
-
|
|
2747
|
+
Get shot versions
|
|
1559
2748
|
---
|
|
1560
2749
|
tags:
|
|
1561
2750
|
- Shots
|
|
2751
|
+
description: Get data versions of a shot. Use this to inspect version
|
|
2752
|
+
history.
|
|
1562
2753
|
parameters:
|
|
1563
2754
|
- in: path
|
|
1564
2755
|
name: shot_id
|
|
@@ -1567,8 +2758,23 @@ class ShotVersionsResource(Resource):
|
|
|
1567
2758
|
format: uuid
|
|
1568
2759
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
1569
2760
|
responses:
|
|
1570
|
-
|
|
2761
|
+
200:
|
|
1571
2762
|
description: Data versions of given shot
|
|
2763
|
+
content:
|
|
2764
|
+
application/json:
|
|
2765
|
+
schema:
|
|
2766
|
+
type: array
|
|
2767
|
+
items:
|
|
2768
|
+
type: object
|
|
2769
|
+
properties:
|
|
2770
|
+
id:
|
|
2771
|
+
type: string
|
|
2772
|
+
format: uuid
|
|
2773
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
2774
|
+
created_at:
|
|
2775
|
+
type: string
|
|
2776
|
+
format: date-time
|
|
2777
|
+
example: "2024-01-15T10:30:00Z"
|
|
1572
2778
|
"""
|
|
1573
2779
|
shot = shots_service.get_shot(shot_id)
|
|
1574
2780
|
user_service.check_project_access(shot["project_id"])
|
|
@@ -1577,17 +2783,16 @@ class ShotVersionsResource(Resource):
|
|
|
1577
2783
|
|
|
1578
2784
|
|
|
1579
2785
|
class ProjectQuotasResource(Resource, ArgsMixin):
|
|
1580
|
-
"""
|
|
1581
|
-
Retrieve quotas statistics for shots
|
|
1582
|
-
"""
|
|
1583
2786
|
|
|
1584
2787
|
@jwt_required()
|
|
1585
2788
|
def get(self, project_id, task_type_id):
|
|
1586
2789
|
"""
|
|
1587
|
-
|
|
2790
|
+
Get project quotas
|
|
1588
2791
|
---
|
|
1589
2792
|
tags:
|
|
1590
2793
|
- Shots
|
|
2794
|
+
description: Get quotas statistics for a project and task type. Supports
|
|
2795
|
+
weighted and raw modes with optional feedback filtering.
|
|
1591
2796
|
parameters:
|
|
1592
2797
|
- in: path
|
|
1593
2798
|
name: project_id
|
|
@@ -1616,6 +2821,21 @@ class ProjectQuotasResource(Resource, ArgsMixin):
|
|
|
1616
2821
|
responses:
|
|
1617
2822
|
200:
|
|
1618
2823
|
description: Quotas statistics for shots
|
|
2824
|
+
content:
|
|
2825
|
+
application/json:
|
|
2826
|
+
schema:
|
|
2827
|
+
type: object
|
|
2828
|
+
additionalProperties:
|
|
2829
|
+
type: object
|
|
2830
|
+
properties:
|
|
2831
|
+
count:
|
|
2832
|
+
type: integer
|
|
2833
|
+
example: 42
|
|
2834
|
+
frames:
|
|
2835
|
+
type: integer
|
|
2836
|
+
example: 1200
|
|
2837
|
+
400:
|
|
2838
|
+
description: Invalid count_mode or parameter
|
|
1619
2839
|
"""
|
|
1620
2840
|
projects_service.get_project(project_id)
|
|
1621
2841
|
user_service.check_project_access(project_id)
|
|
@@ -1658,10 +2878,12 @@ class ProjectPersonQuotasResource(Resource, ArgsMixin):
|
|
|
1658
2878
|
@jwt_required()
|
|
1659
2879
|
def get(self, project_id, person_id):
|
|
1660
2880
|
"""
|
|
1661
|
-
|
|
2881
|
+
Get project person quotas
|
|
1662
2882
|
---
|
|
1663
2883
|
tags:
|
|
1664
2884
|
- Shots
|
|
2885
|
+
description: Get quotas statistics for a person in a project. Supports
|
|
2886
|
+
weighted and raw modes with optional feedback filtering.
|
|
1665
2887
|
parameters:
|
|
1666
2888
|
- in: path
|
|
1667
2889
|
name: project_id
|
|
@@ -1690,6 +2912,21 @@ class ProjectPersonQuotasResource(Resource, ArgsMixin):
|
|
|
1690
2912
|
responses:
|
|
1691
2913
|
200:
|
|
1692
2914
|
description: Quotas statistics for shots
|
|
2915
|
+
content:
|
|
2916
|
+
application/json:
|
|
2917
|
+
schema:
|
|
2918
|
+
type: object
|
|
2919
|
+
additionalProperties:
|
|
2920
|
+
type: object
|
|
2921
|
+
properties:
|
|
2922
|
+
count:
|
|
2923
|
+
type: integer
|
|
2924
|
+
example: 15
|
|
2925
|
+
frames:
|
|
2926
|
+
type: integer
|
|
2927
|
+
example: 360
|
|
2928
|
+
400:
|
|
2929
|
+
description: Invalid count_mode or parameter
|
|
1693
2930
|
"""
|
|
1694
2931
|
projects_service.get_project(project_id)
|
|
1695
2932
|
if (
|
|
@@ -1737,10 +2974,13 @@ class SetShotsFramesResource(Resource, ArgsMixin):
|
|
|
1737
2974
|
@jwt_required()
|
|
1738
2975
|
def post(self, project_id, task_type_id):
|
|
1739
2976
|
"""
|
|
1740
|
-
Set frames
|
|
2977
|
+
Set shots frames
|
|
1741
2978
|
---
|
|
1742
2979
|
tags:
|
|
1743
2980
|
- Shots
|
|
2981
|
+
description: Set number of frames on shots based on latest preview
|
|
2982
|
+
files for a task type. Optionally scope by episode via query
|
|
2983
|
+
param.
|
|
1744
2984
|
requestBody:
|
|
1745
2985
|
required: true
|
|
1746
2986
|
content:
|
|
@@ -1766,6 +3006,16 @@ class SetShotsFramesResource(Resource, ArgsMixin):
|
|
|
1766
3006
|
responses:
|
|
1767
3007
|
200:
|
|
1768
3008
|
description: Frames set for given shots
|
|
3009
|
+
content:
|
|
3010
|
+
application/json:
|
|
3011
|
+
schema:
|
|
3012
|
+
type: object
|
|
3013
|
+
properties:
|
|
3014
|
+
updated:
|
|
3015
|
+
type: integer
|
|
3016
|
+
example: 12
|
|
3017
|
+
400:
|
|
3018
|
+
description: Invalid ids or parameters
|
|
1769
3019
|
"""
|
|
1770
3020
|
user_service.check_manager_project_access(project_id)
|
|
1771
3021
|
if not fields.is_valid_id(task_type_id) or not fields.is_valid_id(
|