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.
Files changed (114) hide show
  1. zou/__init__.py +1 -1
  2. zou/app/blueprints/assets/resources.py +1060 -153
  3. zou/app/blueprints/auth/resources.py +368 -238
  4. zou/app/blueprints/breakdown/resources.py +584 -94
  5. zou/app/blueprints/chats/resources.py +176 -37
  6. zou/app/blueprints/comments/resources.py +409 -150
  7. zou/app/blueprints/concepts/resources.py +443 -63
  8. zou/app/blueprints/crud/asset_instance.py +272 -0
  9. zou/app/blueprints/crud/attachment_file.py +263 -0
  10. zou/app/blueprints/crud/base.py +176 -69
  11. zou/app/blueprints/crud/budget.py +278 -0
  12. zou/app/blueprints/crud/budget_entry.py +269 -0
  13. zou/app/blueprints/crud/chat.py +282 -0
  14. zou/app/blueprints/crud/chat_message.py +286 -0
  15. zou/app/blueprints/crud/comments.py +312 -1
  16. zou/app/blueprints/crud/custom_action.py +268 -0
  17. zou/app/blueprints/crud/day_off.py +298 -0
  18. zou/app/blueprints/crud/department.py +268 -0
  19. zou/app/blueprints/crud/entity.py +297 -3
  20. zou/app/blueprints/crud/entity_link.py +303 -0
  21. zou/app/blueprints/crud/entity_type.py +269 -0
  22. zou/app/blueprints/crud/event.py +197 -0
  23. zou/app/blueprints/crud/file_status.py +268 -0
  24. zou/app/blueprints/crud/hardware_item.py +268 -0
  25. zou/app/blueprints/crud/metadata_descriptor.py +312 -0
  26. zou/app/blueprints/crud/milestone.py +302 -1
  27. zou/app/blueprints/crud/news.py +285 -0
  28. zou/app/blueprints/crud/notification.py +287 -0
  29. zou/app/blueprints/crud/organisation.py +269 -0
  30. zou/app/blueprints/crud/output_file.py +34 -10
  31. zou/app/blueprints/crud/output_type.py +30 -10
  32. zou/app/blueprints/crud/person.py +407 -2
  33. zou/app/blueprints/crud/playlist.py +322 -4
  34. zou/app/blueprints/crud/plugin.py +269 -0
  35. zou/app/blueprints/crud/preview_background_file.py +272 -0
  36. zou/app/blueprints/crud/preview_file.py +280 -9
  37. zou/app/blueprints/crud/production_schedule_version.py +569 -0
  38. zou/app/blueprints/crud/project.py +440 -0
  39. zou/app/blueprints/crud/project_status.py +268 -0
  40. zou/app/blueprints/crud/salary_scale.py +185 -5
  41. zou/app/blueprints/crud/schedule_item.py +305 -0
  42. zou/app/blueprints/crud/search_filter.py +302 -0
  43. zou/app/blueprints/crud/search_filter_group.py +270 -0
  44. zou/app/blueprints/crud/software.py +30 -10
  45. zou/app/blueprints/crud/status_automation.py +296 -2
  46. zou/app/blueprints/crud/studio.py +268 -0
  47. zou/app/blueprints/crud/subscription.py +279 -0
  48. zou/app/blueprints/crud/task.py +325 -5
  49. zou/app/blueprints/crud/task_status.py +301 -0
  50. zou/app/blueprints/crud/task_type.py +283 -0
  51. zou/app/blueprints/crud/time_spent.py +327 -0
  52. zou/app/blueprints/crud/working_file.py +273 -10
  53. zou/app/blueprints/departments/resources.py +302 -68
  54. zou/app/blueprints/edits/resources.py +651 -81
  55. zou/app/blueprints/entities/resources.py +104 -39
  56. zou/app/blueprints/events/resources.py +96 -8
  57. zou/app/blueprints/export/csv/assets.py +15 -5
  58. zou/app/blueprints/export/csv/base.py +12 -3
  59. zou/app/blueprints/export/csv/casting.py +32 -5
  60. zou/app/blueprints/export/csv/edits.py +15 -5
  61. zou/app/blueprints/export/csv/persons.py +24 -0
  62. zou/app/blueprints/export/csv/playlists.py +16 -5
  63. zou/app/blueprints/export/csv/projects.py +23 -0
  64. zou/app/blueprints/export/csv/shots.py +15 -5
  65. zou/app/blueprints/export/csv/task_types.py +23 -0
  66. zou/app/blueprints/export/csv/tasks.py +24 -0
  67. zou/app/blueprints/export/csv/time_spents.py +24 -0
  68. zou/app/blueprints/files/resources.py +928 -377
  69. zou/app/blueprints/index/resources.py +49 -42
  70. zou/app/blueprints/news/resources.py +47 -27
  71. zou/app/blueprints/persons/resources.py +644 -271
  72. zou/app/blueprints/playlists/resources.py +154 -72
  73. zou/app/blueprints/previews/resources.py +473 -228
  74. zou/app/blueprints/projects/__init__.py +5 -0
  75. zou/app/blueprints/projects/resources.py +987 -420
  76. zou/app/blueprints/search/resources.py +44 -32
  77. zou/app/blueprints/shots/resources.py +1338 -88
  78. zou/app/blueprints/source/csv/assets.py +44 -6
  79. zou/app/blueprints/source/csv/casting.py +43 -6
  80. zou/app/blueprints/source/csv/edits.py +47 -9
  81. zou/app/blueprints/source/csv/persons.py +43 -4
  82. zou/app/blueprints/source/csv/shots.py +47 -6
  83. zou/app/blueprints/source/csv/task_type_estimations.py +95 -35
  84. zou/app/blueprints/source/kitsu.py +433 -11
  85. zou/app/blueprints/source/otio.py +215 -20
  86. zou/app/blueprints/source/shotgun/assets.py +146 -0
  87. zou/app/blueprints/source/shotgun/base.py +85 -14
  88. zou/app/blueprints/source/shotgun/episode.py +124 -0
  89. zou/app/blueprints/source/shotgun/import_errors.py +105 -14
  90. zou/app/blueprints/source/shotgun/notes.py +132 -0
  91. zou/app/blueprints/source/shotgun/person.py +163 -0
  92. zou/app/blueprints/source/shotgun/project.py +120 -0
  93. zou/app/blueprints/source/shotgun/scene.py +120 -0
  94. zou/app/blueprints/source/shotgun/sequence.py +134 -0
  95. zou/app/blueprints/source/shotgun/shot.py +166 -0
  96. zou/app/blueprints/source/shotgun/status.py +129 -0
  97. zou/app/blueprints/source/shotgun/steps.py +138 -0
  98. zou/app/blueprints/source/shotgun/tasks.py +199 -0
  99. zou/app/blueprints/source/shotgun/team.py +132 -0
  100. zou/app/blueprints/source/shotgun/versions.py +155 -0
  101. zou/app/blueprints/tasks/resources.py +1197 -308
  102. zou/app/blueprints/user/resources.py +1808 -215
  103. zou/app/models/metadata_descriptor.py +1 -0
  104. zou/app/services/persons_service.py +1 -1
  105. zou/app/services/projects_service.py +45 -1
  106. zou/app/services/time_spents_service.py +1 -1
  107. zou/app/swagger.py +100 -27
  108. zou/migrations/versions/a1b2c3d4e5f6_add_position_to_metadata_descriptor.py +32 -0
  109. {zou-0.20.82.dist-info → zou-0.20.84.dist-info}/METADATA +18 -18
  110. {zou-0.20.82.dist-info → zou-0.20.84.dist-info}/RECORD +114 -113
  111. {zou-0.20.82.dist-info → zou-0.20.84.dist-info}/WHEEL +0 -0
  112. {zou-0.20.82.dist-info → zou-0.20.84.dist-info}/entry_points.txt +0 -0
  113. {zou-0.20.82.dist-info → zou-0.20.84.dist-info}/licenses/LICENSE +0 -0
  114. {zou-0.20.82.dist-info → zou-0.20.84.dist-info}/top_level.txt +0 -0
