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
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from flask import current_app
|
|
2
|
+
from flask_jwt_extended import jwt_required
|
|
2
3
|
|
|
3
4
|
from zou.app.models.task_status import TaskStatus
|
|
4
5
|
from zou.app.utils import colors
|
|
@@ -10,6 +11,88 @@ from zou.app.blueprints.source.shotgun.base import (
|
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
class ImportShotgunStatusResource(BaseImportShotgunResource):
|
|
14
|
+
@jwt_required()
|
|
15
|
+
def post(self):
|
|
16
|
+
"""
|
|
17
|
+
Import shotgun task statuses
|
|
18
|
+
---
|
|
19
|
+
description: Import Shotgun task statuses. Send a list of Shotgun
|
|
20
|
+
status entries in the JSON body. Returns created or updated task
|
|
21
|
+
statuses with colors.
|
|
22
|
+
tags:
|
|
23
|
+
- Import
|
|
24
|
+
requestBody:
|
|
25
|
+
required: true
|
|
26
|
+
content:
|
|
27
|
+
application/json:
|
|
28
|
+
schema:
|
|
29
|
+
type: array
|
|
30
|
+
items:
|
|
31
|
+
type: object
|
|
32
|
+
properties:
|
|
33
|
+
id:
|
|
34
|
+
type: integer
|
|
35
|
+
description: Shotgun ID of the status
|
|
36
|
+
example: 12345
|
|
37
|
+
name:
|
|
38
|
+
type: string
|
|
39
|
+
description: Status name
|
|
40
|
+
example: "In Progress"
|
|
41
|
+
code:
|
|
42
|
+
type: string
|
|
43
|
+
description: Status short code
|
|
44
|
+
example: "IP"
|
|
45
|
+
bg_color:
|
|
46
|
+
type: string
|
|
47
|
+
description: Background color in RGB format
|
|
48
|
+
example: "255,128,0"
|
|
49
|
+
example:
|
|
50
|
+
- id: 12345
|
|
51
|
+
name: "In Progress"
|
|
52
|
+
code: "IP"
|
|
53
|
+
bg_color: "255,128,0"
|
|
54
|
+
responses:
|
|
55
|
+
200:
|
|
56
|
+
description: Task statuses imported successfully
|
|
57
|
+
content:
|
|
58
|
+
application/json:
|
|
59
|
+
schema:
|
|
60
|
+
type: array
|
|
61
|
+
items:
|
|
62
|
+
type: object
|
|
63
|
+
properties:
|
|
64
|
+
id:
|
|
65
|
+
type: string
|
|
66
|
+
format: uuid
|
|
67
|
+
description: Task status unique identifier
|
|
68
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
69
|
+
name:
|
|
70
|
+
type: string
|
|
71
|
+
description: Status name
|
|
72
|
+
example: "In Progress"
|
|
73
|
+
short_name:
|
|
74
|
+
type: string
|
|
75
|
+
description: Status short code
|
|
76
|
+
example: "IP"
|
|
77
|
+
color:
|
|
78
|
+
type: string
|
|
79
|
+
description: Status color in hex format
|
|
80
|
+
example: "#FF8000"
|
|
81
|
+
created_at:
|
|
82
|
+
type: string
|
|
83
|
+
format: date-time
|
|
84
|
+
description: Creation timestamp
|
|
85
|
+
example: "2024-01-15T10:30:00Z"
|
|
86
|
+
updated_at:
|
|
87
|
+
type: string
|
|
88
|
+
format: date-time
|
|
89
|
+
description: Update timestamp
|
|
90
|
+
example: "2024-01-15T11:00:00Z"
|
|
91
|
+
400:
|
|
92
|
+
description: Invalid request body or data format error
|
|
93
|
+
"""
|
|
94
|
+
return super().post()
|
|
95
|
+
|
|
13
96
|
def import_entry(self, data):
|
|
14
97
|
task_status = self.get_existing_status(data)
|
|
15
98
|
if task_status is None:
|
|
@@ -44,3 +127,49 @@ class ImportShotgunStatusResource(BaseImportShotgunResource):
|
|
|
44
127
|
class ImportRemoveShotgunStatusResource(ImportRemoveShotgunBaseResource):
|
|
45
128
|
def __init__(self):
|
|
46
129
|
ImportRemoveShotgunBaseResource.__init__(self, TaskStatus)
|
|
130
|
+
|
|
131
|
+
@jwt_required()
|
|
132
|
+
def post(self):
|
|
133
|
+
"""
|
|
134
|
+
Remove shotgun task status
|
|
135
|
+
---
|
|
136
|
+
description: Remove a Shotgun task status from the database. Provide
|
|
137
|
+
the Shotgun entry ID in the JSON body.
|
|
138
|
+
tags:
|
|
139
|
+
- Import
|
|
140
|
+
requestBody:
|
|
141
|
+
required: true
|
|
142
|
+
content:
|
|
143
|
+
application/json:
|
|
144
|
+
schema:
|
|
145
|
+
type: object
|
|
146
|
+
required:
|
|
147
|
+
- id
|
|
148
|
+
properties:
|
|
149
|
+
id:
|
|
150
|
+
type: integer
|
|
151
|
+
description: Shotgun ID of the task status to remove
|
|
152
|
+
example: 12345
|
|
153
|
+
example:
|
|
154
|
+
id: 12345
|
|
155
|
+
responses:
|
|
156
|
+
200:
|
|
157
|
+
description: Removal result returned
|
|
158
|
+
content:
|
|
159
|
+
application/json:
|
|
160
|
+
schema:
|
|
161
|
+
type: object
|
|
162
|
+
properties:
|
|
163
|
+
success:
|
|
164
|
+
type: boolean
|
|
165
|
+
description: Whether the removal was successful
|
|
166
|
+
example: true
|
|
167
|
+
removed_instance_id:
|
|
168
|
+
type: string
|
|
169
|
+
format: uuid
|
|
170
|
+
description: ID of the removed task status, if found
|
|
171
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
172
|
+
400:
|
|
173
|
+
description: Invalid request body or instance not found
|
|
174
|
+
"""
|
|
175
|
+
return super().post()
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from flask import current_app
|
|
2
2
|
from flask_restful import Resource
|
|
3
|
+
from flask_jwt_extended import jwt_required
|
|
3
4
|
|
|
4
5
|
from zou.app.models.department import Department
|
|
5
6
|
from zou.app.models.task_type import TaskType
|
|
@@ -16,6 +17,97 @@ class ImportShotgunStepsResource(BaseImportShotgunResource):
|
|
|
16
17
|
def __init__(self):
|
|
17
18
|
Resource.__init__(self)
|
|
18
19
|
|
|
20
|
+
@jwt_required()
|
|
21
|
+
def post(self):
|
|
22
|
+
"""
|
|
23
|
+
Import shotgun steps
|
|
24
|
+
---
|
|
25
|
+
description: Import Shotgun steps (task types). Send a list of
|
|
26
|
+
Shotgun step entries in the JSON body. Returns created or updated
|
|
27
|
+
task types with departments.
|
|
28
|
+
tags:
|
|
29
|
+
- Import
|
|
30
|
+
requestBody:
|
|
31
|
+
required: true
|
|
32
|
+
content:
|
|
33
|
+
application/json:
|
|
34
|
+
schema:
|
|
35
|
+
type: array
|
|
36
|
+
items:
|
|
37
|
+
type: object
|
|
38
|
+
properties:
|
|
39
|
+
id:
|
|
40
|
+
type: integer
|
|
41
|
+
description: Shotgun ID of the step
|
|
42
|
+
example: 12345
|
|
43
|
+
code:
|
|
44
|
+
type: string
|
|
45
|
+
description: Step code (used to extract department)
|
|
46
|
+
example: "Animation Modeling"
|
|
47
|
+
short_name:
|
|
48
|
+
type: string
|
|
49
|
+
description: Step short name
|
|
50
|
+
example: "mod"
|
|
51
|
+
color:
|
|
52
|
+
type: string
|
|
53
|
+
description: Color in RGB format
|
|
54
|
+
example: "255,128,0"
|
|
55
|
+
entity_type:
|
|
56
|
+
type: string
|
|
57
|
+
description: Entity type this step applies to
|
|
58
|
+
example: "Asset"
|
|
59
|
+
example:
|
|
60
|
+
- id: 12345
|
|
61
|
+
code: "Animation Modeling"
|
|
62
|
+
short_name: "mod"
|
|
63
|
+
color: "255,128,0"
|
|
64
|
+
entity_type: "Asset"
|
|
65
|
+
responses:
|
|
66
|
+
200:
|
|
67
|
+
description: Task types imported successfully
|
|
68
|
+
content:
|
|
69
|
+
application/json:
|
|
70
|
+
schema:
|
|
71
|
+
type: array
|
|
72
|
+
items:
|
|
73
|
+
type: object
|
|
74
|
+
properties:
|
|
75
|
+
id:
|
|
76
|
+
type: string
|
|
77
|
+
format: uuid
|
|
78
|
+
description: Task type unique identifier
|
|
79
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
80
|
+
name:
|
|
81
|
+
type: string
|
|
82
|
+
description: Task type name
|
|
83
|
+
example: "Animation Modeling"
|
|
84
|
+
short_name:
|
|
85
|
+
type: string
|
|
86
|
+
description: Task type short name
|
|
87
|
+
example: "mod"
|
|
88
|
+
color:
|
|
89
|
+
type: string
|
|
90
|
+
description: Task type color in hex format
|
|
91
|
+
example: "#FF8000"
|
|
92
|
+
for_entity:
|
|
93
|
+
type: string
|
|
94
|
+
description: Entity type
|
|
95
|
+
example: "Asset"
|
|
96
|
+
created_at:
|
|
97
|
+
type: string
|
|
98
|
+
format: date-time
|
|
99
|
+
description: Creation timestamp
|
|
100
|
+
example: "2024-01-15T10:30:00Z"
|
|
101
|
+
updated_at:
|
|
102
|
+
type: string
|
|
103
|
+
format: date-time
|
|
104
|
+
description: Update timestamp
|
|
105
|
+
example: "2024-01-15T11:00:00Z"
|
|
106
|
+
400:
|
|
107
|
+
description: Invalid request body or data format error
|
|
108
|
+
"""
|
|
109
|
+
return super().post()
|
|
110
|
+
|
|
19
111
|
def extract_data(self, sg_step):
|
|
20
112
|
color = self.extract_color(sg_step)
|
|
21
113
|
department_name = self.extract_department_name(sg_step)
|
|
@@ -85,3 +177,49 @@ class ImportShotgunStepsResource(BaseImportShotgunResource):
|
|
|
85
177
|
class ImportRemoveShotgunStepResource(ImportRemoveShotgunBaseResource):
|
|
86
178
|
def __init__(self):
|
|
87
179
|
ImportRemoveShotgunBaseResource.__init__(self, TaskType)
|
|
180
|
+
|
|
181
|
+
@jwt_required()
|
|
182
|
+
def post(self):
|
|
183
|
+
"""
|
|
184
|
+
Remove shotgun step
|
|
185
|
+
---
|
|
186
|
+
description: Remove a Shotgun step (task type) from the database.
|
|
187
|
+
Provide the Shotgun entry ID in the JSON body.
|
|
188
|
+
tags:
|
|
189
|
+
- Import
|
|
190
|
+
requestBody:
|
|
191
|
+
required: true
|
|
192
|
+
content:
|
|
193
|
+
application/json:
|
|
194
|
+
schema:
|
|
195
|
+
type: object
|
|
196
|
+
required:
|
|
197
|
+
- id
|
|
198
|
+
properties:
|
|
199
|
+
id:
|
|
200
|
+
type: integer
|
|
201
|
+
description: Shotgun ID of the step to remove
|
|
202
|
+
example: 12345
|
|
203
|
+
example:
|
|
204
|
+
id: 12345
|
|
205
|
+
responses:
|
|
206
|
+
200:
|
|
207
|
+
description: Removal result returned
|
|
208
|
+
content:
|
|
209
|
+
application/json:
|
|
210
|
+
schema:
|
|
211
|
+
type: object
|
|
212
|
+
properties:
|
|
213
|
+
success:
|
|
214
|
+
type: boolean
|
|
215
|
+
description: Whether the removal was successful
|
|
216
|
+
example: true
|
|
217
|
+
removed_instance_id:
|
|
218
|
+
type: string
|
|
219
|
+
format: uuid
|
|
220
|
+
description: ID of the removed step, if found
|
|
221
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
222
|
+
400:
|
|
223
|
+
description: Invalid request body or instance not found
|
|
224
|
+
"""
|
|
225
|
+
return super().post()
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from flask import current_app
|
|
2
|
+
from flask_jwt_extended import jwt_required
|
|
2
3
|
|
|
3
4
|
from zou.app.models.task_type import TaskType
|
|
4
5
|
from zou.app.models.task_status import TaskStatus
|
|
@@ -15,6 +16,158 @@ from zou.app.blueprints.source.shotgun.base import (
|
|
|
15
16
|
|
|
16
17
|
|
|
17
18
|
class ImportShotgunTasksResource(BaseImportShotgunResource):
|
|
19
|
+
@jwt_required()
|
|
20
|
+
def post(self):
|
|
21
|
+
"""
|
|
22
|
+
Import shotgun tasks
|
|
23
|
+
---
|
|
24
|
+
description: Import Shotgun tasks. Send a list of Shotgun task
|
|
25
|
+
entries in the JSON body. Only tasks with steps and projects are
|
|
26
|
+
imported. Returns created or updated tasks with assignees.
|
|
27
|
+
tags:
|
|
28
|
+
- Import
|
|
29
|
+
requestBody:
|
|
30
|
+
required: true
|
|
31
|
+
content:
|
|
32
|
+
application/json:
|
|
33
|
+
schema:
|
|
34
|
+
type: array
|
|
35
|
+
items:
|
|
36
|
+
type: object
|
|
37
|
+
properties:
|
|
38
|
+
id:
|
|
39
|
+
type: integer
|
|
40
|
+
description: Shotgun ID of the task
|
|
41
|
+
example: 12345
|
|
42
|
+
cached_display_name:
|
|
43
|
+
type: string
|
|
44
|
+
description: Task display name
|
|
45
|
+
example: "Modeling for Asset"
|
|
46
|
+
start_date:
|
|
47
|
+
type: string
|
|
48
|
+
format: date
|
|
49
|
+
description: Start date
|
|
50
|
+
example: "2024-01-15"
|
|
51
|
+
due_date:
|
|
52
|
+
type: string
|
|
53
|
+
format: date
|
|
54
|
+
description: Due date
|
|
55
|
+
example: "2024-02-15"
|
|
56
|
+
sg_sort_order:
|
|
57
|
+
type: integer
|
|
58
|
+
description: Sort order
|
|
59
|
+
example: 1
|
|
60
|
+
duration:
|
|
61
|
+
type: integer
|
|
62
|
+
description: Duration in days
|
|
63
|
+
example: 30
|
|
64
|
+
step:
|
|
65
|
+
type: object
|
|
66
|
+
description: Step (task type) information
|
|
67
|
+
properties:
|
|
68
|
+
id:
|
|
69
|
+
type: integer
|
|
70
|
+
example: 11111
|
|
71
|
+
project:
|
|
72
|
+
type: object
|
|
73
|
+
description: Project information
|
|
74
|
+
properties:
|
|
75
|
+
id:
|
|
76
|
+
type: integer
|
|
77
|
+
example: 22222
|
|
78
|
+
entity:
|
|
79
|
+
type: object
|
|
80
|
+
description: Entity information
|
|
81
|
+
properties:
|
|
82
|
+
id:
|
|
83
|
+
type: integer
|
|
84
|
+
example: 33333
|
|
85
|
+
type:
|
|
86
|
+
type: string
|
|
87
|
+
example: "Asset"
|
|
88
|
+
sg_status_list:
|
|
89
|
+
type: string
|
|
90
|
+
description: Status short name
|
|
91
|
+
example: "IP"
|
|
92
|
+
created_by:
|
|
93
|
+
type: object
|
|
94
|
+
description: Creator information
|
|
95
|
+
properties:
|
|
96
|
+
id:
|
|
97
|
+
type: integer
|
|
98
|
+
example: 44444
|
|
99
|
+
task_assignees:
|
|
100
|
+
type: array
|
|
101
|
+
description: Task assignees
|
|
102
|
+
items:
|
|
103
|
+
type: object
|
|
104
|
+
properties:
|
|
105
|
+
id:
|
|
106
|
+
type: integer
|
|
107
|
+
example: 55555
|
|
108
|
+
example:
|
|
109
|
+
- id: 12345
|
|
110
|
+
cached_display_name: "Modeling for Asset"
|
|
111
|
+
start_date: "2024-01-15"
|
|
112
|
+
due_date: "2024-02-15"
|
|
113
|
+
sg_sort_order: 1
|
|
114
|
+
duration: 30
|
|
115
|
+
step:
|
|
116
|
+
id: 11111
|
|
117
|
+
project:
|
|
118
|
+
id: 22222
|
|
119
|
+
entity:
|
|
120
|
+
id: 33333
|
|
121
|
+
type: "Asset"
|
|
122
|
+
sg_status_list: "IP"
|
|
123
|
+
created_by:
|
|
124
|
+
id: 44444
|
|
125
|
+
task_assignees:
|
|
126
|
+
- id: 55555
|
|
127
|
+
responses:
|
|
128
|
+
200:
|
|
129
|
+
description: Tasks imported successfully
|
|
130
|
+
content:
|
|
131
|
+
application/json:
|
|
132
|
+
schema:
|
|
133
|
+
type: array
|
|
134
|
+
items:
|
|
135
|
+
type: object
|
|
136
|
+
properties:
|
|
137
|
+
id:
|
|
138
|
+
type: string
|
|
139
|
+
format: uuid
|
|
140
|
+
description: Task unique identifier
|
|
141
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
142
|
+
name:
|
|
143
|
+
type: string
|
|
144
|
+
description: Task name
|
|
145
|
+
example: "Modeling for Asset"
|
|
146
|
+
start_date:
|
|
147
|
+
type: string
|
|
148
|
+
format: date
|
|
149
|
+
description: Start date
|
|
150
|
+
example: "2024-01-15"
|
|
151
|
+
due_date:
|
|
152
|
+
type: string
|
|
153
|
+
format: date
|
|
154
|
+
description: Due date
|
|
155
|
+
example: "2024-02-15"
|
|
156
|
+
created_at:
|
|
157
|
+
type: string
|
|
158
|
+
format: date-time
|
|
159
|
+
description: Creation timestamp
|
|
160
|
+
example: "2024-01-15T10:30:00Z"
|
|
161
|
+
updated_at:
|
|
162
|
+
type: string
|
|
163
|
+
format: date-time
|
|
164
|
+
description: Update timestamp
|
|
165
|
+
example: "2024-01-15T11:00:00Z"
|
|
166
|
+
400:
|
|
167
|
+
description: Invalid request body or data format error
|
|
168
|
+
"""
|
|
169
|
+
return super().post()
|
|
170
|
+
|
|
18
171
|
def prepare_import(self):
|
|
19
172
|
self.project_ids = Project.get_id_map()
|
|
20
173
|
self.person_ids = Person.get_id_map()
|
|
@@ -122,6 +275,52 @@ class ImportRemoveShotgunTaskResource(ImportRemoveShotgunBaseResource):
|
|
|
122
275
|
def __init__(self):
|
|
123
276
|
ImportRemoveShotgunBaseResource.__init__(self, Task, self.delete_func)
|
|
124
277
|
|
|
278
|
+
@jwt_required()
|
|
279
|
+
def post(self):
|
|
280
|
+
"""
|
|
281
|
+
Remove shotgun task
|
|
282
|
+
---
|
|
283
|
+
description: Remove a Shotgun task from the database. Provide the
|
|
284
|
+
Shotgun entry ID in the JSON body.
|
|
285
|
+
tags:
|
|
286
|
+
- Import
|
|
287
|
+
requestBody:
|
|
288
|
+
required: true
|
|
289
|
+
content:
|
|
290
|
+
application/json:
|
|
291
|
+
schema:
|
|
292
|
+
type: object
|
|
293
|
+
required:
|
|
294
|
+
- id
|
|
295
|
+
properties:
|
|
296
|
+
id:
|
|
297
|
+
type: integer
|
|
298
|
+
description: Shotgun ID of the task to remove
|
|
299
|
+
example: 12345
|
|
300
|
+
example:
|
|
301
|
+
id: 12345
|
|
302
|
+
responses:
|
|
303
|
+
200:
|
|
304
|
+
description: Removal result returned
|
|
305
|
+
content:
|
|
306
|
+
application/json:
|
|
307
|
+
schema:
|
|
308
|
+
type: object
|
|
309
|
+
properties:
|
|
310
|
+
success:
|
|
311
|
+
type: boolean
|
|
312
|
+
description: Whether the removal was successful
|
|
313
|
+
example: true
|
|
314
|
+
removed_instance_id:
|
|
315
|
+
type: string
|
|
316
|
+
format: uuid
|
|
317
|
+
description: ID of the removed task, if found
|
|
318
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
319
|
+
400:
|
|
320
|
+
description: Invalid request body or instance not found
|
|
321
|
+
"""
|
|
322
|
+
return super().post()
|
|
323
|
+
|
|
125
324
|
def delete_func(self, entity):
|
|
126
325
|
deletion_service.remove_task(entity.id)
|
|
127
326
|
tasks_service.clear_task_cache(str(entity.id))
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from flask import current_app
|
|
2
|
+
from flask_jwt_extended import jwt_required
|
|
2
3
|
|
|
3
4
|
from zou.app.models.project import Project
|
|
4
5
|
from zou.app.models.project import ProjectPersonLink
|
|
@@ -14,6 +15,91 @@ class ImportShotgunProjectConnectionsResource(BaseImportShotgunResource):
|
|
|
14
15
|
def __init__(self):
|
|
15
16
|
BaseImportShotgunResource.__init__(self)
|
|
16
17
|
|
|
18
|
+
@jwt_required()
|
|
19
|
+
def post(self):
|
|
20
|
+
"""
|
|
21
|
+
Import shotgun project connections
|
|
22
|
+
---
|
|
23
|
+
description: Import Shotgun project-user connections. Send a list of
|
|
24
|
+
Shotgun project connection entries in the JSON body. Returns
|
|
25
|
+
projects with team members added.
|
|
26
|
+
tags:
|
|
27
|
+
- Import
|
|
28
|
+
requestBody:
|
|
29
|
+
required: true
|
|
30
|
+
content:
|
|
31
|
+
application/json:
|
|
32
|
+
schema:
|
|
33
|
+
type: array
|
|
34
|
+
items:
|
|
35
|
+
type: object
|
|
36
|
+
properties:
|
|
37
|
+
id:
|
|
38
|
+
type: integer
|
|
39
|
+
description: Shotgun ID of the connection
|
|
40
|
+
example: 12345
|
|
41
|
+
project:
|
|
42
|
+
type: object
|
|
43
|
+
description: Project information
|
|
44
|
+
properties:
|
|
45
|
+
id:
|
|
46
|
+
type: integer
|
|
47
|
+
example: 11111
|
|
48
|
+
user:
|
|
49
|
+
type: object
|
|
50
|
+
description: User information
|
|
51
|
+
properties:
|
|
52
|
+
id:
|
|
53
|
+
type: integer
|
|
54
|
+
example: 22222
|
|
55
|
+
example:
|
|
56
|
+
- id: 12345
|
|
57
|
+
project:
|
|
58
|
+
id: 11111
|
|
59
|
+
user:
|
|
60
|
+
id: 22222
|
|
61
|
+
responses:
|
|
62
|
+
200:
|
|
63
|
+
description: Project connections imported successfully
|
|
64
|
+
content:
|
|
65
|
+
application/json:
|
|
66
|
+
schema:
|
|
67
|
+
type: array
|
|
68
|
+
items:
|
|
69
|
+
type: object
|
|
70
|
+
properties:
|
|
71
|
+
id:
|
|
72
|
+
type: string
|
|
73
|
+
format: uuid
|
|
74
|
+
description: Project unique identifier
|
|
75
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
76
|
+
name:
|
|
77
|
+
type: string
|
|
78
|
+
description: Project name
|
|
79
|
+
example: "My Project"
|
|
80
|
+
team:
|
|
81
|
+
type: array
|
|
82
|
+
description: Team member IDs
|
|
83
|
+
items:
|
|
84
|
+
type: string
|
|
85
|
+
format: uuid
|
|
86
|
+
example:
|
|
87
|
+
- b35b7fb5-df86-5776-b181-68564193d36
|
|
88
|
+
created_at:
|
|
89
|
+
type: string
|
|
90
|
+
format: date-time
|
|
91
|
+
description: Creation timestamp
|
|
92
|
+
example: "2024-01-15T10:30:00Z"
|
|
93
|
+
updated_at:
|
|
94
|
+
type: string
|
|
95
|
+
format: date-time
|
|
96
|
+
description: Update timestamp
|
|
97
|
+
example: "2024-01-15T11:00:00Z"
|
|
98
|
+
400:
|
|
99
|
+
description: Invalid request body or data format error
|
|
100
|
+
"""
|
|
101
|
+
return super().post()
|
|
102
|
+
|
|
17
103
|
def prepare_import(self):
|
|
18
104
|
pass
|
|
19
105
|
|
|
@@ -55,3 +141,49 @@ class ImportRemoveShotgunProjectConnectionResource(
|
|
|
55
141
|
):
|
|
56
142
|
def __init__(self):
|
|
57
143
|
ImportRemoveShotgunBaseResource.__init__(self, ProjectPersonLink)
|
|
144
|
+
|
|
145
|
+
@jwt_required()
|
|
146
|
+
def post(self):
|
|
147
|
+
"""
|
|
148
|
+
Remove shotgun project connection
|
|
149
|
+
---
|
|
150
|
+
description: Remove a Shotgun project-user connection from the
|
|
151
|
+
database. Provide the Shotgun entry ID in the JSON body.
|
|
152
|
+
tags:
|
|
153
|
+
- Import
|
|
154
|
+
requestBody:
|
|
155
|
+
required: true
|
|
156
|
+
content:
|
|
157
|
+
application/json:
|
|
158
|
+
schema:
|
|
159
|
+
type: object
|
|
160
|
+
required:
|
|
161
|
+
- id
|
|
162
|
+
properties:
|
|
163
|
+
id:
|
|
164
|
+
type: integer
|
|
165
|
+
description: Shotgun ID of the connection to remove
|
|
166
|
+
example: 12345
|
|
167
|
+
example:
|
|
168
|
+
id: 12345
|
|
169
|
+
responses:
|
|
170
|
+
200:
|
|
171
|
+
description: Removal result returned
|
|
172
|
+
content:
|
|
173
|
+
application/json:
|
|
174
|
+
schema:
|
|
175
|
+
type: object
|
|
176
|
+
properties:
|
|
177
|
+
success:
|
|
178
|
+
type: boolean
|
|
179
|
+
description: Whether the removal was successful
|
|
180
|
+
example: true
|
|
181
|
+
removed_instance_id:
|
|
182
|
+
type: string
|
|
183
|
+
format: uuid
|
|
184
|
+
description: ID of the removed connection, if found
|
|
185
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
186
|
+
400:
|
|
187
|
+
description: Invalid request body or instance not found
|
|
188
|
+
"""
|
|
189
|
+
return super().post()
|