zou 0.20.17__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 CHANGED
@@ -1 +1 @@
1
- __version__ = "0.20.17"
1
+ __version__ = "0.20.18"
zou/app/config.py CHANGED
@@ -142,7 +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", True)
145
+ LOG_FILE_NOT_FOUND = envtobool("LOG_FILE_NOT_FOUND", False)
146
146
 
147
147
  SENTRY_ENABLED = envtobool("SENTRY_ENABLED", False)
148
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
- preview_link_table = db.Table(
10
- "comment_preview_link",
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
- db.Column(
18
- "preview_file",
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", secondary=preview_link_table, backref="comments"
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), db.ForeignKey("project.id"), primary_key=True
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), db.ForeignKey("person.id"), primary_key=True
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), db.ForeignKey("project.id"), primary_key=True
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), db.ForeignKey("task_type.id"), primary_key=True
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), db.ForeignKey("project.id"), primary_key=True
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), db.ForeignKey("project.id"), primary_key=True
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
- preview_link_table,
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(preview_link_table)
690
- .filter(preview_link_table.c.comment.in_(comment_ids))
691
- .add_columns(preview_link_table.c.comment)
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)
@@ -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.17
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.4.0
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.27
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,7 +49,7 @@ 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.33.1
52
+ Requires-Dist: meilisearch==0.34.0
54
53
  Requires-Dist: numpy==2.0.1; python_version == "3.9"
55
54
  Requires-Dist: numpy==2.2.3; python_version >= "3.10"
56
55
  Requires-Dist: opencv-python==4.11.0.86
@@ -87,7 +86,7 @@ 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.21.0; extra == "monitoring"
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=eM75ih3rRMeRs2KAFT1C-wtFC_fhUYsPhS2X2Aa8ILk,24
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=qHf5txUICLVbzQH1dTKrrUU1pVzgpevNu27DbJPP0vg,6746
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
@@ -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=sJxLnMNhdgvqm_nlcaRauxsMgFUQyMLxcCK8JkeJQJE,5875
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=T2gTImmbd5O-U5GySWSwzkR0r_cY2RDr1niwSfOPqeA,8900
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=VSGZp2EtFZzaqaT_ysOSDAmnYcp1UYdhY1-WlISxvl8,23987
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=lQck7U9JYRWRqukwTT6ZBWCP0BpoF3XlPPwmEgtUvSM,11965
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=5Mj3YIHrh6WqRxFrAHsNbYms5ienJ2304escX7-F8LY,16754
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,11 +206,11 @@ 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=4H81Tf6twY4s9Ac9_MCX_4bdW75m30TaKrR0tLiQf9s,52042
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=6lJHxVAQ0dxHdO8_2PaVqLwy87s44kvLRj6S9dw-Bvs,68534
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
216
  zou/app/services/user_service.py,sha256=74gi_ao4gQenmN95Yf2aRmVyTFTJ8TIZO3joov2SNJ4,50346
@@ -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.17.dist-info/LICENSE,sha256=dql8h4yceoMhuzlcK0TT_i-NgTFNIZsgE47Q4t3dUYI,34520
420
- zou-0.20.17.dist-info/METADATA,sha256=lkJtGd3fG9hUuzaxsrEAsG7_CvPPOcSwwTgA95p83bI,6733
421
- zou-0.20.17.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
422
- zou-0.20.17.dist-info/entry_points.txt,sha256=PelQoIx3qhQ_Tmne7wrLY-1m2izuzgpwokoURwSohy4,130
423
- zou-0.20.17.dist-info/top_level.txt,sha256=4S7G_jk4MzpToeDItHGjPhHx_fRdX52zJZWTD4SL54g,4
424
- zou-0.20.17.dist-info/RECORD,,
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