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
@@ -1,3 +1,5 @@
1
+ from flask_jwt_extended import jwt_required
2
+
1
3
  from zou.app.models.milestone import Milestone
2
4
  from zou.app.services import user_service
3
5
 
@@ -11,6 +13,143 @@ class MilestonesResource(BaseModelsResource):
11
13
  def check_create_permissions(self, milestone):
12
14
  user_service.check_manager_project_access(milestone["project_id"])
13
15
 
16
+ @jwt_required()
17
+ def get(self):
18
+ """
19
+ Get milestones
20
+ ---
21
+ tags:
22
+ - Crud
23
+ description: Retrieve all milestones. Supports filtering via query
24
+ parameters and pagination.
25
+ parameters:
26
+ - in: query
27
+ name: page
28
+ required: false
29
+ schema:
30
+ type: integer
31
+ example: 1
32
+ description: Page number for pagination
33
+ - in: query
34
+ name: limit
35
+ required: false
36
+ schema:
37
+ type: integer
38
+ example: 50
39
+ description: Number of results per page
40
+ - in: query
41
+ name: relations
42
+ required: false
43
+ schema:
44
+ type: boolean
45
+ default: false
46
+ example: false
47
+ description: Whether to include relations
48
+ responses:
49
+ 200:
50
+ description: Milestones retrieved successfully
51
+ content:
52
+ application/json:
53
+ schema:
54
+ oneOf:
55
+ - type: array
56
+ items:
57
+ type: object
58
+ - type: object
59
+ properties:
60
+ data:
61
+ type: array
62
+ items:
63
+ type: object
64
+ example: []
65
+ total:
66
+ type: integer
67
+ example: 100
68
+ nb_pages:
69
+ type: integer
70
+ example: 2
71
+ limit:
72
+ type: integer
73
+ example: 50
74
+ offset:
75
+ type: integer
76
+ example: 0
77
+ page:
78
+ type: integer
79
+ example: 1
80
+ 400:
81
+ description: Invalid filter format or query error
82
+ """
83
+ return super().get()
84
+
85
+ @jwt_required()
86
+ def post(self):
87
+ """
88
+ Create milestone
89
+ ---
90
+ tags:
91
+ - Crud
92
+ description: Create a new milestone with data provided in the
93
+ request body. JSON format is expected. Requires manager access
94
+ to the project.
95
+ requestBody:
96
+ required: true
97
+ content:
98
+ application/json:
99
+ schema:
100
+ type: object
101
+ required:
102
+ - name
103
+ - project_id
104
+ - date
105
+ properties:
106
+ name:
107
+ type: string
108
+ example: Milestone Name
109
+ project_id:
110
+ type: string
111
+ format: uuid
112
+ example: a24a6ea4-ce75-4665-a070-57453082c25
113
+ date:
114
+ type: string
115
+ format: date
116
+ example: "2024-03-31"
117
+ responses:
118
+ 201:
119
+ description: Milestone created successfully
120
+ content:
121
+ application/json:
122
+ schema:
123
+ type: object
124
+ properties:
125
+ id:
126
+ type: string
127
+ format: uuid
128
+ example: a24a6ea4-ce75-4665-a070-57453082c25
129
+ name:
130
+ type: string
131
+ example: Milestone Name
132
+ project_id:
133
+ type: string
134
+ format: uuid
135
+ example: b24a6ea4-ce75-4665-a070-57453082c25
136
+ date:
137
+ type: string
138
+ format: date
139
+ example: "2024-03-31"
140
+ created_at:
141
+ type: string
142
+ format: date-time
143
+ example: "2024-01-15T10:30:00Z"
144
+ updated_at:
145
+ type: string
146
+ format: date-time
147
+ example: "2024-01-15T10:30:00Z"
148
+ 400:
149
+ description: Invalid data format or validation error
150
+ """
151
+ return super().post()
152
+
14
153
 
15
154
  class MilestoneResource(BaseModelResource):
16
155
  def __init__(self):
@@ -20,5 +159,167 @@ class MilestoneResource(BaseModelResource):
20
159
  user_service.check_project_access(milestone["project_id"])
21
160
  user_service.block_access_to_vendor()
22
161
 
