zou 0.20.16__py3-none-any.whl → 0.20.18__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/comments/resources.py +4 -3
- zou/app/blueprints/previews/resources.py +40 -32
- zou/app/config.py +1 -0
- zou/app/models/comment.py +10 -10
- zou/app/models/project.py +26 -6
- zou/app/services/assets_service.py +3 -0
- zou/app/services/edits_service.py +3 -0
- zou/app/services/entities_service.py +3 -0
- zou/app/services/shots_service.py +3 -0
- zou/app/services/tasks_service.py +4 -4
- zou/app/services/user_service.py +1 -0
- zou/app/utils/fs.py +3 -0
- zou/app/utils/monitoring.py +2 -0
- zou/migrations/versions/fba149993140_add_missing_index.py +132 -0
- {zou-0.20.16.dist-info → zou-0.20.18.dist-info}/METADATA +9 -10
- {zou-0.20.16.dist-info → zou-0.20.18.dist-info}/RECORD +21 -20
- {zou-0.20.16.dist-info → zou-0.20.18.dist-info}/LICENSE +0 -0
- {zou-0.20.16.dist-info → zou-0.20.18.dist-info}/WHEEL +0 -0
- {zou-0.20.16.dist-info → zou-0.20.18.dist-info}/entry_points.txt +0 -0
- {zou-0.20.16.dist-info → zou-0.20.18.dist-info}/top_level.txt +0 -0
zou/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "0.20.
|
|
1
|
+
__version__ = "0.20.18"
|
|
@@ -83,9 +83,10 @@ class DownloadAttachmentResource(Resource):
|
|
|
83
83
|
),
|
|
84
84
|
)
|
|
85
85
|
except Exception:
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
86
|
+
if config.LOG_FILE_NOT_FOUND:
|
|
87
|
+
current_app.logger.error(
|
|
88
|
+
f"Attachment file was not found for: {attachment_file_id}"
|
|
89
|
+
)
|
|
89
90
|
abort(404)
|
|
90
91
|
|
|
91
92
|
|
|
@@ -653,9 +653,10 @@ class PreviewFileMovieResource(BasePreviewFileResource):
|
|
|
653
653
|
instance_id, last_modified=self.last_modified
|
|
654
654
|
)
|
|
655
655
|
except FileNotFound:
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
656
|
+
if config.LOG_FILE_NOT_FOUND:
|
|
657
|
+
current_app.logger.error(
|
|
658
|
+
"Movie file was not found for: %s" % instance_id
|
|
659
|
+
)
|
|
659
660
|
abort(404)
|
|
660
661
|
|
|
661
662
|
|
|
@@ -698,9 +699,10 @@ class PreviewFileLowMovieResource(BasePreviewFileResource):
|
|
|
698
699
|
instance_id, last_modified=self.last_modified
|
|
699
700
|
)
|
|
700
701
|
except FileNotFound:
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
702
|
+
if config.LOG_FILE_NOT_FOUND:
|
|
703
|
+
current_app.logger.error(
|
|
704
|
+
"Movie file was not found for: %s" % instance_id
|
|
705
|
+
)
|
|
704
706
|
abort(404)
|
|
705
707
|
|
|
706
708
|
|
|
@@ -740,9 +742,10 @@ class PreviewFileMovieDownloadResource(BasePreviewFileResource):
|
|
|
740
742
|
last_modified=self.last_modified,
|
|
741
743
|
)
|
|
742
744
|
except FileNotFound:
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
745
|
+
if config.LOG_FILE_NOT_FOUND:
|
|
746
|
+
current_app.logger.error(
|
|
747
|
+
"Movie file was not found for: %s" % instance_id
|
|
748
|
+
)
|
|
746
749
|
abort(404)
|
|
747
750
|
|
|
748
751
|
|
|
@@ -800,9 +803,10 @@ class PreviewFileResource(BasePreviewFileResource):
|
|
|
800
803
|
)
|
|
801
804
|
|
|
802
805
|
except FileNotFound:
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
+
if config.LOG_FILE_NOT_FOUND:
|
|
807
|
+
current_app.logger.error(
|
|
808
|
+
"Non-movie file was not found for: %s" % instance_id
|
|
809
|
+
)
|
|
806
810
|
abort(404)
|
|
807
811
|
|
|
808
812
|
|
|
@@ -869,9 +873,10 @@ class PreviewFileDownloadResource(BasePreviewFileResource):
|
|
|
869
873
|
last_modified=self.last_modified,
|
|
870
874
|
)
|
|
871
875
|
except FileNotFound:
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
876
|
+
if config.LOG_FILE_NOT_FOUND:
|
|
877
|
+
current_app.logger.error(
|
|
878
|
+
"Standard file was not found for: %s" % instance_id
|
|
879
|
+
)
|
|
875
880
|
abort(404)
|
|
876
881
|
|
|
877
882
|
|
|
@@ -935,10 +940,11 @@ class AttachmentThumbnailResource(Resource):
|
|
|
935
940
|
),
|
|
936
941
|
)
|
|
937
942
|
except FileNotFound:
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
943
|
+
if config.LOG_FILE_NOT_FOUND:
|
|
944
|
+
current_app.logger.error(
|
|
945
|
+
"Picture file was not found for attachment: %s"
|
|
946
|
+
% (attachment_file_id)
|
|
947
|
+
)
|
|
942
948
|
abort(404)
|
|
943
949
|
|
|
944
950
|
|
|
@@ -982,9 +988,10 @@ class BasePreviewPictureResource(BasePreviewFileResource):
|
|
|
982
988
|
last_modified=self.last_modified,
|
|
983
989
|
)
|
|
984
990
|
except FileNotFound:
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
991
|
+
if config.LOG_FILE_NOT_FOUND:
|
|
992
|
+
current_app.logger.error(
|
|
993
|
+
"Picture file was not found for: %s" % instance_id
|
|
994
|
+
)
|
|
988
995
|
abort(404)
|
|
989
996
|
|
|
990
997
|
|
|
@@ -1166,14 +1173,13 @@ class BaseThumbnailResource(Resource):
|
|
|
1166
1173
|
),
|
|
1167
1174
|
)
|
|
1168
1175
|
except FileNotFound:
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1176
|
+
if config.LOG_FILE_NOT_FOUND:
|
|
1177
|
+
current_app.logger.error(
|
|
1178
|
+
"Thumbnail file was not found for: %s" % instance_id
|
|
1179
|
+
)
|
|
1172
1180
|
abort(404)
|
|
1173
|
-
except IOError:
|
|
1174
|
-
current_app.logger.error(
|
|
1175
|
-
"Thumbnail file was not found for: %s" % instance_id
|
|
1176
|
-
)
|
|
1181
|
+
except IOError as e:
|
|
1182
|
+
current_app.logger.error(e)
|
|
1177
1183
|
abort(404)
|
|
1178
1184
|
|
|
1179
1185
|
|
|
@@ -1680,9 +1686,11 @@ class PreviewBackgroundFileResource(Resource):
|
|
|
1680
1686
|
),
|
|
1681
1687
|
)
|
|
1682
1688
|
except FileNotFound:
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1689
|
+
if config.LOG_FILE_NOT_FOUND:
|
|
1690
|
+
current_app.logger.error(
|
|
1691
|
+
"Preview background file was not found for: %s"
|
|
1692
|
+
% instance_id
|
|
1693
|
+
)
|
|
1686
1694
|
raise PreviewBackgroundFileNotFoundException
|
|
1687
1695
|
|
|
1688
1696
|
|
zou/app/config.py
CHANGED
|
@@ -142,6 +142,7 @@ LOGS_MODE = os.getenv("LOGS_MODE", "default")
|
|
|
142
142
|
LOGS_HOST = os.getenv("LOGS_HOST", "localhost")
|
|
143
143
|
LOGS_PORT = os.getenv("LOGS_PORT", 2202)
|
|
144
144
|
LOGS_TOKEN = os.getenv("LOGS_TOKEN")
|
|
145
|
+
LOG_FILE_NOT_FOUND = envtobool("LOG_FILE_NOT_FOUND", False)
|
|
145
146
|
|
|
146
147
|
SENTRY_ENABLED = envtobool("SENTRY_ENABLED", False)
|
|
147
148
|
SENTRY_DSN = os.getenv("SENTRY_DSN", "")
|
zou/app/models/comment.py
CHANGED
|
@@ -6,21 +6,19 @@ from zou.app.models.serializer import SerializerMixin
|
|
|
6
6
|
from zou.app.models.base import BaseMixin
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
db.Column(
|
|
12
|
-
"comment",
|
|
9
|
+
class CommentPreviewLink(db.Model):
|
|
10
|
+
comment = db.Column(
|
|
13
11
|
UUIDType(binary=False),
|
|
14
12
|
db.ForeignKey("comment.id"),
|
|
15
13
|
primary_key=True,
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
index=True,
|
|
15
|
+
)
|
|
16
|
+
preview_file = db.Column(
|
|
19
17
|
UUIDType(binary=False),
|
|
20
18
|
db.ForeignKey("preview_file.id"),
|
|
21
19
|
primary_key=True,
|
|
22
|
-
|
|
23
|
-
)
|
|
20
|
+
index=True,
|
|
21
|
+
)
|
|
24
22
|
|
|
25
23
|
|
|
26
24
|
mentions_table = db.Table(
|
|
@@ -107,7 +105,9 @@ class Comment(db.Model, BaseMixin, SerializerMixin):
|
|
|
107
105
|
UUIDType(binary=False), db.ForeignKey("preview_file.id")
|
|
108
106
|
)
|
|
109
107
|
previews = db.relationship(
|
|
110
|
-
"PreviewFile",
|
|
108
|
+
"PreviewFile",
|
|
109
|
+
secondary=CommentPreviewLink.__table__,
|
|
110
|
+
backref="comments",
|
|
111
111
|
)
|
|
112
112
|
mentions = db.relationship("Person", secondary=mentions_table)
|
|
113
113
|
department_mentions = db.relationship(
|
zou/app/models/project.py
CHANGED
|
@@ -29,10 +29,16 @@ PROJECT_STYLES = [
|
|
|
29
29
|
class ProjectPersonLink(db.Model):
|
|
30
30
|
__tablename__ = "project_person_link"
|
|
31
31
|
project_id = db.Column(
|
|
32
|
-
UUIDType(binary=False),
|
|
32
|
+
UUIDType(binary=False),
|
|
33
|
+
db.ForeignKey("project.id"),
|
|
34
|
+
primary_key=True,
|
|
35
|
+
index=True,
|
|
33
36
|
)
|
|
34
37
|
person_id = db.Column(
|
|
35
|
-
UUIDType(binary=False),
|
|
38
|
+
UUIDType(binary=False),
|
|
39
|
+
db.ForeignKey("person.id"),
|
|
40
|
+
primary_key=True,
|
|
41
|
+
index=True,
|
|
36
42
|
)
|
|
37
43
|
shotgun_id = db.Column(db.Integer)
|
|
38
44
|
|
|
@@ -40,10 +46,16 @@ class ProjectPersonLink(db.Model):
|
|
|
40
46
|
class ProjectTaskTypeLink(db.Model, BaseMixin, SerializerMixin):
|
|
41
47
|
__tablename__ = "project_task_type_link"
|
|
42
48
|
project_id = db.Column(
|
|
43
|
-
UUIDType(binary=False),
|
|
49
|
+
UUIDType(binary=False),
|
|
50
|
+
db.ForeignKey("project.id"),
|
|
51
|
+
primary_key=True,
|
|
52
|
+
index=True,
|
|
44
53
|
)
|
|
45
54
|
task_type_id = db.Column(
|
|
46
|
-
UUIDType(binary=False),
|
|
55
|
+
UUIDType(binary=False),
|
|
56
|
+
db.ForeignKey("task_type.id"),
|
|
57
|
+
primary_key=True,
|
|
58
|
+
index=True,
|
|
47
59
|
)
|
|
48
60
|
priority = db.Column(db.Integer, default=None)
|
|
49
61
|
|
|
@@ -57,12 +69,16 @@ class ProjectTaskTypeLink(db.Model, BaseMixin, SerializerMixin):
|
|
|
57
69
|
class ProjectTaskStatusLink(db.Model, BaseMixin, SerializerMixin):
|
|
58
70
|
__tablename__ = "project_task_status_link"
|
|
59
71
|
project_id = db.Column(
|
|
60
|
-
UUIDType(binary=False),
|
|
72
|
+
UUIDType(binary=False),
|
|
73
|
+
db.ForeignKey("project.id"),
|
|
74
|
+
primary_key=True,
|
|
75
|
+
index=True,
|
|
61
76
|
)
|
|
62
77
|
task_status_id = db.Column(
|
|
63
78
|
UUIDType(binary=False),
|
|
64
79
|
db.ForeignKey("task_status.id"),
|
|
65
80
|
primary_key=True,
|
|
81
|
+
index=True,
|
|
66
82
|
)
|
|
67
83
|
priority = db.Column(db.Integer, default=None)
|
|
68
84
|
roles_for_board = db.Column(
|
|
@@ -92,12 +108,16 @@ class ProjectAssetTypeLink(db.Model):
|
|
|
92
108
|
class ProjectStatusAutomationLink(db.Model):
|
|
93
109
|
__tablename__ = "project_status_automation_link"
|
|
94
110
|
project_id = db.Column(
|
|
95
|
-
UUIDType(binary=False),
|
|
111
|
+
UUIDType(binary=False),
|
|
112
|
+
db.ForeignKey("project.id"),
|
|
113
|
+
primary_key=True,
|
|
114
|
+
index=True,
|
|
96
115
|
)
|
|
97
116
|
status_automation_id = db.Column(
|
|
98
117
|
UUIDType(binary=False),
|
|
99
118
|
db.ForeignKey("status_automation.id"),
|
|
100
119
|
primary_key=True,
|
|
120
|
+
index=True,
|
|
101
121
|
)
|
|
102
122
|
|
|
103
123
|
|
|
@@ -202,6 +202,7 @@ def get_assets_and_tasks(criterions={}, with_episode_ids=False):
|
|
|
202
202
|
Task.due_date,
|
|
203
203
|
Task.done_date,
|
|
204
204
|
Task.last_comment_date,
|
|
205
|
+
Task.last_preview_file_id,
|
|
205
206
|
Task.difficulty,
|
|
206
207
|
assignees_table.columns.person,
|
|
207
208
|
).order_by(EntityType.name, Entity.name)
|
|
@@ -294,6 +295,7 @@ def get_assets_and_tasks(criterions={}, with_episode_ids=False):
|
|
|
294
295
|
task_due_date,
|
|
295
296
|
task_done_date,
|
|
296
297
|
task_last_comment_date,
|
|
298
|
+
task_last_preview_file_id,
|
|
297
299
|
task_difficulty,
|
|
298
300
|
person_id,
|
|
299
301
|
) in query_result:
|
|
@@ -346,6 +348,7 @@ def get_assets_and_tasks(criterions={}, with_episode_ids=False):
|
|
|
346
348
|
"last_comment_date": fields.serialize_value(
|
|
347
349
|
task_last_comment_date
|
|
348
350
|
),
|
|
351
|
+
"last_preview_file_id": str(task_last_preview_file_id or ""),
|
|
349
352
|
"priority": task_priority or 0,
|
|
350
353
|
"real_start_date": fields.serialize_value(
|
|
351
354
|
task_real_start_date
|
|
@@ -106,6 +106,7 @@ def get_edits_and_tasks(criterions={}):
|
|
|
106
106
|
Task.start_date,
|
|
107
107
|
Task.due_date,
|
|
108
108
|
Task.last_comment_date,
|
|
109
|
+
Task.last_preview_file_id,
|
|
109
110
|
Task.nb_assets_ready,
|
|
110
111
|
assignees_table.columns.person,
|
|
111
112
|
Project.id,
|
|
@@ -153,6 +154,7 @@ def get_edits_and_tasks(criterions={}):
|
|
|
153
154
|
task_start_date,
|
|
154
155
|
task_due_date,
|
|
155
156
|
task_last_comment_date,
|
|
157
|
+
task_last_preview_file_id,
|
|
156
158
|
task_nb_assets_ready,
|
|
157
159
|
person_id,
|
|
158
160
|
project_id,
|
|
@@ -203,6 +205,7 @@ def get_edits_and_tasks(criterions={}):
|
|
|
203
205
|
"end_date": task_end_date,
|
|
204
206
|
"estimation": task_estimation,
|
|
205
207
|
"last_comment_date": task_last_comment_date,
|
|
208
|
+
"last_preview_file_id": task_last_preview_file_id,
|
|
206
209
|
"is_subscribed": subscription_map.get(task_id, False),
|
|
207
210
|
"nb_assets_ready": task_nb_assets_ready,
|
|
208
211
|
"priority": task_priority or 0,
|
|
@@ -251,6 +251,7 @@ def get_entities_and_tasks(criterions={}):
|
|
|
251
251
|
Task.due_date,
|
|
252
252
|
Task.done_date,
|
|
253
253
|
Task.last_comment_date,
|
|
254
|
+
Task.last_preview_file_id,
|
|
254
255
|
Task.difficulty,
|
|
255
256
|
assignees_table.columns.person,
|
|
256
257
|
)
|
|
@@ -282,6 +283,7 @@ def get_entities_and_tasks(criterions={}):
|
|
|
282
283
|
task_due_date,
|
|
283
284
|
task_done_date,
|
|
284
285
|
task_last_comment_date,
|
|
286
|
+
task_last_preview_file_id,
|
|
285
287
|
task_difficulty,
|
|
286
288
|
person_id,
|
|
287
289
|
) in query.all():
|
|
@@ -322,6 +324,7 @@ def get_entities_and_tasks(criterions={}):
|
|
|
322
324
|
"duration": task_duration,
|
|
323
325
|
"is_subscribed": subscription_map.get(task_id, False),
|
|
324
326
|
"last_comment_date": task_last_comment_date,
|
|
327
|
+
"last_preview_file_id": task_last_preview_file_id,
|
|
325
328
|
"priority": task_priority or 0,
|
|
326
329
|
"real_start_date": task_real_start_date,
|
|
327
330
|
"retake_count": task_retake_count,
|
|
@@ -253,6 +253,7 @@ def get_shots_and_tasks(criterions={}):
|
|
|
253
253
|
Task.due_date,
|
|
254
254
|
Task.done_date,
|
|
255
255
|
Task.last_comment_date,
|
|
256
|
+
Task.last_preview_file_id,
|
|
256
257
|
Task.nb_assets_ready,
|
|
257
258
|
Task.difficulty,
|
|
258
259
|
assignees_table.columns.person,
|
|
@@ -304,6 +305,7 @@ def get_shots_and_tasks(criterions={}):
|
|
|
304
305
|
task_due_date,
|
|
305
306
|
task_done_date,
|
|
306
307
|
task_last_comment_date,
|
|
308
|
+
task_last_preview_file_id,
|
|
307
309
|
task_nb_assets_ready,
|
|
308
310
|
task_difficulty,
|
|
309
311
|
person_id,
|
|
@@ -364,6 +366,7 @@ def get_shots_and_tasks(criterions={}):
|
|
|
364
366
|
"estimation": task_estimation,
|
|
365
367
|
"is_subscribed": subscription_map.get(task_id, False),
|
|
366
368
|
"last_comment_date": task_last_comment_date,
|
|
369
|
+
"last_preview_file_id": task_last_preview_file_id,
|
|
367
370
|
"nb_assets_ready": task_nb_assets_ready,
|
|
368
371
|
"priority": task_priority or 0,
|
|
369
372
|
"real_start_date": task_real_start_date,
|
|
@@ -15,7 +15,7 @@ from zou.app.models.comment import (
|
|
|
15
15
|
acknowledgements_table,
|
|
16
16
|
mentions_table,
|
|
17
17
|
department_mentions_table,
|
|
18
|
-
|
|
18
|
+
CommentPreviewLink,
|
|
19
19
|
)
|
|
20
20
|
from zou.app.models.department import Department
|
|
21
21
|
from zou.app.models.entity import Entity, EntityLink
|
|
@@ -686,9 +686,9 @@ def _build_department_mention_map_for_comments(comment_ids):
|
|
|
686
686
|
def _build_preview_map_for_comments(comment_ids, is_client=False):
|
|
687
687
|
preview_map = {}
|
|
688
688
|
query = (
|
|
689
|
-
PreviewFile.query.join(
|
|
690
|
-
.filter(
|
|
691
|
-
.add_columns(
|
|
689
|
+
PreviewFile.query.join(CommentPreviewLink)
|
|
690
|
+
.filter(CommentPreviewLink.comment.in_(comment_ids))
|
|
691
|
+
.add_columns(CommentPreviewLink.comment)
|
|
692
692
|
)
|
|
693
693
|
for preview, comment_id in query.all():
|
|
694
694
|
comment_id = str(comment_id)
|
zou/app/services/user_service.py
CHANGED
zou/app/utils/fs.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import os
|
|
2
2
|
import shutil
|
|
3
3
|
import time
|
|
4
|
+
from flask_fs.errors import FileNotFound
|
|
4
5
|
|
|
5
6
|
import errno
|
|
6
7
|
|
|
@@ -44,6 +45,8 @@ def get_file_path_and_file(
|
|
|
44
45
|
):
|
|
45
46
|
if config.FS_BACKEND == "local":
|
|
46
47
|
file_path = get_local_path(prefix, instance_id)
|
|
48
|
+
if is_unvalid_file(file_path, file_size):
|
|
49
|
+
raise FileNotFound
|
|
47
50
|
else:
|
|
48
51
|
file_path = os.path.join(
|
|
49
52
|
config.TMP_DIR, "cache-%s-%s.%s" % (prefix, instance_id, extension)
|
zou/app/utils/monitoring.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from flask_jwt_extended.exceptions import NoAuthorizationError
|
|
2
2
|
from jwt import ExpiredSignatureError
|
|
3
3
|
from werkzeug.exceptions import Forbidden, NotFound
|
|
4
|
+
from flask_fs.errors import FileNotFound
|
|
4
5
|
|
|
5
6
|
from zou.app import config
|
|
6
7
|
from zou.app.utils import permissions
|
|
@@ -37,6 +38,7 @@ def init_monitoring(app):
|
|
|
37
38
|
NotFound,
|
|
38
39
|
Forbidden,
|
|
39
40
|
ExpiredSignatureError,
|
|
41
|
+
FileNotFound,
|
|
40
42
|
],
|
|
41
43
|
)
|
|
42
44
|
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"""Add missing index
|
|
2
|
+
|
|
3
|
+
Revision ID: fba149993140
|
|
4
|
+
Revises: 20a8ad264659
|
|
5
|
+
Create Date: 2025-02-19 02:19:27.407568
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from alembic import op
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
# revision identifiers, used by Alembic.
|
|
13
|
+
revision = "fba149993140"
|
|
14
|
+
down_revision = "20a8ad264659"
|
|
15
|
+
branch_labels = None
|
|
16
|
+
depends_on = None
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def upgrade():
|
|
20
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
21
|
+
with op.batch_alter_table("comment_preview_link", schema=None) as batch_op:
|
|
22
|
+
batch_op.create_index(
|
|
23
|
+
batch_op.f("ix_comment_preview_link_comment"),
|
|
24
|
+
["comment"],
|
|
25
|
+
unique=False,
|
|
26
|
+
)
|
|
27
|
+
batch_op.create_index(
|
|
28
|
+
batch_op.f("ix_comment_preview_link_preview_file"),
|
|
29
|
+
["preview_file"],
|
|
30
|
+
unique=False,
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
with op.batch_alter_table("project_person_link", schema=None) as batch_op:
|
|
34
|
+
batch_op.create_index(
|
|
35
|
+
batch_op.f("ix_project_person_link_person_id"),
|
|
36
|
+
["person_id"],
|
|
37
|
+
unique=False,
|
|
38
|
+
)
|
|
39
|
+
batch_op.create_index(
|
|
40
|
+
batch_op.f("ix_project_person_link_project_id"),
|
|
41
|
+
["project_id"],
|
|
42
|
+
unique=False,
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
with op.batch_alter_table(
|
|
46
|
+
"project_status_automation_link", schema=None
|
|
47
|
+
) as batch_op:
|
|
48
|
+
batch_op.create_index(
|
|
49
|
+
batch_op.f("ix_project_status_automation_link_project_id"),
|
|
50
|
+
["project_id"],
|
|
51
|
+
unique=False,
|
|
52
|
+
)
|
|
53
|
+
batch_op.create_index(
|
|
54
|
+
batch_op.f(
|
|
55
|
+
"ix_project_status_automation_link_status_automation_id"
|
|
56
|
+
),
|
|
57
|
+
["status_automation_id"],
|
|
58
|
+
unique=False,
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
with op.batch_alter_table(
|
|
62
|
+
"project_task_status_link", schema=None
|
|
63
|
+
) as batch_op:
|
|
64
|
+
batch_op.create_index(
|
|
65
|
+
batch_op.f("ix_project_task_status_link_project_id"),
|
|
66
|
+
["project_id"],
|
|
67
|
+
unique=False,
|
|
68
|
+
)
|
|
69
|
+
batch_op.create_index(
|
|
70
|
+
batch_op.f("ix_project_task_status_link_task_status_id"),
|
|
71
|
+
["task_status_id"],
|
|
72
|
+
unique=False,
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
with op.batch_alter_table(
|
|
76
|
+
"project_task_type_link", schema=None
|
|
77
|
+
) as batch_op:
|
|
78
|
+
batch_op.create_index(
|
|
79
|
+
batch_op.f("ix_project_task_type_link_project_id"),
|
|
80
|
+
["project_id"],
|
|
81
|
+
unique=False,
|
|
82
|
+
)
|
|
83
|
+
batch_op.create_index(
|
|
84
|
+
batch_op.f("ix_project_task_type_link_task_type_id"),
|
|
85
|
+
["task_type_id"],
|
|
86
|
+
unique=False,
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
# ### end Alembic commands ###
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def downgrade():
|
|
93
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
94
|
+
with op.batch_alter_table(
|
|
95
|
+
"project_task_type_link", schema=None
|
|
96
|
+
) as batch_op:
|
|
97
|
+
batch_op.drop_index(
|
|
98
|
+
batch_op.f("ix_project_task_type_link_task_type_id")
|
|
99
|
+
)
|
|
100
|
+
batch_op.drop_index(batch_op.f("ix_project_task_type_link_project_id"))
|
|
101
|
+
|
|
102
|
+
with op.batch_alter_table(
|
|
103
|
+
"project_task_status_link", schema=None
|
|
104
|
+
) as batch_op:
|
|
105
|
+
batch_op.drop_index(
|
|
106
|
+
batch_op.f("ix_project_task_status_link_task_status_id")
|
|
107
|
+
)
|
|
108
|
+
batch_op.drop_index(
|
|
109
|
+
batch_op.f("ix_project_task_status_link_project_id")
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
with op.batch_alter_table(
|
|
113
|
+
"project_status_automation_link", schema=None
|
|
114
|
+
) as batch_op:
|
|
115
|
+
batch_op.drop_index(
|
|
116
|
+
batch_op.f(
|
|
117
|
+
"ix_project_status_automation_link_status_automation_id"
|
|
118
|
+
)
|
|
119
|
+
)
|
|
120
|
+
batch_op.drop_index(
|
|
121
|
+
batch_op.f("ix_project_status_automation_link_project_id")
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
with op.batch_alter_table("project_person_link", schema=None) as batch_op:
|
|
125
|
+
batch_op.drop_index(batch_op.f("ix_project_person_link_project_id"))
|
|
126
|
+
batch_op.drop_index(batch_op.f("ix_project_person_link_person_id"))
|
|
127
|
+
|
|
128
|
+
with op.batch_alter_table("comment_preview_link", schema=None) as batch_op:
|
|
129
|
+
batch_op.drop_index(batch_op.f("ix_comment_preview_link_preview_file"))
|
|
130
|
+
batch_op.drop_index(batch_op.f("ix_comment_preview_link_comment"))
|
|
131
|
+
|
|
132
|
+
# ### end Alembic commands ###
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: zou
|
|
3
|
-
Version: 0.20.
|
|
3
|
+
Version: 0.20.18
|
|
4
4
|
Summary: API to store and manage the data of your animation production
|
|
5
5
|
Home-page: https://zou.cg-wire.com
|
|
6
6
|
Author: CG Wire
|
|
@@ -21,10 +21,9 @@ Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
|
21
21
|
Classifier: Topic :: Multimedia :: Graphics
|
|
22
22
|
Requires-Python: >=3.9, <3.14
|
|
23
23
|
License-File: LICENSE
|
|
24
|
-
Requires-Dist: audioop-lts==0.2.1; python_version >= "3.13"
|
|
25
24
|
Requires-Dist: babel==2.17.0
|
|
26
25
|
Requires-Dist: click==8.1.8
|
|
27
|
-
Requires-Dist: discord.py==2.
|
|
26
|
+
Requires-Dist: discord.py==2.5.0
|
|
28
27
|
Requires-Dist: email-validator==2.2.0
|
|
29
28
|
Requires-Dist: ffmpeg-python==0.2.0
|
|
30
29
|
Requires-Dist: fido2==1.2.0
|
|
@@ -41,7 +40,7 @@ Requires-Dist: flask-jwt-extended==4.7.1
|
|
|
41
40
|
Requires-Dist: flask-migrate==4.1.0
|
|
42
41
|
Requires-Dist: flask-socketio==5.5.1
|
|
43
42
|
Requires-Dist: flask==3.1.0
|
|
44
|
-
Requires-Dist: gazu==0.10.
|
|
43
|
+
Requires-Dist: gazu==0.10.28
|
|
45
44
|
Requires-Dist: gevent-websocket==0.10.1
|
|
46
45
|
Requires-Dist: gevent==24.11.1
|
|
47
46
|
Requires-Dist: gunicorn==23.0.0
|
|
@@ -50,18 +49,18 @@ Requires-Dist: itsdangerous==2.2.0
|
|
|
50
49
|
Requires-Dist: Jinja2==3.1.5
|
|
51
50
|
Requires-Dist: ldap3==2.9.1
|
|
52
51
|
Requires-Dist: matterhook==0.2
|
|
53
|
-
Requires-Dist: meilisearch==0.
|
|
52
|
+
Requires-Dist: meilisearch==0.34.0
|
|
54
53
|
Requires-Dist: numpy==2.0.1; python_version == "3.9"
|
|
55
|
-
Requires-Dist: numpy==2.2.
|
|
54
|
+
Requires-Dist: numpy==2.2.3; python_version >= "3.10"
|
|
56
55
|
Requires-Dist: opencv-python==4.11.0.86
|
|
57
56
|
Requires-Dist: OpenTimelineIO==0.17.0
|
|
58
57
|
Requires-Dist: OpenTimelineIO-Plugins==0.17.0
|
|
59
58
|
Requires-Dist: orjson==3.10.15
|
|
60
59
|
Requires-Dist: pillow==11.1.0
|
|
61
|
-
Requires-Dist: psutil==
|
|
60
|
+
Requires-Dist: psutil==7.0.0
|
|
62
61
|
Requires-Dist: psycopg[binary]==3.2.4
|
|
63
62
|
Requires-Dist: pyotp==2.9.0
|
|
64
|
-
Requires-Dist: pysaml2==7.5.
|
|
63
|
+
Requires-Dist: pysaml2==7.5.2
|
|
65
64
|
Requires-Dist: python-nomad==2.1.0
|
|
66
65
|
Requires-Dist: python-slugify==8.0.4
|
|
67
66
|
Requires-Dist: python-socketio==5.12.1
|
|
@@ -80,14 +79,14 @@ Requires-Dist: gevent; extra == "prod"
|
|
|
80
79
|
Provides-Extra: dev
|
|
81
80
|
Requires-Dist: wheel; extra == "dev"
|
|
82
81
|
Provides-Extra: test
|
|
83
|
-
Requires-Dist: fakeredis==2.
|
|
82
|
+
Requires-Dist: fakeredis==2.27.0; extra == "test"
|
|
84
83
|
Requires-Dist: mixer==7.2.2; extra == "test"
|
|
85
84
|
Requires-Dist: pytest-cov==6.0.0; extra == "test"
|
|
86
85
|
Requires-Dist: pytest==8.3.4; extra == "test"
|
|
87
86
|
Provides-Extra: monitoring
|
|
88
87
|
Requires-Dist: prometheus-flask-exporter==0.23.1; extra == "monitoring"
|
|
89
88
|
Requires-Dist: pygelf==0.4.2; extra == "monitoring"
|
|
90
|
-
Requires-Dist: sentry-sdk==2.
|
|
89
|
+
Requires-Dist: sentry-sdk==2.22.0; extra == "monitoring"
|
|
91
90
|
Provides-Extra: lint
|
|
92
91
|
Requires-Dist: autoflake==2.3.1; extra == "lint"
|
|
93
92
|
Requires-Dist: black==25.1.0; extra == "lint"
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
zou/__init__.py,sha256=
|
|
1
|
+
zou/__init__.py,sha256=oNL5wFOwj6vUybBQ_nAogGdRw6PlvL58pKDBW1mt5L0,24
|
|
2
2
|
zou/cli.py,sha256=8JyGrWm7-Ykshv5IBjwlBMn8JkFpHPCADChA9n8loTI,18755
|
|
3
3
|
zou/debug.py,sha256=1fawPbkD4wn0Y9Gk0BiBFSa-CQe5agFi8R9uJYl2Uyk,520
|
|
4
4
|
zou/event_stream.py,sha256=EpohqFJwWL0zs-Ic_W5dX5_XSDeCrqHQPL5Re39OnQ0,6382
|
|
5
5
|
zou/job_settings.py,sha256=_aqBhujt2Q8sXRWIbgbDf-LUdXRdBimdtTc-fZbiXoY,202
|
|
6
6
|
zou/app/__init__.py,sha256=zGmaBGBHSS_Px34I3_WZmcse62G_AZJArjm4F6TwmRk,7100
|
|
7
7
|
zou/app/api.py,sha256=JTB_IMVO8EOoyqx9KdRkiIix0chOLi0yGDY-verUJXA,5127
|
|
8
|
-
zou/app/config.py,sha256=
|
|
8
|
+
zou/app/config.py,sha256=eXVrmZf550Tk0fiN0Asfrhel0StesTDLTAYU6LdM3n4,6747
|
|
9
9
|
zou/app/mixin.py,sha256=eYwfS_CUFvNmldaQXrjsN5mK_gX0wYrBFykfx60uUM8,4897
|
|
10
10
|
zou/app/swagger.py,sha256=Jr7zsMqJi0V4FledODOdu-aqqVE02jMFzhqVxHK0_2c,54158
|
|
11
11
|
zou/app/blueprints/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -18,7 +18,7 @@ zou/app/blueprints/breakdown/resources.py,sha256=pmGlHLiXFsPRbxf403SiVgGiaBbtK8G
|
|
|
18
18
|
zou/app/blueprints/chats/__init__.py,sha256=YGmwGvddg3MgSYVIh-hmkX8t2em9_LblxBeJzFqFJD4,558
|
|
19
19
|
zou/app/blueprints/chats/resources.py,sha256=4yLFermdwOsnBLs9nx8yxuHWLar24uQWQy0XgsUNDD0,5950
|
|
20
20
|
zou/app/blueprints/comments/__init__.py,sha256=WqpJ7-_dK1cInGTFJAxQ7syZtPCotwq2oO20UEnk1h4,1532
|
|
21
|
-
zou/app/blueprints/comments/resources.py,sha256=
|
|
21
|
+
zou/app/blueprints/comments/resources.py,sha256=Jy20lMmdP-Zeg90P8-k-HQYfE83xW5DMK8B5WX5uFvs,18864
|
|
22
22
|
zou/app/blueprints/concepts/__init__.py,sha256=sP_P4mfYvfMcgeE6MHZYP3eD0Lz0Lwit5-CFuVnA-Jg,894
|
|
23
23
|
zou/app/blueprints/concepts/resources.py,sha256=maJNrBAWX0bKbDKtOZc3YFp4nTVtIdkkAA4H9WA9n1Y,10140
|
|
24
24
|
zou/app/blueprints/crud/__init__.py,sha256=qn7xkEh2EG0mPS_RBmm0GgYr0O1jnmI8ymXZnFWZCz8,8361
|
|
@@ -91,7 +91,7 @@ zou/app/blueprints/persons/resources.py,sha256=PfK6epzRn_kbqN6g9qYiH9XWStFlccTVC
|
|
|
91
91
|
zou/app/blueprints/playlists/__init__.py,sha256=vuEk1F3hFHsmuKWhdepMoLyOzmNKDn1YrjjfcaIz0lQ,1596
|
|
92
92
|
zou/app/blueprints/playlists/resources.py,sha256=alRlMHypUFErXLsEYxpFK84cdjFJ3YWwamZtW0KcwLY,17211
|
|
93
93
|
zou/app/blueprints/previews/__init__.py,sha256=ihC6OQ9AUjnZ2JeMnjRh_tKGO0UmAjOwhZnOivc3BnQ,4460
|
|
94
|
-
zou/app/blueprints/previews/resources.py,sha256=
|
|
94
|
+
zou/app/blueprints/previews/resources.py,sha256=gEOPfX47HEfcEHRS-gmF5Ui1ASaxoVt64WNvtLwcPXU,53614
|
|
95
95
|
zou/app/blueprints/projects/__init__.py,sha256=Pn3fA5bpNFEPBzxTKJ2foV6osZFflXXSM2l2uZh3ktM,3927
|
|
96
96
|
zou/app/blueprints/projects/resources.py,sha256=1WBS2FyaY1RSA_T-BdPnc8X9myjTJ127bMDigyoAklk,31979
|
|
97
97
|
zou/app/blueprints/search/__init__.py,sha256=QCjQIY_85l_orhdEiqav_GifjReuwsjZggN3V0GeUVY,356
|
|
@@ -141,7 +141,7 @@ zou/app/models/base.py,sha256=vZoPzdixyRbk0SoDJGEbQ9LFouBaDCA7gVSZ1o_SIhI,8808
|
|
|
141
141
|
zou/app/models/build_job.py,sha256=aW6KZXkyMP9d3g8fvcOYk9EAoNMw-6IleZdWbaqLLVw,1286
|
|
142
142
|
zou/app/models/chat.py,sha256=u-IZB67IYlMMoPooFSKJX2kpXFdshlmRKf7UuwAcA6c,1273
|
|
143
143
|
zou/app/models/chat_message.py,sha256=8w7xtoqCW_CRoGKrF4ba5w-oyAHIRh-2ms3p5sQQor4,874
|
|
144
|
-
zou/app/models/comment.py,sha256=
|
|
144
|
+
zou/app/models/comment.py,sha256=2DkzSFwlhqibRmiti3z_GbtxObHMnxRNWel9xsE4uoo,5897
|
|
145
145
|
zou/app/models/custom_action.py,sha256=wx5ASKJ2oG-ivASZbVf1nLiL7zELgQBJ8U1jDdvGkuU,578
|
|
146
146
|
zou/app/models/data_import_error.py,sha256=dCyzaX0KATa0F8h5V3sTPlXz-XNl1VNkflRfJuaCmsg,425
|
|
147
147
|
zou/app/models/day_off.py,sha256=WMZs7oMhUBpMnNyvhgpl1j6egZ5J0drnrF1dH3N5cII,691
|
|
@@ -163,7 +163,7 @@ zou/app/models/person.py,sha256=txHmSzokaS-tET_MIjGHxhNNS8CPt-GzUPIhp5baDmU,7714
|
|
|
163
163
|
zou/app/models/playlist.py,sha256=YGgAk84u0_fdIEY02Dal4kfk8APVZvWFwWYV74qvrio,1503
|
|
164
164
|
zou/app/models/preview_background_file.py,sha256=j8LgRmY7INnlB07hFwwB-8ssQrRC8vsb8VcpsTbt6tA,559
|
|
165
165
|
zou/app/models/preview_file.py,sha256=eDPXw0QIdJze_E4kAS8SsyabrefWhIIdwuGmjss7iXo,3282
|
|
166
|
-
zou/app/models/project.py,sha256=
|
|
166
|
+
zou/app/models/project.py,sha256=m9Rhlfa8K21-xuNJUIadaYGuj5hMnC0yzJcxXcqoCsE,9162
|
|
167
167
|
zou/app/models/project_status.py,sha256=pExaHH7x4Eu8xOqD3_mRRbMzjT2jJZ8rm-9jo7yUGXA,390
|
|
168
168
|
zou/app/models/schedule_item.py,sha256=coY5uDDuBoctaMICnfCzx4zT5om2E1uu4iq5MDWAPlY,1444
|
|
169
169
|
zou/app/models/search_filter.py,sha256=Q699mJa3GGwFEva93Y_nHiIcx3BDht9VsAe2zeQL0FA,1242
|
|
@@ -179,7 +179,7 @@ zou/app/models/task_type.py,sha256=IsixVAfz3pyMf0eQw8x-uFNM9OHNkZpsPLEz_VNQ0hA,1
|
|
|
179
179
|
zou/app/models/time_spent.py,sha256=n7i3FO9g1eE_zATkItoCgrGVqq3iMSfdlKSveEZPloc,795
|
|
180
180
|
zou/app/models/working_file.py,sha256=q0LM3s1ziw_9AmmPDCkwyf1-TJkWTBMgo2LdHyVRwxg,1509
|
|
181
181
|
zou/app/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
182
|
-
zou/app/services/assets_service.py,sha256=
|
|
182
|
+
zou/app/services/assets_service.py,sha256=Hj1dznCFM86HxAIRIRXEcGwI9lCtYpzurhusVqOVrMc,24139
|
|
183
183
|
zou/app/services/auth_service.py,sha256=hQpNb21xlr5EiTrXnzpFb4W4GDtglubqA2z_-YIBfnk,22897
|
|
184
184
|
zou/app/services/backup_service.py,sha256=_ZtZp6wkcVYnHxBosziwLGdrTvsUttXGphiydq53iy8,4840
|
|
185
185
|
zou/app/services/base_service.py,sha256=OZd0STFh-DyBBdwsmA7DMMnrwv4C8wJUbShvZ1isndU,1383
|
|
@@ -189,9 +189,9 @@ zou/app/services/comments_service.py,sha256=dEZ4Y4NQRGtCDnChlZp3VtF02noSPqXPT4yJ
|
|
|
189
189
|
zou/app/services/concepts_service.py,sha256=sXzMPQ5Rav-c_36CBxdDBjKNq0-gaLWFY9QZGy3jjv4,11252
|
|
190
190
|
zou/app/services/custom_actions_service.py,sha256=fWISEOOdthadrxeHuacEel5Xj6msn0yWXJQDG1gzvsY,297
|
|
191
191
|
zou/app/services/deletion_service.py,sha256=GdPWmw60_EmWxJohvqQ9KRcION7_PIdQgbl7nr2g2mY,17429
|
|
192
|
-
zou/app/services/edits_service.py,sha256=
|
|
192
|
+
zou/app/services/edits_service.py,sha256=P3-eBoHSikYjtuHeulTv_WuILEe502sU4qFObfokcQY,12114
|
|
193
193
|
zou/app/services/emails_service.py,sha256=i9EP3zw02ZteVt9OZTvkfaoU19_T4kLhRmrhIvYw2SQ,11965
|
|
194
|
-
zou/app/services/entities_service.py,sha256=
|
|
194
|
+
zou/app/services/entities_service.py,sha256=c-AnoHkro_Bw-6156m85qg96VpdI6Ox-sv0xL1d_TTU,16903
|
|
195
195
|
zou/app/services/events_service.py,sha256=Ew-bY5hqrWLmpbVj1_xd3E2S3JtyAGzdgw2XjudTZjc,2700
|
|
196
196
|
zou/app/services/exception.py,sha256=mcDVjWGICMIlOi4nsN2EQ7nc3V70rAC-iCmXt6kOXbA,4240
|
|
197
197
|
zou/app/services/file_tree_service.py,sha256=8JNBDgnXtV-AmSJ3gnUGB4oSwLjPgi1WYyL0Kc98JRE,33875
|
|
@@ -206,14 +206,14 @@ zou/app/services/preview_files_service.py,sha256=Yk-vwzHuKTzNkEZfl9DhQRdDuRU006u
|
|
|
206
206
|
zou/app/services/projects_service.py,sha256=aIbYaFomy7OX2Pxvkf9w5qauDvkjuc9ummSGNYIpQMY,21249
|
|
207
207
|
zou/app/services/scenes_service.py,sha256=iXN19HU4njPF5VtZXuUrVJ-W23ZQuQNPC3ADXltbWtU,992
|
|
208
208
|
zou/app/services/schedule_service.py,sha256=E99HKYsXgnK2sw58fw-NNHXWBgVJiA60upztjkNSCaM,6989
|
|
209
|
-
zou/app/services/shots_service.py,sha256=
|
|
209
|
+
zou/app/services/shots_service.py,sha256=JEBywQGSKz1R7uXM8wtQQebMhWQZbGrWmTS5nOyn_Js,52191
|
|
210
210
|
zou/app/services/stats_service.py,sha256=cAlc92i9d6eYtsuwe3hYHYwdytg8KEMi1-TADfysJwM,11733
|
|
211
211
|
zou/app/services/status_automations_service.py,sha256=tVio7Sj7inhvKS4UOyRhcdpwr_KNP96hT1o0X7XcGF4,715
|
|
212
212
|
zou/app/services/sync_service.py,sha256=kJ1LGMNfPh9_BDwGTfoYWHrLZ8OlT0hWk-R8wNt0t3w,41562
|
|
213
|
-
zou/app/services/tasks_service.py,sha256=
|
|
213
|
+
zou/app/services/tasks_service.py,sha256=7tOZLSKB26Jj9N6hl02vmJAzeq9uV121B4Mf3IVBEm4,68530
|
|
214
214
|
zou/app/services/telemetry_services.py,sha256=xQm1h1t_JxSFW59zQGf4NuNdUi1UfMa_6pQ-ytRbmGA,1029
|
|
215
215
|
zou/app/services/time_spents_service.py,sha256=H9X-60s6oqtY9rtU-K2jKwUSljfkdGlf_9wMr3iVfIA,15158
|
|
216
|
-
zou/app/services/user_service.py,sha256=
|
|
216
|
+
zou/app/services/user_service.py,sha256=74gi_ao4gQenmN95Yf2aRmVyTFTJ8TIZO3joov2SNJ4,50346
|
|
217
217
|
zou/app/stores/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
218
218
|
zou/app/stores/auth_tokens_store.py,sha256=-qOJPybLHvnMOq3PWk073OW9HJwOHGhFLZeOIlX1UVw,1290
|
|
219
219
|
zou/app/stores/file_store.py,sha256=yLQDM6mNbj9oe0vsWdBqun7D8Dw-eSjD1yHCCftX0OI,4045
|
|
@@ -235,10 +235,10 @@ zou/app/utils/events.py,sha256=a_W70v0Oi4QJwJzCLVUQ8RTwjlWo-VzAT_hQZCz2HQU,3024
|
|
|
235
235
|
zou/app/utils/fido.py,sha256=qhUWZdDCvgWqydYS4DN1SVkNwdAQkRSV9zs0Xw9O15E,536
|
|
236
236
|
zou/app/utils/fields.py,sha256=uZbKRqeG5_SmbOu3K0W-i-KmlTI1Y7X4rlKcVnu4DzI,3475
|
|
237
237
|
zou/app/utils/flask.py,sha256=t0sC6yEDyzn-vCsijWzI9lpNWoxAYWfui25QtjQi_64,1822
|
|
238
|
-
zou/app/utils/fs.py,sha256=
|
|
238
|
+
zou/app/utils/fs.py,sha256=EIRfKJXtHubVVi8FlDd9s9TcUok91LvRgU0l_B3Fq3w,3356
|
|
239
239
|
zou/app/utils/git.py,sha256=MhmAYvEY-bXsnLvcHUW_NY5V636lJL3H-cdNrTHgLGk,114
|
|
240
240
|
zou/app/utils/logs.py,sha256=lB6kyFmeANxCILUULLqGN8fuq9IY5FcbrVWmLdqWs2U,1404
|
|
241
|
-
zou/app/utils/monitoring.py,sha256=
|
|
241
|
+
zou/app/utils/monitoring.py,sha256=XCpl0QshKD_tSok1vrIu9lB97JsvKLhvxJo3UyeqEoQ,2153
|
|
242
242
|
zou/app/utils/permissions.py,sha256=Oq91C_lN6aGVCtCVUqQhijMQEjXOiMezbngpjybzzQk,3426
|
|
243
243
|
zou/app/utils/query.py,sha256=q8ETGPAqnz0Pt9xWoQt5o7FFAVYUKVCJiWpwefIr-iU,4592
|
|
244
244
|
zou/app/utils/redis.py,sha256=xXEh9pl-3qPbr89dKHvcXSUTC6hd77vv_N8PVcRRZTE,377
|
|
@@ -406,6 +406,7 @@ zou/migrations/versions/f874ad5e898a_add_link_entity_type_task_type.py,sha256=QI
|
|
|
406
406
|
zou/migrations/versions/f995b28fb749_.py,sha256=YFshxpF-CRpMkSpYm-n2xCeE_q-Dow0nbqTLPGkkJBc,959
|
|
407
407
|
zou/migrations/versions/fb6b6f188497_.py,sha256=-LSlab37yRW7EHloDuCTOgtCXnII6IcubZtgom_iJUA,1003
|
|
408
408
|
zou/migrations/versions/fb87feaaa094_add_missing_unique_constraints.py,sha256=37v2puXZ6F60I-qYMOHvLWyPjNmE30MBNuqMAoTp6TI,934
|
|
409
|
+
zou/migrations/versions/fba149993140_add_missing_index.py,sha256=Tj_5aweXlp61xNzp7bxSTlxCqqV-io7NeV6_CodKMls,4062
|
|
409
410
|
zou/migrations/versions/fc322f908695_.py,sha256=KT3BfEVbbvlMDvC_tP2Y96fh9v3TjxOSldjCCLHTw9w,704
|
|
410
411
|
zou/migrations/versions/fee7c696166e_.py,sha256=jVvkr0uY5JPtC_I9h18DELo_eRu99RdOYMtEcaUnNXc,1839
|
|
411
412
|
zou/migrations/versions/feffd3c5b806_introduce_concepts.py,sha256=wFNAtTTDHa01AdoXhRDayCVdB33stUFn6whc3opg2vQ,4774
|
|
@@ -416,9 +417,9 @@ zou/remote/normalize_movie.py,sha256=zNfEY3N1UbAHZfddGONTg2Sff3ieLVWd4dfZa1dpnes
|
|
|
416
417
|
zou/remote/playlist.py,sha256=AsDo0bgYhDcd6DfNRV6r6Jj3URWwavE2ZN3VkKRPbLU,3293
|
|
417
418
|
zou/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
418
419
|
zou/utils/movie.py,sha256=d67fIL9dVBKt-E_qCGXRbNNdbJaJR5sHvZeX3hf8ldE,16559
|
|
419
|
-
zou-0.20.
|
|
420
|
-
zou-0.20.
|
|
421
|
-
zou-0.20.
|
|
422
|
-
zou-0.20.
|
|
423
|
-
zou-0.20.
|
|
424
|
-
zou-0.20.
|
|
420
|
+
zou-0.20.18.dist-info/LICENSE,sha256=dql8h4yceoMhuzlcK0TT_i-NgTFNIZsgE47Q4t3dUYI,34520
|
|
421
|
+
zou-0.20.18.dist-info/METADATA,sha256=Isa3DGGFp6qYjXcCd_ZqcGv4rPE4xeJ3kIjajg9d6LI,6673
|
|
422
|
+
zou-0.20.18.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
|
423
|
+
zou-0.20.18.dist-info/entry_points.txt,sha256=PelQoIx3qhQ_Tmne7wrLY-1m2izuzgpwokoURwSohy4,130
|
|
424
|
+
zou-0.20.18.dist-info/top_level.txt,sha256=4S7G_jk4MzpToeDItHGjPhHx_fRdX52zJZWTD4SL54g,4
|
|
425
|
+
zou-0.20.18.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|