@@ -14,13 +14,57 @@ class AllDepartmentSoftwareResource(Resource, ArgsMixin):
14
14
  @permissions.require_admin
15
15
  def get(self):
16
16
  """
17
- Get all software items for all departments.
17
+ Get all department software licenses
18
18
  ---
19
+ description: Retrieve all software licenses organized by department.
20
+ Returns a dictionary where each department contains its associated
21
+ software licenses.
19
22
  tags:
20
- - Departments
23
+ - Departments
21
24
  responses:
22
- 200:
23
- description: A dictionary of departments with their software items
25
+ 200:
26
+ description: Department software licenses successfully retrieved
27
+ content:
28
+ application/json:
29
+ schema:
30
+ type: object
31
+ additionalProperties:
32
+ type: array
33
+ items:
34
+ type: object
35
+ properties:
36
+ id:
37
+ type: string
38
+ format: uuid
39
+ description: Software license unique identifier
40
+ example: a24a6ea4-ce75-4665-a070-57453082c25
41
+ name:
42
+ type: string
43
+ description: Software license name
44
+ example: "Maya"
45
+ short_name:
46
+ type: string
47
+ description: Software license short name
48
+ example: "MAYA"
49
+ file_extension:
50
+ type: string
51
+ description: Default file extension for the software license
52
+ example: ".ma"
53
+ department_id:
54
+ type: string
55
+ format: uuid
56
+ description: Department identifier
57
+ example: b35b7fb5-df86-5776-b181-68564193d36
58
+ created_at:
59
+ type: string
60
+ format: date-time
61
+ description: Creation timestamp
62
+ example: "2023-01-01T12:00:00Z"
63
+ updated_at:
64
+ type: string
65
+ format: date-time
66
+ description: Last update timestamp
67
+ example: "2023-01-01T12:30:00Z"
24
68
  """