162
+ @jwt_required()
163
+ def get(self, instance_id):
164
+ """
165
+ Get milestone
166
+ ---
167
+ tags:
168
+ - Crud
169
+ description: Retrieve a milestone by its ID and return it as a
170
+ JSON object. Supports including relations. Vendor access is
171
+ blocked. Requires project access.
172
+ parameters:
173
+ - in: path
174
+ name: instance_id
175
+ required: true
176
+ schema:
177
+ type: string
178
+ format: uuid
179
+ example: a24a6ea4-ce75-4665-a070-57453082c25
180
+ - in: query
181
+ name: relations
182
+ required: false
183
+ schema:
184
+ type: boolean
185
+ default: true
186
+ example: true
187
+ description: Whether to include relations
188
+ responses:
189
+ 200:
190
+ description: Milestone retrieved successfully
191
+ content:
192
+ application/json:
193
+ schema:
194
+ type: object
195
+ properties:
196
+ id:
197
+ type: string
198
+ format: uuid
199
+ example: a24a6ea4-ce75-4665-a070-57453082c25
200
+ name:
201
+ type: string
202
+ example: Milestone Name
203
+ project_id:
204
+ type: string
205
+ format: uuid
206
+ example: b24a6ea4-ce75-4665-a070-57453082c25
207
+ date:
208
+ type: string
209
+ format: date
210
+ example: "2024-03-31"
211
+ created_at:
212
+ type: string
213
+ format: date-time
214
+ example: "2024-01-15T10:30:00Z"
215
+ updated_at:
216
+ type: string
217
+ format: date-time
218
+ example: "2024-01-15T10:30:00Z"
219
+ 400:
220
+ description: Invalid ID format or query error
221
+ """
222
+ return super().get(instance_id)
223
+
224
+ @jwt_required()
225
+ def put(self, instance_id):
226
+ """
227
+ Update milestone
228
+ ---
229
+ tags:
230
+ - Crud
231
+ description: Update a milestone with data provided in the request
232
+ body. JSON format is expected. Requires manager access to the
233
+ project.
234
+ parameters:
235
+ - in: path
236
+ name: instance_id
237
+ required: true
238
+ schema:
239
+ type: string
240
+ format: uuid
241
+ example: a24a6ea4-ce75-4665-a070-57453082c25
242
+ requestBody:
243
+ required: true
244
+ content:
245
+ application/json:
246
+ schema:
247
+ type: object
248
+ properties:
249
+ name:
250
+ type: string
251
+ example: Updated Milestone Name
252
+ date:
253
+ type: string
254
+ format: date
255
+ example: "2024-04-30"
256
+ responses:
257
+ 200:
258
+ description: Milestone updated successfully
259
+ content:
260
+ application/json:
261
+ schema:
262
+ type: object
263
+ properties:
264
+ id:
265
+ type: string
266
+ format: uuid
267
+ example: a24a6ea4-ce75-4665-a070-57453082c25
268
+ name:
269
+ type: string
270
+ example: Updated Milestone Name
271
+ project_id:
272
+ type: string
273
+ format: uuid
274
+ example: b24a6ea4-ce75-4665-a070-57453082c25
275
+ date:
276
+ type: string
277
+ format: date
278
+ example: "2024-04-30"
279
+ created_at:
280
+ type: string
281
+ format: date-time
282
+ example: "2024-01-15T10:30:00Z"
283
+ updated_at:
284
+ type: string
285
+ format: date-time
286
+ example: "2024-01-15T11:00:00Z"
287
+ 400:
288
+ description: Invalid data format or validation error
289
+ """
290
+ return super().put(instance_id)
291
+
292
+ @jwt_required()
293
+ def delete(self, instance_id):
294
+ """
295
+ Delete milestone
296
+ ---
297
+ tags:
298
+ - Crud
299
+ description: Delete a milestone by its ID. Returns empty response
300
+ on success.
301
+ parameters:
302
+ - in: path
303
+ name: instance_id
304
+ required: true
305
+ schema:
306
+ type: string
307
+ format: uuid
308
+ example: a24a6ea4-ce75-4665-a070-57453082c25
309
+ responses:
310
+ 204:
311
+ description: Milestone deleted successfully
312
+ 400:
313
+ description: Integrity error or cannot delete
314
+ """
315
+ return super().delete(instance_id)
316
+
23
317
  def check_update_permissions(self, milestone, data):
