zou 0.20.83__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 (103) hide show
  1. zou/__init__.py +1 -1
  2. zou/app/blueprints/comments/resources.py +32 -35
  3. zou/app/blueprints/concepts/resources.py +23 -8
  4. zou/app/blueprints/crud/asset_instance.py +272 -0
  5. zou/app/blueprints/crud/attachment_file.py +263 -0
  6. zou/app/blueprints/crud/base.py +176 -69
  7. zou/app/blueprints/crud/budget.py +278 -0
  8. zou/app/blueprints/crud/budget_entry.py +269 -0
  9. zou/app/blueprints/crud/chat.py +282 -0
  10. zou/app/blueprints/crud/chat_message.py +286 -0
  11. zou/app/blueprints/crud/comments.py +312 -1
  12. zou/app/blueprints/crud/custom_action.py +268 -0
  13. zou/app/blueprints/crud/day_off.py +298 -0
  14. zou/app/blueprints/crud/department.py +268 -0
  15. zou/app/blueprints/crud/entity.py +297 -3
  16. zou/app/blueprints/crud/entity_link.py +303 -0
  17. zou/app/blueprints/crud/entity_type.py +269 -0
  18. zou/app/blueprints/crud/event.py +197 -0
  19. zou/app/blueprints/crud/file_status.py +268 -0
  20. zou/app/blueprints/crud/hardware_item.py +268 -0
  21. zou/app/blueprints/crud/metadata_descriptor.py +312 -0
  22. zou/app/blueprints/crud/milestone.py +302 -1
  23. zou/app/blueprints/crud/news.py +285 -0
  24. zou/app/blueprints/crud/notification.py +287 -0
  25. zou/app/blueprints/crud/organisation.py +269 -0
  26. zou/app/blueprints/crud/output_file.py +34 -10
  27. zou/app/blueprints/crud/output_type.py +30 -10
  28. zou/app/blueprints/crud/person.py +407 -2
  29. zou/app/blueprints/crud/playlist.py +322 -4
  30. zou/app/blueprints/crud/plugin.py +269 -0
  31. zou/app/blueprints/crud/preview_background_file.py +272 -0
  32. zou/app/blueprints/crud/preview_file.py +280 -9
  33. zou/app/blueprints/crud/production_schedule_version.py +569 -0
  34. zou/app/blueprints/crud/project.py +440 -0
  35. zou/app/blueprints/crud/project_status.py +268 -0
  36. zou/app/blueprints/crud/salary_scale.py +185 -5
  37. zou/app/blueprints/crud/schedule_item.py +305 -0
  38. zou/app/blueprints/crud/search_filter.py +302 -0
  39. zou/app/blueprints/crud/search_filter_group.py +270 -0
  40. zou/app/blueprints/crud/software.py +30 -10
  41. zou/app/blueprints/crud/status_automation.py +296 -2
  42. zou/app/blueprints/crud/studio.py +268 -0
  43. zou/app/blueprints/crud/subscription.py +279 -0
  44. zou/app/blueprints/crud/task.py +325 -5
  45. zou/app/blueprints/crud/task_status.py +301 -0
  46. zou/app/blueprints/crud/task_type.py +283 -0
  47. zou/app/blueprints/crud/time_spent.py +327 -0
  48. zou/app/blueprints/crud/working_file.py +273 -10
  49. zou/app/blueprints/export/csv/assets.py +15 -5
  50. zou/app/blueprints/export/csv/base.py +12 -3
  51. zou/app/blueprints/export/csv/casting.py +32 -5
  52. zou/app/blueprints/export/csv/edits.py +15 -5
  53. zou/app/blueprints/export/csv/persons.py +24 -0
  54. zou/app/blueprints/export/csv/playlists.py +16 -5
  55. zou/app/blueprints/export/csv/projects.py +23 -0
  56. zou/app/blueprints/export/csv/shots.py +15 -5
  57. zou/app/blueprints/export/csv/task_types.py +23 -0
  58. zou/app/blueprints/export/csv/tasks.py +24 -0
  59. zou/app/blueprints/export/csv/time_spents.py +24 -0
  60. zou/app/blueprints/files/resources.py +928 -377
  61. zou/app/blueprints/news/resources.py +7 -5
  62. zou/app/blueprints/persons/resources.py +644 -271
  63. zou/app/blueprints/playlists/resources.py +154 -72
  64. zou/app/blueprints/previews/resources.py +473 -228
  65. zou/app/blueprints/projects/__init__.py +5 -0
  66. zou/app/blueprints/projects/resources.py +987 -420
  67. zou/app/blueprints/search/resources.py +44 -32
  68. zou/app/blueprints/shots/resources.py +1338 -88
  69. zou/app/blueprints/source/csv/assets.py +44 -6
  70. zou/app/blueprints/source/csv/casting.py +43 -6
  71. zou/app/blueprints/source/csv/edits.py +47 -9
  72. zou/app/blueprints/source/csv/persons.py +43 -4
  73. zou/app/blueprints/source/csv/shots.py +47 -6
  74. zou/app/blueprints/source/csv/task_type_estimations.py +95 -35
  75. zou/app/blueprints/source/kitsu.py +433 -11
  76. zou/app/blueprints/source/otio.py +215 -20
  77. zou/app/blueprints/source/shotgun/assets.py +146 -0
  78. zou/app/blueprints/source/shotgun/base.py +85 -14
  79. zou/app/blueprints/source/shotgun/episode.py +124 -0
  80. zou/app/blueprints/source/shotgun/import_errors.py +105 -14
  81. zou/app/blueprints/source/shotgun/notes.py +132 -0
  82. zou/app/blueprints/source/shotgun/person.py +163 -0
  83. zou/app/blueprints/source/shotgun/project.py +120 -0
  84. zou/app/blueprints/source/shotgun/scene.py +120 -0
  85. zou/app/blueprints/source/shotgun/sequence.py +134 -0
  86. zou/app/blueprints/source/shotgun/shot.py +166 -0
  87. zou/app/blueprints/source/shotgun/status.py +129 -0
  88. zou/app/blueprints/source/shotgun/steps.py +138 -0
  89. zou/app/blueprints/source/shotgun/tasks.py +199 -0
  90. zou/app/blueprints/source/shotgun/team.py +132 -0
  91. zou/app/blueprints/source/shotgun/versions.py +155 -0
  92. zou/app/blueprints/tasks/resources.py +1197 -308
  93. zou/app/models/metadata_descriptor.py +1 -0
  94. zou/app/services/persons_service.py +1 -1
  95. zou/app/services/projects_service.py +45 -1
  96. zou/app/services/time_spents_service.py +1 -1
  97. zou/migrations/versions/a1b2c3d4e5f6_add_position_to_metadata_descriptor.py +32 -0
  98. {zou-0.20.83.dist-info → zou-0.20.84.dist-info}/METADATA +18 -18
  99. {zou-0.20.83.dist-info → zou-0.20.84.dist-info}/RECORD +103 -102
  100. {zou-0.20.83.dist-info → zou-0.20.84.dist-info}/WHEEL +0 -0
  101. {zou-0.20.83.dist-info → zou-0.20.84.dist-info}/entry_points.txt +0 -0
  102. {zou-0.20.83.dist-info → zou-0.20.84.dist-info}/licenses/LICENSE +0 -0
  103. {zou-0.20.83.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.project_status import ProjectStatus
2
4
  from zou.app.blueprints.crud.base import BaseModelResource, BaseModelsResource
3
5
 
@@ -9,6 +11,130 @@ class ProjectStatussResource(BaseModelsResource):
9
11
  def check_read_permissions(self, options=None):
10
12
  return True
11
13
 
14
+ @jwt_required()
15
+ def get(self):
16
+ """
17
+ Get project statuses
18
+ ---
19
+ tags:
20
+ - Crud
21
+ description: Retrieve all project statuses. Supports filtering
22
+ via query parameters and pagination.
23
+ parameters:
24
+ - in: query
25
+ name: page
26
+ required: false
27
+ schema:
28
+ type: integer
29
+ example: 1
30
+ description: Page number for pagination
31
+ - in: query
32
+ name: limit
33
+ required: false
34
+ schema:
35
+ type: integer
36
+ example: 50
37
+ description: Number of results per page
38
+ - in: query
39
+ name: relations
40
+ required: false
41
+ schema:
42
+ type: boolean
43
+ default: false
44
+ example: false
45
+ description: Whether to include relations
46
+ responses:
47
+ 200:
48
+ description: Project statuses retrieved successfully
49
+ content:
50
+ application/json:
51
+ schema:
52
+ oneOf:
53
+ - type: array
54
+ items:
55
+ type: object
56
+ - type: object
57
+ properties:
58
+ data:
59
+ type: array
60
+ items:
61
+ type: object
62
+ example: []
63
+ total:
64
+ type: integer
65
+ example: 100
66
+ nb_pages:
67
+ type: integer
68
+ example: 2
69
+ limit:
70
+ type: integer
71
+ example: 50
72
+ offset:
73
+ type: integer
74
+ example: 0
75
+ page:
76
+ type: integer
77
+ example: 1
78
+ 400:
79
+ description: Invalid filter format or query error
80
+ """
81
+ return super().get()
82
+
83
+ @jwt_required()
84
+ def post(self):
85
+ """
86
+ Create project status
87
+ ---
88
+ tags:
89
+ - Crud
90
+ description: Create a new project status with data provided in
91
+ the request body. JSON format is expected.
92
+ requestBody:
93
+ required: true
94
+ content:
95
+ application/json:
96
+ schema:
97
+ type: object
98
+ required:
99
+ - name
100
+ properties:
101
+ name:
102
+ type: string
103
+ example: Open
104
+ color:
105
+ type: string
106
+ example: "#00FF00"
107
+ responses:
108
+ 201:
109
+ description: Project status created successfully
110
+ content:
111
+ application/json:
112
+ schema:
113
+ type: object
114
+ properties:
115
+ id:
116
+ type: string
117
+ format: uuid
118
+ example: a24a6ea4-ce75-4665-a070-57453082c25
119
+ name:
120
+ type: string
121
+ example: Open
122
+ color:
123
+ type: string
124
+ example: "#00FF00"
125
+ created_at:
126
+ type: string
127
+ format: date-time
128
+ example: "2024-01-15T10:30:00Z"
129
+ updated_at:
130
+ type: string
131
+ format: date-time
132
+ example: "2024-01-15T10:30:00Z"
133
+ 400:
134
+ description: Invalid data format or validation error
135
+ """
136
+ return super().post()
137
+
12
138
 
13
139
  class ProjectStatusResource(BaseModelResource):
14
140
  def __init__(self):
@@ -16,3 +142,145 @@ class ProjectStatusResource(BaseModelResource):
16
142
 
17
143
  def check_read_permissions(self, instance):
18
144
  return True
145
+
146
+ @jwt_required()
147
+ def get(self, instance_id):
148
+ """
149
+ Get project status
150
+ ---
151
+ tags:
152
+ - Crud
153
+ description: Retrieve a project status by its ID and return it
154
+ as a JSON object. Supports including relations.
155
+ parameters:
156
+ - in: path
157
+ name: instance_id
158
+ required: true
159
+ schema:
160
+ type: string
161
+ format: uuid
162
+ example: a24a6ea4-ce75-4665-a070-57453082c25
163
+ - in: query
164
+ name: relations
165
+ required: false
166
+ schema:
167
+ type: boolean
168
+ default: true
169
+ example: true
170
+ description: Whether to include relations
171
+ responses:
172
+ 200:
173
+ description: Project status retrieved successfully
174
+ content:
175
+ application/json:
176
+ schema:
177
+ type: object
178
+ properties:
179
+ id:
180
+ type: string
181
+ format: uuid
182
+ example: a24a6ea4-ce75-4665-a070-57453082c25
183
+ name:
184
+ type: string
185
+ example: Open
186
+ color:
187
+ type: string
188
+ example: "#00FF00"
189
+ created_at:
190
+ type: string
191
+ format: date-time
192
+ example: "2024-01-15T10:30:00Z"
193
+ updated_at:
194
+ type: string
195
+ format: date-time
196
+ example: "2024-01-15T10:30:00Z"
197
+ 400:
198
+ description: Invalid ID format or query error
199
+ """
200
+ return super().get(instance_id)
201
+
202
+ @jwt_required()
203
+ def put(self, instance_id):
204
+ """
205
+ Update project status
206
+ ---
207
+ tags:
208
+ - Crud
209
+ description: Update a project status with data provided in the
210
+ request body. JSON format is expected.
211
+ parameters:
212
+ - in: path
213
+ name: instance_id
214
+ required: true
215
+ schema:
216
+ type: string
217
+ format: uuid
218
+ example: a24a6ea4-ce75-4665-a070-57453082c25
219
+ requestBody:
220
+ required: true
221
+ content:
222
+ application/json:
223
+ schema:
224
+ type: object
225
+ properties:
226
+ name:
227
+ type: string
228
+ example: Closed
229
+ color:
230
+ type: string
231
+ example: "#FF0000"
232
+ responses:
233
+ 200:
234
+ description: Project status updated successfully
235
+ content:
236
+ application/json:
237
+ schema:
238
+ type: object
239
+ properties:
240
+ id:
241
+ type: string
242
+ format: uuid
243
+ example: a24a6ea4-ce75-4665-a070-57453082c25
244
+ name:
245
+ type: string
246
+ example: Closed
247
+ color:
248
+ type: string
249
+ example: "#FF0000"
250
+ created_at:
251
+ type: string
252
+ format: date-time
253
+ example: "2024-01-15T10:30:00Z"
254
+ updated_at:
255
+ type: string
256
+ format: date-time
257
+ example: "2024-01-15T11:00:00Z"
258
+ 400:
259
+ description: Invalid data format or validation error
260
+ """
261
+ return super().put(instance_id)
262
+
263
+ @jwt_required()
264
+ def delete(self, instance_id):
265
+ """
266
+ Delete project status
267
+ ---
268
+ tags:
269
+ - Crud
270
+ description: Delete a project status by its ID. Returns empty
271
+ response on success.
272
+ parameters:
273
+ - in: path
274
+ name: instance_id
275
+ required: true
276
+ schema:
277
+ type: string
278
+ format: uuid
279
+ example: a24a6ea4-ce75-4665-a070-57453082c25
280
+ responses:
281
+ 204:
282
+ description: Project status deleted successfully
283
+ 400:
284
+ description: Integrity error or cannot delete
285
+ """
286
+ return super().delete(instance_id)
@@ -21,16 +21,42 @@ class SalaryScalesResource(BaseModelsResource):
21
21
  @jwt_required()
22
22
  def get(self):
23
23
  """
24
- Retrieve all salary scale entries.
24
+ Get salary scales
25
25
  ---
26
26
  tags:
27
27
  - Crud
28
- description: Retrieve all salary scale entries.
28
+ description: Retrieve all salary scale entries. Automatically
29
+ creates missing combinations of department, position, and
30
+ seniority.
29
31
  responses:
30
32
  200:
31
- description: All salary scale entries
32
- 403:
33
- description: Permission denied
33
+ description: Salary scales retrieved successfully
34
+ content:
35
+ application/json:
36
+ schema:
37
+ type: array
38
+ items:
39
+ type: object
40
+ properties:
41
+ id:
42
+ type: string
43
+ format: uuid
44
+ example: a24a6ea4-ce75-4665-a070-57453082c25
45
+ department_id:
46
+ type: string
47
+ format: uuid
48
+ example: b24a6ea4-ce75-4665-a070-57453082c25
49
+ position:
50
+ type: string
51
+ example: artist
52
+ seniority:
53
+ type: string
54
+ example: junior
55
+ rate:
56
+ type: number
57
+ example: 50.0
58
+ 400:
59
+ description: Query error
34
60
  """
35
61
  self.check_read_permissions()
36
62
  query = self.model.query
@@ -71,3 +97,157 @@ class SalaryScaleResource(BaseModelResource):
71
97
 
72
98
  def __init__(self):
73
99
  BaseModelResource.__init__(self, SalaryScale)
100
+
101
+ @jwt_required()
102
+ def get(self, instance_id):
103
+ """
104
+ Get salary scale
105
+ ---
106
+ tags:
107
+ - Crud
108
+ description: Retrieve a salary scale by its ID and return it as
109
+ a JSON object. Supports including relations.
110
+ parameters:
111
+ - in: path
112
+ name: instance_id
113
+ required: true
114
+ schema:
115
+ type: string
116
+ format: uuid
117
+ example: a24a6ea4-ce75-4665-a070-57453082c25
118
+ - in: query
119
+ name: relations
120
+ required: false
121
+ schema:
122
+ type: boolean
123
+ default: true
124
+ example: true
125
+ description: Whether to include relations
126
+ responses:
127
+ 200:
128
+ description: Salary scale retrieved successfully
129
+ content:
130
+ application/json:
131
+ schema:
132
+ type: object
133
+ properties:
134
+ id:
135
+ type: string
136
+ format: uuid
137
+ example: a24a6ea4-ce75-4665-a070-57453082c25
138
+ department_id:
139
+ type: string
140
+ format: uuid
141
+ example: b24a6ea4-ce75-4665-a070-57453082c25
142
+ position:
143
+ type: string
144
+ example: artist
145
+ seniority:
146
+ type: string
147
+ example: junior
148
+ rate:
149
+ type: number
150
+ example: 50.0
151
+ created_at:
152
+ type: string
153
+ format: date-time
154
+ example: "2024-01-15T10:30:00Z"
155
+ updated_at:
156
+ type: string
157
+ format: date-time
158
+ example: "2024-01-15T10:30:00Z"
159
+ 400:
160
+ description: Invalid ID format or query error
161
+ """
162
+ return super().get(instance_id)
163
+
164
+ @jwt_required()
165
+ def put(self, instance_id):
166
+ """
167
+ Update salary scale
168
+ ---
169
+ tags:
170
+ - Crud
171
+ description: Update a salary scale with data provided in the
172
+ request body. JSON format is expected. Department ID cannot
173
+ be changed.
174
+ parameters:
175
+ - in: path
176
+ name: instance_id
177
+ required: true
178
+ schema:
179
+ type: string
180
+ format: uuid
181
+ example: a24a6ea4-ce75-4665-a070-57453082c25
182
+ requestBody:
183
+ required: true
184
+ content:
185
+ application/json:
186
+ schema:
187
+ type: object
188
+ properties:
189
+ rate:
190
+ type: number
191
+ example: 55.0
192
+ responses:
193
+ 200:
194
+ description: Salary scale updated successfully
195
+ content:
196
+ application/json:
197
+ schema:
198
+ type: object
199
+ properties:
200
+ id:
201
+ type: string
202
+ format: uuid
203
+ example: a24a6ea4-ce75-4665-a070-57453082c25
204
+ department_id:
205
+ type: string
206
+ format: uuid
207
+ example: b24a6ea4-ce75-4665-a070-57453082c25
208
+ position:
209
+ type: string
210
+ example: artist
211
+ seniority:
212
+ type: string
213
+ example: junior
214
+ rate:
215
+ type: number
216
+ example: 55.0
217
+ created_at:
218
+ type: string
219
+ format: date-time
220
+ example: "2024-01-15T10:30:00Z"
221
+ updated_at:
222
+ type: string
223
+ format: date-time
224
+ example: "2024-01-15T11:00:00Z"
225
+ 400:
226
+ description: Invalid data format or validation error
227
+ """
228
+ return super().put(instance_id)
229
+
230
+ @jwt_required()
231
+ def delete(self, instance_id):
232
+ """
233
+ Delete salary scale
234
+ ---
235
+ tags:
236
+ - Crud
237
+ description: Delete a salary scale by its ID. Returns empty
238
+ response on success.
239
+ parameters:
240
+ - in: path
241
+ name: instance_id
242
+ required: true
243
+ schema:
244
+ type: string
245
+ format: uuid
246
+ example: a24a6ea4-ce75-4665-a070-57453082c25
247
+ responses:
248
+ 204:
249
+ description: Salary scale deleted successfully
250
+ 400:
251
+ description: Integrity error or cannot delete
252
+ """
253
+ return super().delete(instance_id)