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
|
@@ -16,23 +16,60 @@ from zou.app.utils import query, permissions
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
class ConceptResource(Resource, ArgsMixin):
|
|
19
|
+
|
|
19
20
|
@jwt_required()
|
|
20
21
|
def get(self, concept_id):
|
|
21
22
|
"""
|
|
22
|
-
|
|
23
|
+
Get concept
|
|
23
24
|
---
|
|
25
|
+
description: Retrieve detailed information about a specific concept
|
|
26
|
+
including metadata, project context, and related data.
|
|
24
27
|
tags:
|
|
25
|
-
|
|
28
|
+
- Concepts
|
|
26
29
|
parameters:
|
|
27
30
|
- in: path
|
|
28
31
|
name: concept_id
|
|
29
|
-
required:
|
|
32
|
+
required: true
|
|
30
33
|
type: string
|
|
31
34
|
format: uuid
|
|
32
35
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
36
|
+
description: Unique identifier of the concept
|
|
33
37
|
responses:
|
|
34
|
-
|
|
35
|
-
|
|
38
|
+
200:
|
|
39
|
+
description: Concept information successfully retrieved
|
|
40
|
+
content:
|
|
41
|
+
application/json:
|
|
42
|
+
schema:
|
|
43
|
+
type: object
|
|
44
|
+
properties:
|
|
45
|
+
id:
|
|
46
|
+
type: string
|
|
47
|
+
format: uuid
|
|
48
|
+
description: Concept unique identifier
|
|
49
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
50
|
+
name:
|
|
51
|
+
type: string
|
|
52
|
+
description: Concept name
|
|
53
|
+
example: "Character Design"
|
|
54
|
+
description:
|
|
55
|
+
type: string
|
|
56
|
+
description: Concept description
|
|
57
|
+
example: "Main character concept art"
|
|
58
|
+
project_id:
|
|
59
|
+
type: string
|
|
60
|
+
format: uuid
|
|
61
|
+
description: Project identifier
|
|
62
|
+
example: b35b7fb5-df86-5776-b181-68564193d36
|
|
63
|
+
created_at:
|
|
64
|
+
type: string
|
|
65
|
+
format: date-time
|
|
66
|
+
description: Creation timestamp
|
|
67
|
+
example: "2023-01-01T12:00:00Z"
|
|
68
|
+
updated_at:
|
|
69
|
+
type: string
|
|
70
|
+
format: date-time
|
|
71
|
+
description: Last update timestamp
|
|
72
|
+
example: "2023-01-01T12:30:00Z"
|
|
36
73
|
"""
|
|
37
74
|
concept = concepts_service.get_full_concept(concept_id)
|
|
38
75
|
if concept is None:
|
|
@@ -47,20 +84,29 @@ class ConceptResource(Resource, ArgsMixin):
|
|
|
47
84
|
@jwt_required()
|
|
48
85
|
def delete(self, concept_id):
|
|
49
86
|
"""
|
|
50
|
-
Delete
|
|
87
|
+
Delete concept
|
|
51
88
|
---
|
|
89
|
+
description: Permanently remove a concept from the system. Only concept
|
|
90
|
+
creators or project managers can delete concepts.
|
|
52
91
|
tags:
|
|
53
|
-
|
|
92
|
+
- Concepts
|
|
54
93
|
parameters:
|
|
55
94
|
- in: path
|
|
56
95
|
name: concept_id
|
|
57
|
-
required:
|
|
96
|
+
required: true
|
|
58
97
|
type: string
|
|
59
98
|
format: uuid
|
|
60
99
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
100
|
+
description: Unique identifier of the concept to delete
|
|
101
|
+
- in: query
|
|
102
|
+
name: force
|
|
103
|
+
type: boolean
|
|
104
|
+
required: false
|
|
105
|
+
description: Force deletion bypassing validation checks
|
|
106
|
+
example: false
|
|
61
107
|
responses:
|
|
62
|
-
|
|
63
|
-
|
|
108
|
+
204:
|
|
109
|
+
description: Concept successfully deleted
|
|
64
110
|
"""
|
|
65
111
|
force = self.get_force()
|
|
66
112
|
concept = concepts_service.get_concept(concept_id)
|
|
@@ -73,30 +119,75 @@ class ConceptResource(Resource, ArgsMixin):
|
|
|
73
119
|
|
|
74
120
|
|
|
75
121
|
class AllConceptsResource(Resource):
|
|
122
|
+
|
|
76
123
|
@jwt_required()
|
|
77
124
|
def get(self):
|
|
78
125
|
"""
|
|
79
|
-
|
|
126
|
+
Get all concepts
|
|
80
127
|
---
|
|
128
|
+
description: Retrieve all concept entries with filtering support.
|
|
129
|
+
Filters can be specified in the query string to narrow down results by
|
|
130
|
+
project or parent concept.
|
|
81
131
|
tags:
|
|
82
|
-
|
|
83
|
-
description: Filters can be specified in the query string.
|
|
132
|
+
- Concepts
|
|
84
133
|
parameters:
|
|
85
134
|
- in: query
|
|
86
135
|
name: project_id
|
|
87
|
-
required:
|
|
136
|
+
required: false
|
|
88
137
|
type: string
|
|
89
138
|
format: uuid
|
|
90
139
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
140
|
+
description: Filter concepts by specific project
|
|
91
141
|
- in: query
|
|
92
142
|
name: parent_id
|
|
93
|
-
required:
|
|
143
|
+
required: false
|
|
94
144
|
type: string
|
|
95
145
|
format: uuid
|
|
96
|
-
example:
|
|
146
|
+
example: b35b7fb5-df86-5776-b181-68564193d36
|
|
147
|
+
description: Filter concepts by parent concept
|
|
97
148
|
responses:
|
|
98
|
-
|
|
99
|
-
|
|
149
|
+
200:
|
|
150
|
+
description: List of concepts successfully retrieved
|
|
151
|
+
content:
|
|
152
|
+
application/json:
|
|
153
|
+
schema:
|
|
154
|
+
type: array
|
|
155
|
+
items:
|
|
156
|
+
type: object
|
|
157
|
+
properties:
|
|
158
|
+
id:
|
|
159
|
+
type: string
|
|
160
|
+
format: uuid
|
|
161
|
+
description: Concept unique identifier
|
|
162
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
163
|
+
name:
|
|
164
|
+
type: string
|
|
165
|
+
description: Concept name
|
|
166
|
+
example: "Character Design"
|
|
167
|
+
description:
|
|
168
|
+
type: string
|
|
169
|
+
description: Concept description
|
|
170
|
+
example: "Main character concept art"
|
|
171
|
+
project_id:
|
|
172
|
+
type: string
|
|
173
|
+
format: uuid
|
|
174
|
+
description: Project identifier
|
|
175
|
+
example: b35b7fb5-df86-5776-b181-68564193d36
|
|
176
|
+
parent_id:
|
|
177
|
+
type: string
|
|
178
|
+
format: uuid
|
|
179
|
+
description: Parent concept identifier
|
|
180
|
+
example: c46c8gc6-eg97-6887-c292-79675204e47
|
|
181
|
+
created_at:
|
|
182
|
+
type: string
|
|
183
|
+
format: date-time
|
|
184
|
+
description: Creation timestamp
|
|
185
|
+
example: "2023-01-01T12:00:00Z"
|
|
186
|
+
updated_at:
|
|
187
|
+
type: string
|
|
188
|
+
format: date-time
|
|
189
|
+
description: Last update timestamp
|
|
190
|
+
example: "2023-01-01T12:30:00Z"
|
|
100
191
|
"""
|
|
101
192
|
criterions = query.get_query_criterions_from_request(request)
|
|
102
193
|
user_service.check_project_access(criterions.get("project_id", None))
|
|
@@ -109,23 +200,55 @@ class AllConceptsResource(Resource):
|
|
|
109
200
|
|
|
110
201
|
|
|
111
202
|
class ConceptTaskTypesResource(Resource):
|
|
203
|
+
|
|
112
204
|
@jwt_required()
|
|
113
205
|
def get(self, concept_id):
|
|
114
206
|
"""
|
|
115
|
-
|
|
207
|
+
Get concept task types
|
|
116
208
|
---
|
|
209
|
+
description: Retrieve all task types that are related to a specific
|
|
210
|
+
concept.
|
|
117
211
|
tags:
|
|
118
|
-
|
|
212
|
+
- Concepts
|
|
119
213
|
parameters:
|
|
120
214
|
- in: path
|
|
121
215
|
name: concept_id
|
|
122
|
-
required:
|
|
216
|
+
required: true
|
|
123
217
|
type: string
|
|
124
218
|
format: uuid
|
|
125
219
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
220
|
+
description: Unique identifier of the concept
|
|
126
221
|
responses:
|
|
127
|
-
|
|
128
|
-
|
|
222
|
+
200:
|
|
223
|
+
description: List of concept task types successfully retrieved
|
|
224
|
+
content:
|
|
225
|
+
application/json:
|
|
226
|
+
schema:
|
|
227
|
+
type: array
|
|
228
|
+
items:
|
|
229
|
+
type: object
|
|
230
|
+
properties:
|
|
231
|
+
id:
|
|
232
|
+
type: string
|
|
233
|
+
format: uuid
|
|
234
|
+
description: Task type unique identifier
|
|
235
|
+
example: b35b7fb5-df86-5776-b181-68564193d36
|
|
236
|
+
name:
|
|
237
|
+
type: string
|
|
238
|
+
description: Task type name
|
|
239
|
+
example: "Concept Art"
|
|
240
|
+
short_name:
|
|
241
|
+
type: string
|
|
242
|
+
description: Task type short name
|
|
243
|
+
example: "CON"
|
|
244
|
+
color:
|
|
245
|
+
type: string
|
|
246
|
+
description: Task type color code
|
|
247
|
+
example: "#FF5733"
|
|
248
|
+
for_entity:
|
|
249
|
+
type: string
|
|
250
|
+
description: Entity type this task type is for
|
|
251
|
+
example: "Concept"
|
|
129
252
|
"""
|
|
130
253
|
concept = concepts_service.get_concept(concept_id)
|
|
131
254
|
user_service.check_project_access(concept["project_id"])
|
|
@@ -136,23 +259,78 @@ class ConceptTaskTypesResource(Resource):
|
|
|
136
259
|
|
|
137
260
|
|
|
138
261
|
class ConceptTasksResource(Resource, ArgsMixin):
|
|
262
|
+
|
|
139
263
|
@jwt_required()
|
|
140
264
|
def get(self, concept_id):
|
|
141
265
|
"""
|
|
142
|
-
|
|
266
|
+
Get concept tasks
|
|
143
267
|
---
|
|
268
|
+
description: Retrieve all tasks that are related to a specific concept.
|
|
144
269
|
tags:
|
|
145
|
-
|
|
270
|
+
- Concepts
|
|
146
271
|
parameters:
|
|
147
272
|
- in: path
|
|
148
273
|
name: concept_id
|
|
149
|
-
required:
|
|
274
|
+
required: true
|
|
150
275
|
type: string
|
|
151
276
|
format: uuid
|
|
152
277
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
278
|
+
description: Unique identifier of the concept
|
|
279
|
+
- in: query
|
|
280
|
+
name: relations
|
|
281
|
+
type: boolean
|
|
282
|
+
required: false
|
|
283
|
+
description: Include related entity information
|
|
284
|
+
example: true
|
|
153
285
|
responses:
|
|
154
|
-
|
|
155
|
-
|
|
286
|
+
200:
|
|
287
|
+
description: List of concept tasks successfully retrieved
|
|
288
|
+
content:
|
|
289
|
+
application/json:
|
|
290
|
+
schema:
|
|
291
|
+
type: array
|
|
292
|
+
items:
|
|
293
|
+
type: object
|
|
294
|
+
properties:
|
|
295
|
+
id:
|
|
296
|
+
type: string
|
|
297
|
+
format: uuid
|
|
298
|
+
description: Task unique identifier
|
|
299
|
+
example: b35b7fb5-df86-5776-b181-68564193d36
|
|
300
|
+
name:
|
|
301
|
+
type: string
|
|
302
|
+
description: Task name
|
|
303
|
+
example: "Character Design Task"
|
|
304
|
+
task_type_id:
|
|
305
|
+
type: string
|
|
306
|
+
format: uuid
|
|
307
|
+
description: Task type identifier
|
|
308
|
+
example: c46c8gc6-eg97-6887-c292-79675204e47
|
|
309
|
+
task_status_id:
|
|
310
|
+
type: string
|
|
311
|
+
format: uuid
|
|
312
|
+
description: Task status identifier
|
|
313
|
+
example: d57d9hd7-fh08-7998-d403-80786315f58
|
|
314
|
+
entity_id:
|
|
315
|
+
type: string
|
|
316
|
+
format: uuid
|
|
317
|
+
description: Entity identifier
|
|
318
|
+
example: e68e0ie8-gi19-8009-e514-91897426g69
|
|
319
|
+
assigned_to:
|
|
320
|
+
type: string
|
|
321
|
+
format: uuid
|
|
322
|
+
description: Assigned person identifier
|
|
323
|
+
example: f79f1jf9-hj20-9010-f625-02998537h80
|
|
324
|
+
created_at:
|
|
325
|
+
type: string
|
|
326
|
+
format: date-time
|
|
327
|
+
description: Creation timestamp
|
|
328
|
+
example: "2023-01-01T12:00:00Z"
|
|
329
|
+
updated_at:
|
|
330
|
+
type: string
|
|
331
|
+
format: date-time
|
|
332
|
+
description: Last update timestamp
|
|
333
|
+
example: "2023-01-01T12:30:00Z"
|
|
156
334
|
"""
|
|
157
335
|
concept = concepts_service.get_concept(concept_id)
|
|
158
336
|
user_service.check_project_access(concept["project_id"])
|
|
@@ -166,25 +344,64 @@ class ConceptTasksResource(Resource, ArgsMixin):
|
|
|
166
344
|
|
|
167
345
|
|
|
168
346
|
class ConceptPreviewsResource(Resource):
|
|
347
|
+
|
|
169
348
|
@jwt_required()
|
|
170
349
|
def get(self, concept_id):
|
|
171
350
|
"""
|
|
172
|
-
|
|
351
|
+
Get concept previews
|
|
173
352
|
---
|
|
353
|
+
description: Retrieve all preview files related to a specific concept.
|
|
354
|
+
Returns them as a dictionary where keys are related task type IDs and
|
|
355
|
+
values are arrays of previews for that task type.
|
|
174
356
|
tags:
|
|
175
|
-
|
|
176
|
-
description: It sends them as a dict.
|
|
177
|
-
Keys are related task type ids and values are arrays of preview for this task type.
|
|
357
|
+
- Concepts
|
|
178
358
|
parameters:
|
|
179
359
|
- in: path
|
|
180
360
|
name: concept_id
|
|
181
|
-
required:
|
|
361
|
+
required: true
|
|
182
362
|
type: string
|
|
183
363
|
format: uuid
|
|
184
364
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
365
|
+
description: Unique identifier of the concept
|
|
185
366
|
responses:
|
|
186
|
-
|
|
187
|
-
|
|
367
|
+
200:
|
|
368
|
+
description: Concept previews successfully retrieved
|
|
369
|
+
content:
|
|
370
|
+
application/json:
|
|
371
|
+
schema:
|
|
372
|
+
type: object
|
|
373
|
+
additionalProperties:
|
|
374
|
+
type: array
|
|
375
|
+
items:
|
|
376
|
+
type: object
|
|
377
|
+
properties:
|
|
378
|
+
id:
|
|
379
|
+
type: string
|
|
380
|
+
format: uuid
|
|
381
|
+
description: Preview unique identifier
|
|
382
|
+
example: b35b7fb5-df86-5776-b181-68564193d36
|
|
383
|
+
name:
|
|
384
|
+
type: string
|
|
385
|
+
description: Preview name
|
|
386
|
+
example: "concept_preview_01"
|
|
387
|
+
original_name:
|
|
388
|
+
type: string
|
|
389
|
+
description: Original file name
|
|
390
|
+
example: "character_concept.jpg"
|
|
391
|
+
file_path:
|
|
392
|
+
type: string
|
|
393
|
+
description: File path
|
|
394
|
+
example: "/previews/concept/concept_preview_01.jpg"
|
|
395
|
+
task_type_id:
|
|
396
|
+
type: string
|
|
397
|
+
format: uuid
|
|
398
|
+
description: Task type identifier
|
|
399
|
+
example: c46c8gc6-eg97-6887-c292-79675204e47
|
|
400
|
+
created_at:
|
|
401
|
+
type: string
|
|
402
|
+
format: date-time
|
|
403
|
+
description: Creation timestamp
|
|
404
|
+
example: "2023-01-01T12:00:00Z"
|
|
188
405
|
"""
|
|
189
406
|
concept = concepts_service.get_concept(concept_id)
|
|
190
407
|
user_service.check_project_access(concept["project_id"])
|
|
@@ -198,20 +415,85 @@ class ConceptsAndTasksResource(Resource):
|
|
|
198
415
|
@jwt_required()
|
|
199
416
|
def get(self):
|
|
200
417
|
"""
|
|
201
|
-
|
|
418
|
+
Get concepts and tasks
|
|
202
419
|
---
|
|
420
|
+
description: Retrieve all concepts and all related tasks included in the
|
|
421
|
+
response.
|
|
203
422
|
tags:
|
|
204
|
-
|
|
423
|
+
- Concepts
|
|
205
424
|
parameters:
|
|
206
425
|
- in: query
|
|
207
426
|
name: project_id
|
|
208
|
-
required:
|
|
427
|
+
required: false
|
|
209
428
|
type: string
|
|
210
429
|
format: uuid
|
|
211
430
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
431
|
+
description: Filter concepts by specific project
|
|
212
432
|
responses:
|
|
213
|
-
|
|
214
|
-
|
|
433
|
+
200:
|
|
434
|
+
description: Concepts with tasks successfully retrieved
|
|
435
|
+
content:
|
|
436
|
+
application/json:
|
|
437
|
+
schema:
|
|
438
|
+
type: array
|
|
439
|
+
items:
|
|
440
|
+
type: object
|
|
441
|
+
properties:
|
|
442
|
+
id:
|
|
443
|
+
type: string
|
|
444
|
+
format: uuid
|
|
445
|
+
description: Concept unique identifier
|
|
446
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
447
|
+
name:
|
|
448
|
+
type: string
|
|
449
|
+
description: Concept name
|
|
450
|
+
example: "Character Design"
|
|
451
|
+
description:
|
|
452
|
+
type: string
|
|
453
|
+
description: Concept description
|
|
454
|
+
example: "Main character concept art"
|
|
455
|
+
project_id:
|
|
456
|
+
type: string
|
|
457
|
+
format: uuid
|
|
458
|
+
description: Project identifier
|
|
459
|
+
example: b35b7fb5-df86-5776-b181-68564193d36
|
|
460
|
+
project_name:
|
|
461
|
+
type: string
|
|
462
|
+
description: Project name
|
|
463
|
+
example: "My Animation Project"
|
|
464
|
+
asset_type_name:
|
|
465
|
+
type: string
|
|
466
|
+
description: Asset type name
|
|
467
|
+
example: "Character"
|
|
468
|
+
tasks:
|
|
469
|
+
type: array
|
|
470
|
+
items:
|
|
471
|
+
type: object
|
|
472
|
+
properties:
|
|
473
|
+
id:
|
|
474
|
+
type: string
|
|
475
|
+
format: uuid
|
|
476
|
+
description: Task unique identifier
|
|
477
|
+
example: c46c8gc6-eg97-6887-c292-79675204e47
|
|
478
|
+
name:
|
|
479
|
+
type: string
|
|
480
|
+
description: Task name
|
|
481
|
+
example: "Character Design Task"
|
|
482
|
+
task_type_id:
|
|
483
|
+
type: string
|
|
484
|
+
format: uuid
|
|
485
|
+
description: Task type identifier
|
|
486
|
+
example: d57d9hd7-fh08-7998-d403-80786315f58
|
|
487
|
+
created_at:
|
|
488
|
+
type: string
|
|
489
|
+
format: date-time
|
|
490
|
+
description: Creation timestamp
|
|
491
|
+
example: "2023-01-01T12:00:00Z"
|
|
492
|
+
updated_at:
|
|
493
|
+
type: string
|
|
494
|
+
format: date-time
|
|
495
|
+
description: Last update timestamp
|
|
496
|
+
example: "2023-01-01T12:30:00Z"
|
|
215
497
|
"""
|
|
216
498
|
criterions = query.get_query_criterions_from_request(request)
|
|
217
499
|
user_service.check_project_access(criterions.get("project_id", None))
|
|
@@ -227,20 +509,58 @@ class ProjectConceptsResource(Resource, ArgsMixin):
|
|
|
227
509
|
@jwt_required()
|
|
228
510
|
def get(self, project_id):
|
|
229
511
|
"""
|
|
230
|
-
|
|
512
|
+
Get project concepts
|
|
231
513
|
---
|
|
514
|
+
description: Retrieve all concepts that are related to a specific
|
|
515
|
+
project.
|
|
232
516
|
tags:
|
|
233
|
-
|
|
517
|
+
- Concepts
|
|
234
518
|
parameters:
|
|
235
519
|
- in: path
|
|
236
520
|
name: project_id
|
|
237
|
-
required:
|
|
521
|
+
required: true
|
|
238
522
|
type: string
|
|
239
523
|
format: uuid
|
|
240
524
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
525
|
+
description: Unique identifier of the project
|
|
241
526
|
responses:
|
|
242
|
-
|
|
243
|
-
|
|
527
|
+
200:
|
|
528
|
+
description: List of project concepts successfully retrieved
|
|
529
|
+
content:
|
|
530
|
+
application/json:
|
|
531
|
+
schema:
|
|
532
|
+
type: array
|
|
533
|
+
items:
|
|
534
|
+
type: object
|
|
535
|
+
properties:
|
|
536
|
+
id:
|
|
537
|
+
type: string
|
|
538
|
+
format: uuid
|
|
539
|
+
description: Concept unique identifier
|
|
540
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
541
|
+
name:
|
|
542
|
+
type: string
|
|
543
|
+
description: Concept name
|
|
544
|
+
example: "Character Design"
|
|
545
|
+
description:
|
|
546
|
+
type: string
|
|
547
|
+
description: Concept description
|
|
548
|
+
example: "Main character concept art"
|
|
549
|
+
project_id:
|
|
550
|
+
type: string
|
|
551
|
+
format: uuid
|
|
552
|
+
description: Project identifier
|
|
553
|
+
example: b35b7fb5-df86-5776-b181-68564193d36
|
|
554
|
+
created_at:
|
|
555
|
+
type: string
|
|
556
|
+
format: date-time
|
|
557
|
+
description: Creation timestamp
|
|
558
|
+
example: "2023-01-01T12:00:00Z"
|
|
559
|
+
updated_at:
|
|
560
|
+
type: string
|
|
561
|
+
format: date-time
|
|
562
|
+
description: Last update timestamp
|
|
563
|
+
example: "2023-01-01T12:30:00Z"
|
|
244
564
|
"""
|
|
245
565
|
projects_service.get_project(project_id)
|
|
246
566
|
user_service.check_project_access(project_id)
|
|
@@ -256,33 +576,93 @@ class ProjectConceptsResource(Resource, ArgsMixin):
|
|
|
256
576
|
@jwt_required()
|
|
257
577
|
def post(self, project_id):
|
|
258
578
|
"""
|
|
259
|
-
Create
|
|
579
|
+
Create concept
|
|
260
580
|
---
|
|
581
|
+
description: Create a new concept for a specific project with name,
|
|
582
|
+
description, and optional entity concept links.
|
|
261
583
|
tags:
|
|
262
|
-
|
|
584
|
+
- Concepts
|
|
263
585
|
parameters:
|
|
264
586
|
- in: path
|
|
265
587
|
name: project_id
|
|
266
|
-
required:
|
|
588
|
+
required: true
|
|
267
589
|
type: string
|
|
268
590
|
format: uuid
|
|
269
591
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
592
|
+
description: Unique identifier of the project
|
|
593
|
+
requestBody:
|
|
594
|
+
required: true
|
|
595
|
+
content:
|
|
596
|
+
application/json:
|
|
597
|
+
schema:
|
|
598
|
+
type: object
|
|
599
|
+
required:
|
|
600
|
+
- name
|
|
601
|
+
properties:
|
|
602
|
+
name:
|
|
603
|
+
type: string
|
|
604
|
+
description: Concept name
|
|
605
|
+
example: "Character Design"
|
|
606
|
+
description:
|
|
607
|
+
type: string
|
|
608
|
+
description: Concept description
|
|
609
|
+
example: "Main character concept art"
|
|
610
|
+
data:
|
|
611
|
+
type: object
|
|
612
|
+
description: Additional concept data
|
|
613
|
+
example: {"style": "realistic", "mood": "heroic"}
|
|
614
|
+
entity_concept_links:
|
|
615
|
+
type: array
|
|
616
|
+
items:
|
|
617
|
+
type: string
|
|
618
|
+
format: uuid
|
|
619
|
+
description: List of entity concept link identifiers
|
|
620
|
+
example: ["b35b7fb5-df86-5776-b181-68564193d36", "c46c8gc6-eg97-6887-c292-79675204e47"]
|
|
283
621
|
responses:
|
|
284
|
-
|
|
285
|
-
|
|
622
|
+
201:
|
|
623
|
+
description: Concept successfully created
|
|
624
|
+
content:
|
|
625
|
+
application/json:
|
|
626
|
+
schema:
|
|
627
|
+
type: object
|
|
628
|
+
properties:
|
|
629
|
+
id:
|
|
630
|
+
type: string
|
|
631
|
+
format: uuid
|
|
632
|
+
description: Concept unique identifier
|
|
633
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
634
|
+
name:
|
|
635
|
+
type: string
|
|
636
|
+
description: Concept name
|
|
637
|
+
example: "Character Design"
|
|
638
|
+
description:
|
|
639
|
+
type: string
|
|
640
|
+
description: Concept description
|
|
641
|
+
example: "Main character concept art"
|
|
642
|
+
project_id:
|
|
643
|
+
type: string
|
|
644
|
+
format: uuid
|
|
645
|
+
description: Project identifier
|
|
646
|
+
example: b35b7fb5-df86-5776-b181-68564193d36
|
|
647
|
+
data:
|
|
648
|
+
type: object
|
|
649
|
+
description: Additional concept data
|
|
650
|
+
example: {"style": "realistic", "mood": "heroic"}
|
|
651
|
+
created_by:
|
|
652
|
+
type: string
|
|
653
|
+
format: uuid
|
|
654
|
+
description: Creator person identifier
|
|
655
|
+
example: d57d9hd7-fh08-7998-d403-80786315f58
|
|
656
|
+
created_at:
|
|
657
|
+
type: string
|
|
658
|
+
format: date-time
|
|
659
|
+
description: Creation timestamp
|
|
660
|
+
example: "2023-01-01T12:00:00Z"
|
|
661
|
+
updated_at:
|
|
662
|
+
type: string
|
|
663
|
+
format: date-time
|
|
664
|
+
description: Last update timestamp
|
|
665
|
+
example: "2023-01-01T12:00:00Z"
|
|
286
666
|
"""
|
|
287
667
|
(name, data, description, entity_concept_links) = self.get_arguments()
|
|
288
668
|
projects_service.get_project(project_id)
|