24
- user_service.check_manager_project_access(milestone["project_id"])
318
+ return user_service.check_manager_project_access(
319
+ milestone["project_id"]
320
+ )
321
+
322
+ def check_delete_permissions(self, milestone):
323
+ return user_service.check_manager_project_access(
324
+ milestone["project_id"]
325
+ )
@@ -1,3 +1,5 @@
1
+ from flask_jwt_extended import jwt_required
2
+
1
3
  from zou.app.models.news import News
2
4
 
3
5
  from zou.app.blueprints.crud.base import BaseModelResource, BaseModelsResource
@@ -7,7 +9,290 @@ class NewssResource(BaseModelsResource):
7
9
  def __init__(self):
8
10
  BaseModelsResource.__init__(self, News)
9
11
 
12
+ @jwt_required()
13
+ def get(self):
14
+ """
15
+ Get news
16
+ ---
17
+ tags:
18
+ - Crud
19
+ description: Retrieve all news entries. Supports filtering via
20
+ query parameters and pagination.
21
+ parameters:
22
+ - in: query
23
+ name: page
24
+ required: false
25
+ schema:
26
+ type: integer
27
+ example: 1
28
+ description: Page number for pagination
29
+ - in: query
30
+ name: limit
31
+ required: false
32
+ schema:
33
+ type: integer
34
+ example: 50
35
+ description: Number of results per page
36
+ - in: query
37
+ name: relations
38
+ required: false
39
+ schema:
40
+ type: boolean
41
+ default: false
42
+ example: false
43
+ description: Whether to include relations
44
+ responses:
45
+ 200:
46
+ description: News entries retrieved successfully
47
+ content:
48
+ application/json:
49
+ schema:
50
+ oneOf:
51
+ - type: array
52
+ items:
53
+ type: object
54
+ - type: object
55
+ properties:
56
+ data:
57
+ type: array
58
+ items:
59
+ type: object
60
+ example: []
61
+ total:
62
+ type: integer
63
+ example: 100
64
+ nb_pages:
65
+ type: integer
66
+ example: 2
67
+ limit:
68
+ type: integer
69
+ example: 50
70
+ offset:
71
+ type: integer
72
+ example: 0
73
+ page:
74
+ type: integer
75
+ example: 1
76
+ 400:
77
+ description: Invalid filter format or query error
78
+ """
79
+ return super().get()
80
+
81
+ @jwt_required()
82
+ def post(self):
83
+ """
84
+ Create news
85
+ ---
86
+ tags:
87
+ - Crud
88
+ description: Create a new news entry with data provided in the
89
+ request body. JSON format is expected.
90
+ requestBody:
91
+ required: true
92
+ content:
93
+ application/json:
94
+ schema:
95
+ type: object
96
+ required:
97
+ - title
98
+ - project_id
99
+ properties:
100
+ title:
101
+ type: string
102
+ example: Project Update
103
+ project_id:
104
+ type: string
105
+ format: uuid
106
+ example: a24a6ea4-ce75-4665-a070-57453082c25
107
+ content:
108
+ type: string
109
+ example: News content text
110
+ responses:
111
+ 201:
112
+ description: News entry created successfully
113
+ content:
114
+ application/json:
115
+ schema:
116
+ type: object
117
+ properties:
118
+ id:
119
+ type: string
120
+ format: uuid
121
+ example: a24a6ea4-ce75-4665-a070-57453082c25
122
+ title:
123
+ type: string
124
+ example: Project Update
125
+ project_id:
126
+ type: string
127
+ format: uuid
128
+ example: b24a6ea4-ce75-4665-a070-57453082c25
129
+ content:
130
+ type: string
131
+ example: News content text
132
+ created_at:
133
+ type: string
134
+ format: date-time
135
+ example: "2024-01-15T10:30:00Z"
136
+ updated_at:
137
+ type: string
138
+ format: date-time
139
+ example: "2024-01-15T10:30:00Z"
140
+ 400:
141
+ description: Invalid data format or validation error
142
+ """
143
+ return super().post()
144
+
10
145
 
11
146
  class NewsResource(BaseModelResource):