25
69
  softwares = departments_service.get_all_software_for_departments()
26
70
  return softwares, 200
@@ -32,28 +76,63 @@ class AddSoftwareToDepartmentResource(Resource, ArgsMixin):
32
76
  @permissions.require_admin
33
77
  def post(self, department_id):
34
78
  """
35
- Add a software item to given department.
79
+ Add software license to department
36
80
  ---
81
+ description: Associate a software license with a specific department.
82
+ This allows the department to use the specified software in budget
83
+ forecasting.
37
84
  tags:
38
- - Departments
85
+ - Departments
39
86
  parameters:
40
87
  - in: path
41
88
  name: department_id
42
- required: True
43
- type: string
44
- format: uuid
45
- example: a24a6ea4-ce75-4665-a070-57453082c25
46
- - in: body
47
- name: software_id
48
- required: True
89
+ required: true
49
90
  type: string
50
91
  format: uuid
51
92
  example: a24a6ea4-ce75-4665-a070-57453082c25
93
+ description: Unique identifier of the department
94
+ requestBody:
95
+ required: true
96
+ content:
97
+ application/json:
98
+ schema:
99
+ type: object
100
+ required:
101
+ - software_id
102
+ properties:
103
+ software_id:
104
+ type: string
105
+ format: uuid
106
+ description: Software identifier to add to department
107
+ example: b35b7fb5-df86-5776-b181-68564193d36
52
108
  responses:
53
- 201:
54
- description: User added to given department
55
- 404:
56
- description: Department ID or Software ID matches no department or software
109
+ 201:
110
+ description: Software license successfully added to department
111
+ content:
112
+ application/json:
113
+ schema:
114
+ type: object
115
+ properties:
116
+ id:
117
+ type: string
118
+ format: uuid
119
+ description: Software license department link unique identifier
120
+ example: c46c8gc6-eg97-6887-c292-79675204e47
121
+ department_id:
122
+ type: string
123
+ format: uuid
124
+ description: Department identifier
125
+ example: a24a6ea4-ce75-4665-a070-57453082c25
126
+ software_id:
127
+ type: string
128
+ format: uuid
129
+ description: Software license identifier
130
+ example: b35b7fb5-df86-5776-b181-68564193d36
131
+ created_at:
132
+ type: string
133
+ format: date-time
134
+ description: Creation timestamp
135
+ example: "2023-01-01T12:00:00Z"
57
136
  """
