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
|
@@ -15,21 +15,23 @@ class EntityNewsResource(Resource):
|
|
|
15
15
|
@jwt_required()
|
|
16
16
|
def get(self, entity_id):
|
|
17
17
|
"""
|
|
18
|
-
|
|
18
|
+
Get entity news
|
|
19
19
|
---
|
|
20
|
+
description: Retrieve all news entries that are linked to a specific
|
|
21
|
+
entity.
|
|
20
22
|
tags:
|
|
21
23
|
- Entities
|
|
22
24
|
parameters:
|
|
23
25
|
- in: path
|
|
24
26
|
name: entity_id
|
|
25
27
|
required: true
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
format: uuid
|
|
28
|
+
type: string
|
|
29
|
+
format: uuid
|
|
29
30
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
31
|
+
description: Unique identifier of the entity
|
|
30
32
|
responses:
|
|
31
|
-
|
|
32
|
-
description:
|
|
33
|
+
200:
|
|
34
|
+
description: List of entity news successfully retrieved
|
|
33
35
|
content:
|
|
34
36
|
application/json:
|
|
35
37
|
schema:
|
|
@@ -40,21 +42,42 @@ class EntityNewsResource(Resource):
|
|
|
40
42
|
id:
|
|
41
43
|
type: string
|
|
42
44
|
format: uuid
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
45
|
+
description: News unique identifier
|
|
46
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
47
|
+
change:
|
|
48
|
+
type: boolean
|
|
49
|
+
description: Whether this news represents a change
|
|
50
|
+
example: true
|
|
51
|
+
author_id:
|
|
46
52
|
type: string
|
|
47
|
-
|
|
53
|
+
format: uuid
|
|
54
|
+
description: Author person identifier
|
|
55
|
+
example: b35b7fb5-df86-5776-b181-68564193d36
|
|
56
|
+
comment_id:
|
|
48
57
|
type: string
|
|
49
|
-
format:
|
|
50
|
-
|
|
58
|
+
format: uuid
|
|
59
|
+
description: Comment identifier
|
|
60
|
+
example: c46c8gc6-eg97-6887-c292-79675204e47
|
|
61
|
+
task_id:
|
|
51
62
|
type: string
|
|
52
63
|
format: uuid
|
|
53
|
-
|
|
64
|
+
description: Task identifier
|
|
65
|
+
example: d57d9hd7-fh08-7998-d403-80786315f58
|
|
66
|
+
preview_file_id:
|
|
54
67
|
type: string
|
|
55
68
|
format: uuid
|
|
56
|
-
|
|
57
|
-
|
|
69
|
+
description: Preview file identifier
|
|
70
|
+
example: e68e0ie8-gi19-8009-e514-91897426g69
|
|
71
|
+
created_at:
|
|
72
|
+
type: string
|
|
73
|
+
format: date-time
|
|
74
|
+
description: Creation timestamp
|
|
75
|
+
example: "2023-01-01T12:00:00Z"
|
|
76
|
+
updated_at:
|
|
77
|
+
type: string
|
|
78
|
+
format: date-time
|
|
79
|
+
description: Last update timestamp
|
|
80
|
+
example: "2023-01-01T12:30:00Z"
|
|
58
81
|
"""
|
|
59
82
|
entity = entities_service.get_entity(entity_id)
|
|
60
83
|
user_service.check_project_access(entity["project_id"])
|
|
@@ -65,21 +88,24 @@ class EntityPreviewFilesResource(Resource):
|
|
|
65
88
|
@jwt_required()
|
|
66
89
|
def get(self, entity_id):
|
|
67
90
|
"""
|
|
68
|
-
|
|
91
|
+
Get entity preview files
|
|
69
92
|
---
|
|
93
|
+
description: Retrieve all preview files that are linked to a specific
|
|
94
|
+
entity. This includes images, videos, and other preview media
|
|
95
|
+
associated with the entity.
|
|
70
96
|
tags:
|
|
71
97
|
- Entities
|
|
72
98
|
parameters:
|
|
73
99
|
- in: path
|
|
74
100
|
name: entity_id
|
|
75
101
|
required: true
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
format: uuid
|
|
102
|
+
type: string
|
|
103
|
+
format: uuid
|
|
79
104
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
105
|
+
description: Unique identifier of the entity
|
|
80
106
|
responses:
|
|
81
|
-
|
|
82
|
-
description:
|
|
107
|
+
200:
|
|
108
|
+
description: List of entity preview files successfully retrieved
|
|
83
109
|
content:
|
|
84
110
|
application/json:
|
|
85
111
|
schema:
|
|
@@ -90,23 +116,35 @@ class EntityPreviewFilesResource(Resource):
|
|
|
90
116
|
id:
|
|
91
117
|
type: string
|
|
92
118
|
format: uuid
|
|
119
|
+
description: Preview file unique identifier
|
|
120
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
93
121
|
name:
|
|
94
122
|
type: string
|
|
123
|
+
description: Preview file name
|
|
124
|
+
example: "preview_001.jpg"
|
|
95
125
|
path:
|
|
96
126
|
type: string
|
|
127
|
+
description: File path
|
|
128
|
+
example: "/previews/entity/preview_001.jpg"
|
|
97
129
|
revision:
|
|
98
130
|
type: integer
|
|
131
|
+
description: File revision number
|
|
132
|
+
example: 1
|
|
99
133
|
created_at:
|
|
100
134
|
type: string
|
|
101
135
|
format: date-time
|
|
136
|
+
description: Creation timestamp
|
|
137
|
+
example: "2023-01-01T12:00:00Z"
|
|
102
138
|
entity_id:
|
|
103
139
|
type: string
|
|
104
140
|
format: uuid
|
|
141
|
+
description: Entity identifier
|
|
142
|
+
example: b35b7fb5-df86-5776-b181-68564193d36
|
|
105
143
|
task_id:
|
|
106
144
|
type: string
|
|
107
145
|
format: uuid
|
|
108
|
-
|
|
109
|
-
|
|
146
|
+
description: Task identifier
|
|
147
|
+
example: c46c8gc6-eg97-6887-c292-79675204e47
|
|
110
148
|
"""
|
|
111
149
|
entity = entities_service.get_entity(entity_id)
|
|
112
150
|
user_service.check_project_access(entity["project_id"])
|
|
@@ -117,21 +155,23 @@ class EntityTimeSpentsResource(Resource):
|
|
|
117
155
|
@jwt_required()
|
|
118
156
|
def get(self, entity_id):
|
|
119
157
|
"""
|
|
120
|
-
|
|
158
|
+
Get entity time spent
|
|
121
159
|
---
|
|
160
|
+
description: Retrieve all time spent entries that are linked to a
|
|
161
|
+
specific entity.
|
|
122
162
|
tags:
|
|
123
163
|
- Entities
|
|
124
164
|
parameters:
|
|
125
165
|
- in: path
|
|
126
166
|
name: entity_id
|
|
127
167
|
required: true
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
format: uuid
|
|
168
|
+
type: string
|
|
169
|
+
format: uuid
|
|
131
170
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
171
|
+
description: Unique identifier of the entity
|
|
132
172
|
responses:
|
|
133
|
-
|
|
134
|
-
description:
|
|
173
|
+
200:
|
|
174
|
+
description: List of entity time spent entries successfully retrieved
|
|
135
175
|
content:
|
|
136
176
|
application/json:
|
|
137
177
|
schema:
|
|
@@ -142,25 +182,33 @@ class EntityTimeSpentsResource(Resource):
|
|
|
142
182
|
id:
|
|
143
183
|
type: string
|
|
144
184
|
format: uuid
|
|
185
|
+
description: Time spent unique identifier
|
|
186
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
145
187
|
duration:
|
|
146
188
|
type: number
|
|
147
189
|
format: float
|
|
190
|
+
description: Time duration in hours
|
|
148
191
|
example: 2.5
|
|
149
192
|
date:
|
|
150
193
|
type: string
|
|
151
194
|
format: date
|
|
195
|
+
description: Date when time was spent
|
|
152
196
|
example: "2023-12-07"
|
|
153
197
|
created_at:
|
|
154
198
|
type: string
|
|
155
199
|
format: date-time
|
|
200
|
+
description: Creation timestamp
|
|
201
|
+
example: "2023-01-01T12:00:00Z"
|
|
156
202
|
person_id:
|
|
157
203
|
type: string
|
|
158
204
|
format: uuid
|
|
205
|
+
description: Person identifier who spent the time
|
|
206
|
+
example: b35b7fb5-df86-5776-b181-68564193d36
|
|
159
207
|
entity_id:
|
|
160
208
|
type: string
|
|
161
209
|
format: uuid
|
|
162
|
-
|
|
163
|
-
|
|
210
|
+
description: Entity identifier
|
|
211
|
+
example: c46c8gc6-eg97-6887-c292-79675204e47
|
|
164
212
|
"""
|
|
165
213
|
entity = entities_service.get_entity(entity_id)
|
|
166
214
|
user_service.check_project_access(entity["project_id"])
|
|
@@ -171,21 +219,24 @@ class EntitiesLinkedWithTasksResource(Resource):
|
|
|
171
219
|
@jwt_required()
|
|
172
220
|
def get(self, entity_id):
|
|
173
221
|
"""
|
|
174
|
-
|
|
222
|
+
Get linked entities
|
|
175
223
|
---
|
|
224
|
+
description: Retrieve all entities that are linked to a specific entity
|
|
225
|
+
along with their associated tasks. This includes related entities,
|
|
226
|
+
dependencies, and hierarchical relationships.
|
|
176
227
|
tags:
|
|
177
228
|
- Entities
|
|
178
229
|
parameters:
|
|
179
230
|
- in: path
|
|
180
231
|
name: entity_id
|
|
181
232
|
required: true
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
format: uuid
|
|
233
|
+
type: string
|
|
234
|
+
format: uuid
|
|
185
235
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
236
|
+
description: Unique identifier of the entity
|
|
186
237
|
responses:
|
|
187
|
-
|
|
188
|
-
description:
|
|
238
|
+
200:
|
|
239
|
+
description: List of linked entities successfully retrieved
|
|
189
240
|
content:
|
|
190
241
|
application/json:
|
|
191
242
|
schema:
|
|
@@ -196,17 +247,27 @@ class EntitiesLinkedWithTasksResource(Resource):
|
|
|
196
247
|
id:
|
|
197
248
|
type: string
|
|
198
249
|
format: uuid
|
|
250
|
+
description: Entity unique identifier
|
|
251
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
199
252
|
name:
|
|
200
253
|
type: string
|
|
254
|
+
description: Entity name
|
|
255
|
+
example: "Character Model"
|
|
201
256
|
entity_type_id:
|
|
202
257
|
type: string
|
|
203
258
|
format: uuid
|
|
259
|
+
description: Entity type identifier
|
|
260
|
+
example: b35b7fb5-df86-5776-b181-68564193d36
|
|
204
261
|
project_id:
|
|
205
262
|
type: string
|
|
206
263
|
format: uuid
|
|
264
|
+
description: Project identifier
|
|
265
|
+
example: c46c8gc6-eg97-6887-c292-79675204e47
|
|
207
266
|
parent_id:
|
|
208
267
|
type: string
|
|
209
268
|
format: uuid
|
|
269
|
+
description: Parent entity identifier
|
|
270
|
+
example: d57d9hd7-fh08-7998-d403-80786315f58
|
|
210
271
|
tasks:
|
|
211
272
|
type: array
|
|
212
273
|
items:
|
|
@@ -215,13 +276,17 @@ class EntitiesLinkedWithTasksResource(Resource):
|
|
|
215
276
|
id:
|
|
216
277
|
type: string
|
|
217
278
|
format: uuid
|
|
279
|
+
description: Task unique identifier
|
|
280
|
+
example: e68e0ie8-gi19-8009-e514-91897426g69
|
|
218
281
|
name:
|
|
219
282
|
type: string
|
|
283
|
+
description: Task name
|
|
284
|
+
example: "Modeling Task"
|
|
220
285
|
task_type_id:
|
|
221
286
|
type: string
|
|
222
287
|
format: uuid
|
|
223
|
-
|
|
224
|
-
|
|
288
|
+
description: Task type identifier
|
|
289
|
+
example: f79f1jf9-hj20-9010-f625-02998537h80
|
|
225
290
|
"""
|
|
226
291
|
entity = entities_service.get_entity(entity_id)
|
|
227
292
|
user_service.check_project_access(entity["project_id"])
|
|
@@ -12,8 +12,11 @@ class EventsResource(Resource, ArgsMixin):
|
|
|
12
12
|
@jwt_required()
|
|
13
13
|
def get(self):
|
|
14
14
|
"""
|
|
15
|
-
|
|
15
|
+
Get events
|
|
16
16
|
---
|
|
17
|
+
description: Retrieve last events with filtering support. Filters can be
|
|
18
|
+
specified in the query string to narrow down results by date range,
|
|
19
|
+
project, or other criteria.
|
|
17
20
|
tags:
|
|
18
21
|
- Events
|
|
19
22
|
parameters:
|
|
@@ -22,28 +25,74 @@ class EventsResource(Resource, ArgsMixin):
|
|
|
22
25
|
type: string
|
|
23
26
|
format: date
|
|
24
27
|
example: "2022-07-12"
|
|
28
|
+
description: Filter events after this date
|
|
25
29
|
- in: query
|
|
26
30
|
name: before
|
|
27
31
|
type: string
|
|
28
32
|
format: date
|
|
29
33
|
example: "2022-07-12"
|
|
34
|
+
description: Filter events before this date
|
|
30
35
|
- in: query
|
|
31
36
|
name: only_files
|
|
32
37
|
type: boolean
|
|
33
|
-
default:
|
|
38
|
+
default: false
|
|
39
|
+
description: Return only file-related events
|
|
40
|
+
example: false
|
|
34
41
|
- in: query
|
|
35
42
|
name: limit
|
|
36
43
|
type: integer
|
|
37
44
|
default: 100
|
|
38
45
|
example: 100
|
|
46
|
+
description: Maximum number of events to return
|
|
39
47
|
- in: query
|
|
40
48
|
name: project_id
|
|
41
49
|
type: string
|
|
42
50
|
format: uuid
|
|
43
51
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
52
|
+
description: Filter events by specific project
|
|
53
|
+
- in: query
|
|
54
|
+
name: name
|
|
55
|
+
type: string
|
|
56
|
+
example: "user_login"
|
|
57
|
+
description: Filter events by event name
|
|
44
58
|
responses:
|
|
45
|
-
|
|
46
|
-
|
|
59
|
+
200:
|
|
60
|
+
description: List of events successfully retrieved
|
|
61
|
+
content:
|
|
62
|
+
application/json:
|
|
63
|
+
schema:
|
|
64
|
+
type: array
|
|
65
|
+
items:
|
|
66
|
+
type: object
|
|
67
|
+
properties:
|
|
68
|
+
id:
|
|
69
|
+
type: string
|
|
70
|
+
format: uuid
|
|
71
|
+
description: Event unique identifier
|
|
72
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
73
|
+
name:
|
|
74
|
+
type: string
|
|
75
|
+
description: Event name
|
|
76
|
+
example: "user_login"
|
|
77
|
+
data:
|
|
78
|
+
type: object
|
|
79
|
+
description: Event data content
|
|
80
|
+
example: {"user_id": "b35b7fb5-df86-5776-b181-68564193d36"}
|
|
81
|
+
project_id:
|
|
82
|
+
type: string
|
|
83
|
+
format: uuid
|
|
84
|
+
description: Project identifier
|
|
85
|
+
example: c46c8gc6-eg97-6887-c292-79675204e47
|
|
86
|
+
created_at:
|
|
87
|
+
type: string
|
|
88
|
+
format: date-time
|
|
89
|
+
description: Event timestamp
|
|
90
|
+
example: "2023-01-01T12:00:00Z"
|
|
91
|
+
user_id:
|
|
92
|
+
type: string
|
|
93
|
+
format: uuid
|
|
94
|
+
description: User identifier who triggered the event
|
|
95
|
+
example: d57d9hd7-fh08-7998-d403-80786315f58
|
|
47
96
|
"""
|
|
48
97
|
args = self.get_args(
|
|
49
98
|
[
|
|
@@ -82,23 +131,62 @@ class LoginLogsResource(Resource, ArgsMixin):
|
|
|
82
131
|
@jwt_required()
|
|
83
132
|
def get(self):
|
|
84
133
|
"""
|
|
85
|
-
|
|
134
|
+
Get login logs
|
|
86
135
|
---
|
|
136
|
+
description: Retrieve all login logs with filtering support. Filters can
|
|
137
|
+
be specified in the query string to narrow down results by date range
|
|
138
|
+
and limit.
|
|
87
139
|
tags:
|
|
88
140
|
- Events
|
|
89
141
|
parameters:
|
|
90
142
|
- in: query
|
|
91
143
|
name: before
|
|
92
144
|
type: string
|
|
93
|
-
format: date
|
|
145
|
+
format: date-time
|
|
94
146
|
example: "2022-07-12T00:00:00"
|
|
147
|
+
description: Filter logs before this date and time
|
|
95
148
|
- in: query
|
|
96
149
|
name: limit
|
|
97
150
|
type: integer
|
|
98
151
|
example: 100
|
|
152
|
+
description: Maximum number of login logs to return
|
|
99
153
|
responses:
|
|
100
|
-
|
|
101
|
-
|
|
154
|
+
200:
|
|
155
|
+
description: List of login logs successfully retrieved
|
|
156
|
+
content:
|
|
157
|
+
application/json:
|
|
158
|
+
schema:
|
|
159
|
+
type: array
|
|
160
|
+
items:
|
|
161
|
+
type: object
|
|
162
|
+
properties:
|
|
163
|
+
id:
|
|
164
|
+
type: string
|
|
165
|
+
format: uuid
|
|
166
|
+
description: Login log unique identifier
|
|
167
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
168
|
+
user_id:
|
|
169
|
+
type: string
|
|
170
|
+
format: uuid
|
|
171
|
+
description: User identifier
|
|
172
|
+
example: b35b7fb5-df86-5776-b181-68564193d36
|
|
173
|
+
ip_address:
|
|
174
|
+
type: string
|
|
175
|
+
description: IP address of the login
|
|
176
|
+
example: "192.168.1.100"
|
|
177
|
+
user_agent:
|
|
178
|
+
type: string
|
|
179
|
+
description: User agent string
|
|
180
|
+
example: "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
|
|
181
|
+
success:
|
|
182
|
+
type: boolean
|
|
183
|
+
description: Whether the login was successful
|
|
184
|
+
example: true
|
|
185
|
+
created_at:
|
|
186
|
+
type: string
|
|
187
|
+
format: date-time
|
|
188
|
+
description: Login timestamp
|
|
189
|
+
example: "2023-01-01T12:00:00Z"
|
|
102
190
|
"""
|
|
103
191
|
args = self.get_args(["before", ("limit", 100)])
|
|
104
192
|
|
|
@@ -17,20 +17,30 @@ class AssetsCsvExport(Resource):
|
|
|
17
17
|
@jwt_required()
|
|
18
18
|
def get(self, project_id):
|
|
19
19
|
"""
|
|
20
|
-
Export assets
|
|
20
|
+
Export assets csv
|
|
21
21
|
---
|
|
22
22
|
tags:
|
|
23
23
|
- Export
|
|
24
|
+
description: Export project assets as CSV file. Includes asset
|
|
25
|
+
information, task statuses, assignments, and metadata.
|
|
26
|
+
produces:
|
|
27
|
+
- text/csv
|
|
24
28
|
parameters:
|
|
25
29
|
- in: path
|
|
26
30
|
name: project_id
|
|
27
|
-
required:
|
|
28
|
-
|
|
29
|
-
|
|
31
|
+
required: true
|
|
32
|
+
schema:
|
|
33
|
+
type: string
|
|
34
|
+
format: uuid
|
|
30
35
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
31
36
|
responses:
|
|
32
37
|
200:
|
|
33
|
-
|
|
38
|
+
description: Assets exported as CSV successfully
|
|
39
|
+
content:
|
|
40
|
+
text/csv:
|
|
41
|
+
schema:
|
|
42
|
+
type: string
|
|
43
|
+
example: "Project,Type,Name,Description,Time Spent\nProject A,Character,Asset1,Description,10.50"
|
|
34
44
|
"""
|
|
35
45
|
project = projects_service.get_project(project_id)
|
|
36
46
|
self.check_permissions(project["id"])
|
|
@@ -20,13 +20,22 @@ class BaseCsvExport(Resource):
|
|
|
20
20
|
@jwt_required()
|
|
21
21
|
def get(self):
|
|
22
22
|
"""
|
|
23
|
-
Export
|
|
23
|
+
Export csv
|
|
24
24
|
---
|
|
25
25
|
tags:
|
|
26
|
-
|
|
26
|
+
- Export
|
|
27
|
+
description: Export data as CSV file. Returns a CSV file with
|
|
28
|
+
formatted data based on the resource type.
|
|
29
|
+
produces:
|
|
30
|
+
- text/csv
|
|
27
31
|
responses:
|
|
28
32
|
200:
|
|
29
|
-
|
|
33
|
+
description: CSV file exported successfully
|
|
34
|
+
content:
|
|
35
|
+
text/csv:
|
|
36
|
+
schema:
|
|
37
|
+
type: string
|
|
38
|
+
example: "Header1,Header2\nValue1,Value2"
|
|
30
39
|
"""
|
|
31
40
|
self.prepare_import()
|
|
32
41
|
try:
|
|
@@ -16,20 +16,47 @@ class CastingCsvExport(Resource, ArgsMixin):
|
|
|
16
16
|
@jwt_required()
|
|
17
17
|
def get(self, project_id):
|
|
18
18
|
"""
|
|
19
|
-
Export casting
|
|
19
|
+
Export casting csv
|
|
20
20
|
---
|
|
21
21
|
tags:
|
|
22
22
|
- Export
|
|
23
|
+
description: Export project casting links as CSV file. Includes
|
|
24
|
+
links between assets and shots, sequences, or episodes with
|
|
25
|
+
occurrence counts and labels.
|
|
26
|
+
produces:
|
|
27
|
+
- text/csv
|
|
23
28
|
parameters:
|
|
24
29
|
- in: path
|
|
25
30
|
name: project_id
|
|
26
|
-
required:
|
|
27
|
-
|
|
28
|
-
|
|
31
|
+
required: true
|
|
32
|
+
schema:
|
|
33
|
+
type: string
|
|
34
|
+
format: uuid
|
|
29
35
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
36
|
+
- in: query
|
|
37
|
+
name: episode_id
|
|
38
|
+
required: false
|
|
39
|
+
schema:
|
|
40
|
+
type: string
|
|
41
|
+
format: uuid
|
|
42
|
+
example: b24a6ea4-ce75-4665-a070-57453082c25
|
|
43
|
+
description: Episode ID to filter casting links
|
|
44
|
+
- in: query
|
|
45
|
+
name: is_shot_casting
|
|
46
|
+
required: false
|
|
47
|
+
schema:
|
|
48
|
+
type: boolean
|
|
49
|
+
default: false
|
|
50
|
+
example: false
|
|
51
|
+
description: Whether to export shot casting only
|
|
30
52
|
responses:
|
|
31
53
|
200:
|
|
32
|
-
|
|
54
|
+
description: Casting exported as CSV successfully
|
|
55
|
+
content:
|
|
56
|
+
text/csv:
|
|
57
|
+
schema:
|
|
58
|
+
type: string
|
|
59
|
+
example: "Parent,Name,Asset Type,Asset,Occurences,Label\nSequence1,SH010,Character,Asset1,1,fixed"
|
|
33
60
|
"""
|
|
34
61
|
project = projects_service.get_project(project_id) # Check existence
|
|
35
62
|
self.check_permissions(project_id)
|
|
@@ -16,20 +16,30 @@ class EditsCsvExport(Resource):
|
|
|
16
16
|
@jwt_required()
|
|
17
17
|
def get(self, project_id):
|
|
18
18
|
"""
|
|
19
|
-
Export edits
|
|
19
|
+
Export edits csv
|
|
20
20
|
---
|
|
21
21
|
tags:
|
|
22
22
|
- Export
|
|
23
|
+
description: Export project edits as CSV file. Includes edit
|
|
24
|
+
information, task statuses, assignments, and metadata.
|
|
25
|
+
produces:
|
|
26
|
+
- text/csv
|
|
23
27
|
parameters:
|
|
24
28
|
- in: path
|
|
25
29
|
name: project_id
|
|
26
|
-
required:
|
|
27
|
-
|
|
28
|
-
|
|
30
|
+
required: true
|
|
31
|
+
schema:
|
|
32
|
+
type: string
|
|
33
|
+
format: uuid
|
|
29
34
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
30
35
|
responses:
|
|
31
36
|
200:
|
|
32
|
-
|
|
37
|
+
description: Edits exported as CSV successfully
|
|
38
|
+
content:
|
|
39
|
+
text/csv:
|
|
40
|
+
schema:
|
|
41
|
+
type: string
|
|
42
|
+
example: "Project,Episode,Name,Description,Time Spent\nProject A,EP01,Edit_001,Description,8.75"
|
|
33
43
|
"""
|
|
34
44
|
self.task_type_map = tasks_service.get_task_type_map()
|
|
35
45
|
self.task_status_map = tasks_service.get_task_status_map()
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from zou.app.blueprints.export.csv.base import BaseCsvExport
|
|
2
|
+
from flask_jwt_extended import jwt_required
|
|
2
3
|
|
|
3
4
|
from zou.app.models.person import Person
|
|
4
5
|
|
|
@@ -8,6 +9,29 @@ class PersonsCsvExport(BaseCsvExport):
|
|
|
8
9
|
BaseCsvExport.__init__(self)
|
|
9
10
|
self.file_name = "people_export"
|
|
10
11
|
|
|
12
|
+
@jwt_required()
|
|
13
|
+
def get(self):
|
|
14
|
+
"""
|
|
15
|
+
Export persons csv
|
|
16
|
+
---
|
|
17
|
+
tags:
|
|
18
|
+
- Export
|
|
19
|
+
description: Export persons as CSV file. Includes person information
|
|
20
|
+
with last name, first name, email, phone, role, contract type,
|
|
21
|
+
and active status. Excludes bot accounts.
|
|
22
|
+
produces:
|
|
23
|
+
- text/csv
|
|
24
|
+
responses:
|
|
25
|
+
200:
|
|
26
|
+
description: Persons exported as CSV successfully
|
|
27
|
+
content:
|
|
28
|
+
text/csv:
|
|
29
|
+
schema:
|
|
30
|
+
type: string
|
|
31
|
+
example: "Last Name,First Name,Email,Phone,Role,Contract Type,Active\nDoe,John,john.doe@example.com,+1234567890,user,freelance,yes"
|
|
32
|
+
"""
|
|
33
|
+
return super().get()
|
|
34
|
+
|
|
11
35
|
def build_headers(self):
|
|
12
36
|
return [
|
|
13
37
|
"Last Name",
|
|
@@ -22,20 +22,31 @@ class PlaylistCsvExport(Resource):
|
|
|
22
22
|
@jwt_required()
|
|
23
23
|
def get(self, playlist_id):
|
|
24
24
|
"""
|
|
25
|
-
Export
|
|
25
|
+
Export playlist csv
|
|
26
26
|
---
|
|
27
27
|
tags:
|
|
28
28
|
- Export
|
|
29
|
+
description: Export playlist as CSV file. Includes playlist shots
|
|
30
|
+
with preview information, task statuses, comments, and revision
|
|
31
|
+
details.
|
|
32
|
+
produces:
|
|
33
|
+
- text/csv
|
|
29
34
|
parameters:
|
|
30
35
|
- in: path
|
|
31
36
|
name: playlist_id
|
|
32
|
-
required:
|
|
33
|
-
|
|
34
|
-
|
|
37
|
+
required: true
|
|
38
|
+
schema:
|
|
39
|
+
type: string
|
|
40
|
+
format: uuid
|
|
35
41
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
36
42
|
responses:
|
|
37
43
|
200:
|
|
38
|
-
|
|
44
|
+
description: Playlist exported as CSV successfully
|
|
45
|
+
content:
|
|
46
|
+
text/csv:
|
|
47
|
+
schema:
|
|
48
|
+
type: string
|
|
49
|
+
example: "Entity name,Nb Frames,Task Type,Retake count,Revision,Task Status,Last comment author,Last comment date,Last comment\nSH010,120,Animation,2,10,WIP,John Doe,2024-01-15,Good work"
|
|
39
50
|
"""
|
|
40
51
|
user_service.block_access_to_vendor()
|
|
41
52
|
playlist = playlists_service.get_playlist(playlist_id)
|