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.event import ApiEvent
2
4
 
3
5
  from zou.app.blueprints.crud.base import BaseModelResource, BaseModelsResource
@@ -7,6 +9,68 @@ class EventsResource(BaseModelsResource):
7
9
  def __init__(self):
8
10
  BaseModelsResource.__init__(self, ApiEvent)
9
11
 
12
+ @jwt_required()
13
+ def get(self):
14
+ """
15
+ Get events
16
+ ---
17
+ tags:
18
+ - Crud
19
+ description: Retrieve all events. Supports filtering via query
20
+ parameters and pagination. Limited to 1000 results.
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: Events retrieved successfully
47
+ content:
48
+ application/json:
49
+ schema:
50
+ type: array
51
+ items:
52
+ type: object
53
+ properties:
54
+ id:
55
+ type: string
56
+ format: uuid
57
+ example: a24a6ea4-ce75-4665-a070-57453082c25
58
+ name:
59
+ type: string
60
+ example: Event Name
61
+ created_at:
62
+ type: string
63
+ format: date-time
64
+ example: "2024-01-15T10:30:00Z"
65
+ updated_at:
66
+ type: string
67
+ format: date-time
68
+ example: "2024-01-15T10:30:00Z"
69
+ 400:
70
+ description: Invalid filter format or query error
71
+ """
72
+ return super().get()
73
+
10
74
  def all_entries(self, query=None, relations=False):
11
75
  if query is None:
12
76
  query = self.model.query
@@ -19,3 +83,136 @@ class EventsResource(BaseModelsResource):
19
83
  class EventResource(BaseModelResource):
20
84
  def __init__(self):
21
85
  BaseModelResource.__init__(self, ApiEvent)
86
+
87
+ @jwt_required()
88
+ def get(self, instance_id):
89
+ """
90
+ Get event
91
+ ---
92
+ tags:
93
+ - Crud
94
+ description: Retrieve an event by its ID and return it as a JSON
95
+ object. Supports including relations.
96
+ parameters:
97
+ - in: path
98
+ name: instance_id
99
+ required: true
100
+ schema:
101
+ type: string
102
+ format: uuid
103
+ example: a24a6ea4-ce75-4665-a070-57453082c25
104
+ - in: query
105
+ name: relations
106
+ required: false
107
+ schema:
108
+ type: boolean
109
+ default: true
110
+ example: true
111
+ description: Whether to include relations
112
+ responses:
113
+ 200:
114
+ description: Event retrieved successfully
115
+ content:
116
+ application/json:
117
+ schema:
118
+ type: object
119
+ properties:
120
+ id:
121
+ type: string
122
+ format: uuid
123
+ example: a24a6ea4-ce75-4665-a070-57453082c25
124
+ name:
125
+ type: string
126
+ example: Event Name
127
+ created_at:
128
+ type: string
129
+ format: date-time
130
+ example: "2024-01-15T10:30:00Z"
131
+ updated_at:
132
+ type: string
133
+ format: date-time
134
+ example: "2024-01-15T10:30:00Z"
135
+ 400:
136
+ description: Invalid ID format or query error
137
+ """
138
+ return super().get(instance_id)
139
+
140
+ @jwt_required()
141
+ def put(self, instance_id):
142
+ """
143
+ Update event
144
+ ---
145
+ tags:
146
+ - Crud
147
+ description: Update an event with data provided in the request
148
+ body. JSON format is expected.
149
+ parameters:
150
+ - in: path
151
+ name: instance_id
152
+ required: true
153
+ schema:
154
+ type: string
155
+ format: uuid
156
+ example: a24a6ea4-ce75-4665-a070-57453082c25
157
+ requestBody:
158
+ required: true
159
+ content:
160
+ application/json:
161
+ schema:
162
+ type: object
163
+ properties:
164
+ name:
165
+ type: string
166
+ example: Updated Event Name
167
+ responses:
168
+ 200:
169
+ description: Event updated successfully
170
+ content:
171
+ application/json:
172
+ schema:
173
+ type: object
174
+ properties:
175
+ id:
176
+ type: string
177
+ format: uuid
178
+ example: a24a6ea4-ce75-4665-a070-57453082c25
179
+ name:
180
+ type: string
181
+ example: Updated Event Name
182
+ created_at:
183
+ type: string
184
+ format: date-time
185
+ example: "2024-01-15T10:30:00Z"
186
+ updated_at:
187
+ type: string
188
+ format: date-time
189
+ example: "2024-01-15T11:00:00Z"
190
+ 400:
191
+ description: Invalid data format or validation error
192
+ """
193
+ return super().put(instance_id)
194
+
195
+ @jwt_required()
196
+ def delete(self, instance_id):
197
+ """
198
+ Delete event
199
+ ---
200
+ tags:
201
+ - Crud
202
+ description: Delete an event by its ID. Returns empty response
203
+ on success.
204
+ parameters:
205
+ - in: path
206
+ name: instance_id
207
+ required: true
208
+ schema:
209
+ type: string
210
+ format: uuid
211
+ example: a24a6ea4-ce75-4665-a070-57453082c25
212
+ responses:
213
+ 204:
214
+ description: Event deleted successfully
215
+ 400:
216
+ description: Integrity error or cannot delete
217
+ """
218
+ return super().delete(instance_id)
@@ -1,3 +1,5 @@
1
+ from flask_jwt_extended import jwt_required
2
+
1
3
  from zou.app.models.file_status import FileStatus
2
4
  from zou.app.blueprints.crud.base import BaseModelResource, BaseModelsResource
3
5
 
@@ -9,6 +11,130 @@ class FileStatusesResource(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 file statuses
18
+ ---
19
+ tags:
20
+ - Crud
21
+ description: Retrieve all file statuses. Supports filtering via
22
+ 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: File 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 file status
87
+ ---
88
+ tags:
89
+ - Crud
90
+ description: Create a new file status with data provided in the
91
+ 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: Approved
104
+ color:
105
+ type: string
106
+ example: "#00FF00"
107
+ responses:
108
+ 201:
109
+ description: File 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: Approved
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 FileStatusResource(BaseModelResource):
14
140
  def __init__(self):
@@ -16,3 +142,145 @@ class FileStatusResource(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 file status
150
+ ---
151
+ tags:
152
+ - Crud
153
+ description: Retrieve a file status by its ID and return it as a
154
+ 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: File 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: Approved
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 file status
206
+ ---
207
+ tags:
208
+ - Crud
209
+ description: Update a file 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: Rejected
229
+ color:
230
+ type: string
231
+ example: "#FF0000"
232
+ responses:
233
+ 200:
234
+ description: File 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: Rejected
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 file status
267
+ ---
268
+ tags:
269
+ - Crud
270
+ description: Delete a file 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: File status deleted successfully
283
+ 400:
284
+ description: Integrity error or cannot delete
285
+ """
286
+ return super().delete(instance_id)