58
137
  args = self.get_args(
59
138
  [
@@ -74,22 +153,62 @@ class SoftwareDepartmentResource(Resource, ArgsMixin):
74
153
  @permissions.require_admin
75
154
  def get(self, department_id):
76
155
  """
77
- Get all software items for a given department.
156
+ Get department software licenses
78
157
  ---
158
+ description: Retrieve all software items that are associated with a
159
+ specific department.
79
160
  tags:
80
- - Departments
161
+ - Departments
81
162
  parameters:
82
163
  - in: path
83
164
  name: department_id
84
- required: True
165
+ required: true
85
166
  type: string
86
167
  format: uuid
87
168
  example: a24a6ea4-ce75-4665-a070-57453082c25
169
+ description: Unique identifier of the department
88
170
  responses:
89
- 200:
90
- description: Software items for given department
91
- 404:
92
- description: Department ID matches no department
171
+ 200:
172
+ description: Department software licenses successfully retrieved
173
+ content:
174
+ application/json:
175
+ schema:
176
+ type: array
177
+ items:
178
+ type: object
179
+ properties:
180
+ id:
181
+ type: string
182
+ format: uuid
183
+ description: Software license unique identifier
184
+ example: a24a6ea4-ce75-4665-a070-57453082c25
185
+ name:
186
+ type: string
187
+ description: Software license name
188
+ example: "Maya"
189
+ short_name:
190
+ type: string
191
+ description: Software license short name
192
+ example: "MAYA"
193
+ file_extension:
194
+ type: string
195
+ description: Default file extension for the software license
196
+ example: ".ma"
197
+ department_id:
198
+ type: string
199
+ format: uuid
200
+ description: Department identifier
201
+ example: b35b7fb5-df86-5776-b181-68564193d36
202
+ created_at:
203
+ type: string
204
+ format: date-time
205
+ description: Creation timestamp
206
+ example: "2023-01-01T12:00:00Z"
207
+ updated_at:
208
+ type: string
209
+ format: date-time
210
+ description: Last update timestamp
211
+ example: "2023-01-01T12:30:00Z"
93
212
  """
94
213
  self.check_id_parameter(department_id)
95
214
  softwares = departments_service.get_softwares_for_department(
@@ -101,28 +220,30 @@ class SoftwareDepartmentResource(Resource, ArgsMixin):
101
220
  @permissions.require_admin
102
221
  def delete(self, department_id, software_id):
103
222
  """
104
- Remove a software item from given department.
223
+ Remove software license from department
105
224
  ---
225
+ description: Remove a software license from a specific department.
226
+ This disassociates the software license from the department.
106
227
  tags:
107
- - Departments
228
+ - Departments
108
229
  parameters:
109
230
  - in: path
110
- name: software_id
111
- required: True
231
+ name: department_id
232
+ required: true
112
233
  type: string
113
234
  format: uuid
114
235
  example: a24a6ea4-ce75-4665-a070-57453082c25
236
+ description: Unique identifier of the department
115
237
  - in: path
116
- name: department_id
117
- required: True
238
+ name: software_id
239
+ required: true
118
240
  type: string
119
241
  format: uuid
120
- example: a24a6ea4-ce75-4665-a070-57453082c25
242
+ example: b35b7fb5-df86-5776-b181-68564193d36
243
+ description: Unique identifier of the software license to remove
121
244
  responses:
122
- 204:
123
- description: User removed from given department
124
- 404:
125
- description: Department or software ID matches no department or software
245
+ 204:
246
+ description: Software license successfully removed from department
126
247
  """
127
248
  self.check_id_parameter(department_id)
128
249
  self.check_id_parameter(software_id)
@@ -138,13 +259,53 @@ class AllDepartmentHardwareItemsResource(Resource, ArgsMixin):
138
259
  @permissions.require_admin
139
260
  def get(self):
140
261
  """
141
- Get all hardware items for all departments.
262
+ Get all department hardware items
142
263
  ---
264
+ description: Retrieve all hardware items organized by department.
265
+ Returns a dictionary where each department contains its associated
266
+ hardware items.
143
267
  tags:
144
- - Departments
268
+ - Departments
145
269
  responses:
146
- 200:
147
- description: A dictionary of departments with their hardware items
270
+ 200:
271
+ description: Department hardware items successfully retrieved
272
+ content:
273
+ application/json:
274
+ schema:
275
+ type: object
276
+ additionalProperties:
277
+ type: array
278
+ items:
279
+ type: object
280
+ properties:
281
+ id:
282
+ type: string
283
+ format: uuid
284
+ description: Hardware item unique identifier
285
+ example: a24a6ea4-ce75-4665-a070-57453082c25
286
+ name:
287
+ type: string
288
+ description: Hardware item name
289
+ example: "Workstation"
290
+ description:
291
+ type: string
292
+ description: Hardware item description
293
+ example: "High-performance workstation"
294
+ department_id:
295
+ type: string
296
+ format: uuid
297
+ description: Department identifier
298
+ example: b35b7fb5-df86-5776-b181-68564193d36
299
+ created_at:
300
+ type: string
301
+ format: date-time
302
+ description: Creation timestamp
303
+ example: "2023-01-01T12:00:00Z"
304
+ updated_at:
305
+ type: string
306
+ format: date-time
307
+ description: Last update timestamp
308
+ example: "2023-01-01T12:30:00Z"
148
309
  """
149
310
  hardware_items = (
150
311
  departments_service.get_all_hardware_items_for_departments()
@@ -158,28 +319,63 @@ class AddHardwareItemToDepartmentResource(Resource, ArgsMixin):
158
319
  @permissions.require_admin
159
320
  def post(self, department_id):
160
321
  """
161
- Add a hardware item to given department.
322
+ Add hardware item to department
162
323
  ---
324
+ description: Associate a hardware item with a specific department.
325
+ This allows the department to use the specified hardware in budget
326
+ forecasting.
163
327
  tags:
164
- - Departments
328
+ - Departments
165
329
  parameters:
166
330
  - in: path
167
331
  name: department_id
168
- required: True
169
- type: string
170
- format: uuid
171
- example: a24a6ea4-ce75-4665-a070-57453082c25
172
- - in: body
173
- name: hardware_item_id
174
- required: True
332
+ required: true
175
333
  type: string
176
334
  format: uuid
177
335
  example: a24a6ea4-ce75-4665-a070-57453082c25
336
+ description: Unique identifier of the department
337
+ requestBody:
338
+ required: true
339
+ content:
340
+ application/json:
341
+ schema:
342
+ type: object
343
+ required:
344
+ - hardware_item_id
345
+ properties:
346
+ hardware_item_id:
347
+ type: string
348
+ format: uuid
349
+ description: Hardware item identifier to add to department
350
+ example: b35b7fb5-df86-5776-b181-68564193d36
178
351
  responses:
179
- 201:
180
- description: Hardware item added to given department
181
- 404:
182
- description: Department ID matches no department
352
+ 201:
353
+ description: Hardware item successfully added to department
354
+ content:
355
+ application/json:
356
+ schema:
357
+ type: object
358
+ properties:
359
+ id:
360
+ type: string
361
+ format: uuid
362
+ description: Hardware department link unique identifier
363
+ example: c46c8gc6-eg97-6887-c292-79675204e47
364
+ department_id:
365
+ type: string
366
+ format: uuid
367
+ description: Department identifier
368
+ example: a24a6ea4-ce75-4665-a070-57453082c25
369
+ hardware_item_id:
370
+ type: string
371
+ format: uuid
372
+ description: Hardware item identifier
373
+ example: b35b7fb5-df86-5776-b181-68564193d36
374
+ created_at:
375
+ type: string
376
+ format: date-time
377
+ description: Creation timestamp
378
+ example: "2023-01-01T12:00:00Z"
183
379
  400:
184
380
  description: Hardware item ID matches no hardware item
185
381
  """
@@ -204,22 +400,58 @@ class HardwareItemDepartmentResource(Resource, ArgsMixin):
204
400
  @permissions.require_admin
205
401
  def get(self, department_id):
206
402
  """
207
- Get all hardware items for a given department.
403
+ Get department hardware items
208
404
  ---
405
+ description: Retrieve all hardware items that are associated with a
406
+ specific department.
209
407
  tags:
210
- - Departments
408
+ - Departments
211
409
  parameters:
212
410
  - in: path
213
411
  name: department_id
214
- required: True
412
+ required: true
215
413
  type: string
216
414
  format: uuid
217
415
  example: a24a6ea4-ce75-4665-a070-57453082c25
416
+ description: Unique identifier of the department
218
417
  responses:
219
- 200:
220
- description: Hardware items for given department
221
- 404:
222
- description: Department ID matches no department
418
+ 200:
419
+ description: Department hardware items successfully retrieved
420
+ content:
421
+ application/json:
422
+ schema:
423
+ type: array
424
+ items:
425
+ type: object
426
+ properties:
427
+ id:
428
+ type: string
429
+ format: uuid
430
+ description: Hardware item unique identifier
431
+ example: a24a6ea4-ce75-4665-a070-57453082c25
432
+ name:
433
+ type: string
434
+ description: Hardware item name
435
+ example: "Workstation"
436
+ description:
437
+ type: string
438
+ description: Hardware item description
439
+ example: "High-performance workstation"
440
+ department_id:
441
+ type: string
442
+ format: uuid
443
+ description: Department identifier
444
+ example: b35b7fb5-df86-5776-b181-68564193d36
445
+ created_at:
446
+ type: string
447
+ format: date-time
448
+ description: Creation timestamp
449
+ example: "2023-01-01T12:00:00Z"
450
+ updated_at:
451
+ type: string
452
+ format: date-time
453
+ description: Last update timestamp
454
+ example: "2023-01-01T12:30:00Z"
223
455
  """
224
456
  self.check_id_parameter(department_id)
225
457
  hardware_items = departments_service.get_hardware_items_for_department(
@@ -231,28 +463,30 @@ class HardwareItemDepartmentResource(Resource, ArgsMixin):
231
463
  @permissions.require_admin
232
464
  def delete(self, department_id, hardware_item_id):
233
465
  """
234
- Remove a hardware item from given department.
466
+ Remove hardware item from department
235
467
  ---
468
+ description: Remove a hardware item from a specific department.
469
+ This disassociates the hardware from the department.
236
470
  tags:
237
- - Departments
471
+ - Departments
238
472
  parameters:
239
473
  - in: path
240
474
  name: department_id
241
- required: True
475
+ required: true
242
476
  type: string
243
477
  format: uuid
244
478
  example: a24a6ea4-ce75-4665-a070-57453082c25
479
+ description: Unique identifier of the department
245
480
  - in: path
246
481
  name: hardware_item_id
247
- required: True
482
+ required: true
248
483
  type: string
249
484
  format: uuid
250
- example: a24a6ea4-ce75-4665-a070-57453082c25
485
+ example: b35b7fb5-df86-5776-b181-68564193d36
486
+ description: Unique identifier of the hardware item to remove
251
487
  responses:
252
- 204:
253
- description: User removed from given department
254
- 404:
255
- description: Department or software ID matches no department or software
488
+ 204:
489
+ description: Hardware item successfully removed from department
256
490
  """
257
491
  self.check_id_parameter(department_id)
258
492
  self.check_id_parameter(hardware_item_id)