12
147
  def __init__(self):
13
148
  BaseModelResource.__init__(self, News)
149
+
150
+ @jwt_required()
151
+ def get(self, instance_id):
152
+ """
153
+ Get news
154
+ ---
155
+ tags:
156
+ - Crud
157
+ description: Retrieve a news entry by its ID and return it as a
158
+ JSON object. Supports including relations.
159
+ parameters:
160
+ - in: path
161
+ name: instance_id
162
+ required: true
163
+ schema:
164
+ type: string
165
+ format: uuid
166
+ example: a24a6ea4-ce75-4665-a070-57453082c25
167
+ - in: query
168
+ name: relations
169
+ required: false
170
+ schema:
171
+ type: boolean
172
+ default: true
173
+ example: true
174
+ description: Whether to include relations
175
+ responses:
176
+ 200:
177
+ description: News entry retrieved successfully
178
+ content:
179
+ application/json:
180
+ schema:
181
+ type: object
182
+ properties:
183
+ id:
184
+ type: string
185
+ format: uuid
186
+ example: a24a6ea4-ce75-4665-a070-57453082c25
187
+ title:
188
+ type: string
189
+ example: Project Update
190
+ project_id:
191
+ type: string
192
+ format: uuid
193
+ example: b24a6ea4-ce75-4665-a070-57453082c25
194
+ content:
195
+ type: string
196
+ example: News content text
197
+ created_at:
198
+ type: string
199
+ format: date-time
200
+ example: "2024-01-15T10:30:00Z"
201
+ updated_at:
202
+ type: string
203
+ format: date-time
204
+ example: "2024-01-15T10:30:00Z"
205
+ 400:
206
+ description: Invalid ID format or query error
207
+ """
208
+ return super().get(instance_id)
209
+
210
+ @jwt_required()
211
+ def put(self, instance_id):
212
+ """
213
+ Update news
214
+ ---
215
+ tags:
216
+ - Crud
217
+ description: Update a news entry with data provided in the
218
+ request body. JSON format is expected.
219
+ parameters:
220
+ - in: path
221
+ name: instance_id
222
+ required: true
223
+ schema:
224
+ type: string
225
+ format: uuid
226
+ example: a24a6ea4-ce75-4665-a070-57453082c25
227
+ requestBody:
228
+ required: true
229
+ content:
230
+ application/json:
231
+ schema:
232
+ type: object
233
+ properties:
234
+ title:
235
+ type: string
236
+ example: Updated Project Update
237
+ content:
238
+ type: string
239
+ example: Updated news content text
240
+ responses:
241
+ 200:
242
+ description: News entry updated successfully
243
+ content:
244
+ application/json:
245
+ schema:
246
+ type: object
247
+ properties:
248
+ id:
249
+ type: string
250
+ format: uuid
251
+ example: a24a6ea4-ce75-4665-a070-57453082c25
252
+ title:
253
+ type: string
254
+ example: Updated Project Update
255
+ project_id:
256
+ type: string
257
+ format: uuid
258
+ example: b24a6ea4-ce75-4665-a070-57453082c25
259
+ content:
260
+ type: string
261
+ example: Updated news content text
262
+ created_at:
263
+ type: string
264
+ format: date-time
265
+ example: "2024-01-15T10:30:00Z"
266
+ updated_at:
267
+ type: string
268
+ format: date-time
269
+ example: "2024-01-15T11:00:00Z"
270
+ 400:
271
+ description: Invalid data format or validation error
272
+ """
273
+ return super().put(instance_id)
274
+
275
+ @jwt_required()
276
+ def delete(self, instance_id):
277
+ """
278
+ Delete news
279
+ ---
280
+ tags:
281
+ - Crud
282
+ description: Delete a news entry by its ID. Returns empty
283
+ response on success.
284
+ parameters:
285
+ - in: path
286
+ name: instance_id
287
+ required: true
288
+ schema:
289
+ type: string
290
+ format: uuid
291
+ example: a24a6ea4-ce75-4665-a070-57453082c25
292
+ responses:
293
+ 204:
294
+ description: News entry deleted successfully
295
+ 400:
296
+ description: Integrity error or cannot delete
297
+ """
298
+ return super().delete(instance_id)