zou 0.20.68__py3-none-any.whl → 0.20.70__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 +21 -8
- zou/app/blueprints/shots/resources.py +124 -72
- zou/app/blueprints/tasks/resources.py +1 -1
- zou/app/models/attachment_file.py +4 -0
- zou/app/services/comments_service.py +42 -9
- zou/app/services/tasks_service.py +1 -0
- zou/migrations/versions/1b0ab951adca_add_reply_id_to_attachments.py +44 -0
- {zou-0.20.68.dist-info → zou-0.20.70.dist-info}/METADATA +4 -4
- {zou-0.20.68.dist-info → zou-0.20.70.dist-info}/RECORD +14 -13
- {zou-0.20.68.dist-info → zou-0.20.70.dist-info}/WHEEL +0 -0
- {zou-0.20.68.dist-info → zou-0.20.70.dist-info}/entry_points.txt +0 -0
- {zou-0.20.68.dist-info → zou-0.20.70.dist-info}/licenses/LICENSE +0 -0
- {zou-0.20.68.dist-info → zou-0.20.70.dist-info}/top_level.txt +0 -0
zou/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "0.20.
|
|
1
|
+
__version__ = "0.20.70"
|
|
@@ -322,6 +322,13 @@ class AddAttachmentToCommentResource(Resource):
|
|
|
322
322
|
type: string
|
|
323
323
|
format: uuid
|
|
324
324
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
325
|
+
- in: formData
|
|
326
|
+
name: reply_id
|
|
327
|
+
type: uuid
|
|
328
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
329
|
+
required: True
|
|
330
|
+
format: uuid
|
|
331
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
325
332
|
- in: formData
|
|
326
333
|
name: files
|
|
327
334
|
type: file
|
|
@@ -337,7 +344,9 @@ class AddAttachmentToCommentResource(Resource):
|
|
|
337
344
|
user_service.check_manager_project_access(task["project_id"])
|
|
338
345
|
|
|
339
346
|
files = request.files
|
|
340
|
-
comment = comments_service.add_attachments_to_comment(
|
|
347
|
+
comment = comments_service.add_attachments_to_comment(
|
|
348
|
+
comment, files, reply_id=None
|
|
349
|
+
)
|
|
341
350
|
return comment["attachment_files"], 201
|
|
342
351
|
|
|
343
352
|
|
|
@@ -487,12 +496,6 @@ class ReplyCommentResource(Resource, ArgsMixin):
|
|
|
487
496
|
200:
|
|
488
497
|
description: Reply to given comment
|
|
489
498
|
"""
|
|
490
|
-
args = self.get_args(
|
|
491
|
-
[
|
|
492
|
-
("text", "", False),
|
|
493
|
-
]
|
|
494
|
-
)
|
|
495
|
-
|
|
496
499
|
comment = tasks_service.get_comment(comment_id)
|
|
497
500
|
current_user = persons_service.get_current_user()
|
|
498
501
|
if comment["person_id"] != current_user["id"]:
|
|
@@ -500,7 +503,17 @@ class ReplyCommentResource(Resource, ArgsMixin):
|
|
|
500
503
|
raise permissions.PermissionDenied()
|
|
501
504
|
user_service.check_task_action_access(task_id)
|
|
502
505
|
|
|
503
|
-
|
|
506
|
+
args = self.get_args(
|
|
507
|
+
[
|
|
508
|
+
("text", "", False),
|
|
509
|
+
]
|
|
510
|
+
)
|
|
511
|
+
files = request.files
|
|
512
|
+
return comments_service.reply_comment(
|
|
513
|
+
comment_id,
|
|
514
|
+
args["text"],
|
|
515
|
+
files=files
|
|
516
|
+
)
|
|
504
517
|
|
|
505
518
|
|
|
506
519
|
class DeleteReplyCommentResource(Resource):
|
|
@@ -64,10 +64,13 @@ class ShotResource(Resource, ArgsMixin):
|
|
|
64
64
|
type: string
|
|
65
65
|
format: uuid
|
|
66
66
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
67
|
+
requestBody:
|
|
68
|
+
required: true
|
|
69
|
+
content:
|
|
70
|
+
application/json:
|
|
71
|
+
schema:
|
|
72
|
+
type: object
|
|
73
|
+
description: Shot data to update
|
|
71
74
|
responses:
|
|
72
75
|
200:
|
|
73
76
|
description: Update given shot
|
|
@@ -711,23 +714,32 @@ class ProjectShotsResource(Resource, ArgsMixin):
|
|
|
711
714
|
type: string
|
|
712
715
|
format: uuid
|
|
713
716
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
717
|
+
requestBody:
|
|
718
|
+
required: true
|
|
719
|
+
content:
|
|
720
|
+
application/json:
|
|
721
|
+
schema:
|
|
722
|
+
type: object
|
|
723
|
+
required:
|
|
724
|
+
- name
|
|
725
|
+
properties:
|
|
726
|
+
name:
|
|
727
|
+
type: string
|
|
728
|
+
required: true
|
|
729
|
+
example: "Name of shot"
|
|
730
|
+
description:
|
|
731
|
+
type: string
|
|
732
|
+
required: false
|
|
733
|
+
example: "Description of shot"
|
|
734
|
+
sequence_id:
|
|
735
|
+
type: string
|
|
736
|
+
format: uuid
|
|
737
|
+
required: false
|
|
738
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
739
|
+
nb_frames:
|
|
740
|
+
type: integer
|
|
741
|
+
required: false
|
|
742
|
+
example: 24
|
|
731
743
|
responses:
|
|
732
744
|
201:
|
|
733
745
|
description: Shot created for given project
|
|
@@ -812,16 +824,24 @@ class ProjectSequencesResource(Resource, ArgsMixin):
|
|
|
812
824
|
type: string
|
|
813
825
|
format: uuid
|
|
814
826
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
827
|
+
requestBody:
|
|
828
|
+
required: true
|
|
829
|
+
content:
|
|
830
|
+
application/json:
|
|
831
|
+
schema:
|
|
832
|
+
type: object
|
|
833
|
+
required:
|
|
834
|
+
- name
|
|
835
|
+
properties:
|
|
836
|
+
name:
|
|
837
|
+
type: string
|
|
838
|
+
required: true
|
|
839
|
+
example: "Name of sequence"
|
|
840
|
+
episode_id:
|
|
841
|
+
type: string
|
|
842
|
+
format: uuid
|
|
843
|
+
required: false
|
|
844
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
825
845
|
responses:
|
|
826
846
|
201:
|
|
827
847
|
description: Sequence created for given project
|
|
@@ -896,16 +916,24 @@ class ProjectEpisodesResource(Resource, ArgsMixin):
|
|
|
896
916
|
type: string
|
|
897
917
|
format: uuid
|
|
898
918
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
919
|
+
requestBody:
|
|
920
|
+
required: true
|
|
921
|
+
content:
|
|
922
|
+
application/json:
|
|
923
|
+
schema:
|
|
924
|
+
type: object
|
|
925
|
+
required:
|
|
926
|
+
- name
|
|
927
|
+
- description
|
|
928
|
+
properties:
|
|
929
|
+
name:
|
|
930
|
+
type: string
|
|
931
|
+
required: true
|
|
932
|
+
example: "Name of the episode"
|
|
933
|
+
description:
|
|
934
|
+
type: string
|
|
935
|
+
required: true
|
|
936
|
+
example: "Description of the episode"
|
|
909
937
|
responses:
|
|
910
938
|
201:
|
|
911
939
|
description: Episode created for given project
|
|
@@ -1309,17 +1337,25 @@ class ProjectScenesResource(Resource, ArgsMixin):
|
|
|
1309
1337
|
type: string
|
|
1310
1338
|
format: uuid
|
|
1311
1339
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1340
|
+
requestBody:
|
|
1341
|
+
required: true
|
|
1342
|
+
content:
|
|
1343
|
+
application/json:
|
|
1344
|
+
schema:
|
|
1345
|
+
type: object
|
|
1346
|
+
required:
|
|
1347
|
+
- name
|
|
1348
|
+
- sequence_id
|
|
1349
|
+
properties:
|
|
1350
|
+
name:
|
|
1351
|
+
type: string
|
|
1352
|
+
required: true
|
|
1353
|
+
example: "Name of scene"
|
|
1354
|
+
sequence_id:
|
|
1355
|
+
type: string
|
|
1356
|
+
format: uuid
|
|
1357
|
+
required: true
|
|
1358
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
1323
1359
|
responses:
|
|
1324
1360
|
201:
|
|
1325
1361
|
description: Scene created for given project
|
|
@@ -1453,11 +1489,20 @@ class SceneShotsResource(Resource, ArgsMixin):
|
|
|
1453
1489
|
type: string
|
|
1454
1490
|
format: uuid
|
|
1455
1491
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1492
|
+
requestBody:
|
|
1493
|
+
required: true
|
|
1494
|
+
content:
|
|
1495
|
+
application/json:
|
|
1496
|
+
schema:
|
|
1497
|
+
type: object
|
|
1498
|
+
required:
|
|
1499
|
+
- shot_id
|
|
1500
|
+
properties:
|
|
1501
|
+
shot_id:
|
|
1502
|
+
type: string
|
|
1503
|
+
format: uuid
|
|
1504
|
+
required: true
|
|
1505
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
1461
1506
|
responses:
|
|
1462
1507
|
200:
|
|
1463
1508
|
description: Given scene marked as source of given shot
|
|
@@ -1696,21 +1741,28 @@ class SetShotsFramesResource(Resource, ArgsMixin):
|
|
|
1696
1741
|
---
|
|
1697
1742
|
tags:
|
|
1698
1743
|
- Shots
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1744
|
+
requestBody:
|
|
1745
|
+
required: true
|
|
1746
|
+
content:
|
|
1747
|
+
application/json:
|
|
1748
|
+
schema:
|
|
1749
|
+
type: object
|
|
1750
|
+
required:
|
|
1751
|
+
- shots
|
|
1752
|
+
properties:
|
|
1753
|
+
shots:
|
|
1754
|
+
type: array
|
|
1755
|
+
required: true
|
|
1756
|
+
items:
|
|
1757
|
+
type: object
|
|
1758
|
+
properties:
|
|
1759
|
+
shot_id:
|
|
1760
|
+
type: string
|
|
1761
|
+
format: uuid
|
|
1762
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
1763
|
+
nb_frames:
|
|
1764
|
+
type: integer
|
|
1765
|
+
example: 24
|
|
1714
1766
|
responses:
|
|
1715
1767
|
200:
|
|
1716
1768
|
description: Frames set for given shots
|
|
@@ -1625,7 +1625,7 @@ class PersonsTasksDatesResource(Resource, ArgsMixin):
|
|
|
1625
1625
|
description: For each person, the first start date of all tasks of assigned to this person and the last end date.
|
|
1626
1626
|
"""
|
|
1627
1627
|
permissions.check_admin_permissions()
|
|
1628
|
-
args = self.get_args([("project_id", None,
|
|
1628
|
+
args = self.get_args([("project_id", None, False, str)])
|
|
1629
1629
|
return tasks_service.get_persons_tasks_dates(
|
|
1630
1630
|
project_id=args["project_id"]
|
|
1631
1631
|
)
|
|
@@ -21,6 +21,10 @@ class AttachmentFile(db.Model, BaseMixin, SerializerMixin):
|
|
|
21
21
|
index=True,
|
|
22
22
|
nullable=True,
|
|
23
23
|
)
|
|
24
|
+
reply_id = db.Column(
|
|
25
|
+
UUIDType(binary=False),
|
|
26
|
+
nullable=True,
|
|
27
|
+
)
|
|
24
28
|
chat_message_id = db.Column(
|
|
25
29
|
UUIDType(binary=False),
|
|
26
30
|
db.ForeignKey("chat_message.id"),
|
|
@@ -19,6 +19,7 @@ from zou.app.services import (
|
|
|
19
19
|
assets_service,
|
|
20
20
|
base_service,
|
|
21
21
|
breakdown_service,
|
|
22
|
+
deletion_service,
|
|
22
23
|
entities_service,
|
|
23
24
|
news_service,
|
|
24
25
|
notifications_service,
|
|
@@ -355,7 +356,7 @@ def reset_mentions(comment):
|
|
|
355
356
|
return comment_dict
|
|
356
357
|
|
|
357
358
|
|
|
358
|
-
def create_attachment(comment, uploaded_file, randomize=False):
|
|
359
|
+
def create_attachment(comment, uploaded_file, randomize=False, reply_id=None):
|
|
359
360
|
tmp_folder = current_app.config["TMP_DIR"]
|
|
360
361
|
filename = uploaded_file.filename
|
|
361
362
|
mimetype = uploaded_file.mimetype
|
|
@@ -366,11 +367,19 @@ def create_attachment(comment, uploaded_file, randomize=False):
|
|
|
366
367
|
filename = f"{filename[:len(filename) - len(extension) - 1]}"
|
|
367
368
|
filename += f"-{random_str}.{extension}"
|
|
368
369
|
|
|
370
|
+
if reply_id is not None:
|
|
371
|
+
is_reply_present = any(
|
|
372
|
+
reply["id"] == reply_id for reply in comment.get("replies", [])
|
|
373
|
+
)
|
|
374
|
+
if not is_reply_present:
|
|
375
|
+
reply_id = None
|
|
376
|
+
|
|
369
377
|
attachment_file = AttachmentFile.create(
|
|
370
378
|
name=filename,
|
|
371
379
|
size=0,
|
|
372
380
|
extension=extension,
|
|
373
381
|
mimetype=mimetype,
|
|
382
|
+
reply_id=reply_id,
|
|
374
383
|
comment_id=comment["id"],
|
|
375
384
|
)
|
|
376
385
|
attachment_file_id = str(attachment_file.id)
|
|
@@ -455,7 +464,7 @@ def _send_ack_event(project_id, comment, user_id, name="acknowledge"):
|
|
|
455
464
|
)
|
|
456
465
|
|
|
457
466
|
|
|
458
|
-
def reply_comment(comment_id, text, person_id=None):
|
|
467
|
+
def reply_comment(comment_id, text, person_id=None, files={}):
|
|
459
468
|
"""
|
|
460
469
|
Add a reply entry to the JSONB field of given comment model. Create
|
|
461
470
|
notifications needed for this.
|
|
@@ -469,6 +478,7 @@ def reply_comment(comment_id, text, person_id=None):
|
|
|
469
478
|
task = tasks_service.get_task(comment.object_id, relations=True)
|
|
470
479
|
if comment.replies is None:
|
|
471
480
|
comment.replies = []
|
|
481
|
+
|
|
472
482
|
reply = {
|
|
473
483
|
"id": str(fields.gen_uuid()),
|
|
474
484
|
"date": date_helpers.get_now(),
|
|
@@ -483,18 +493,27 @@ def reply_comment(comment_id, text, person_id=None):
|
|
|
483
493
|
replies = list(comment.replies)
|
|
484
494
|
replies.append(reply)
|
|
485
495
|
comment.update({"replies": replies})
|
|
496
|
+
if len(files.keys()) > 0:
|
|
497
|
+
comment = comment.serialize(relations=True)
|
|
498
|
+
new_attachment_files = add_attachments_to_comment(
|
|
499
|
+
comment, files, reply_id=reply["id"]
|
|
500
|
+
)
|
|
501
|
+
for new_attachment_file in new_attachment_files:
|
|
502
|
+
new_attachment_file["reply_id"] = reply["id"]
|
|
503
|
+
reply["attachment_files"] = new_attachment_files
|
|
486
504
|
tasks_service.clear_comment_cache(comment_id)
|
|
505
|
+
comment = comment.serialize(relations=True)
|
|
487
506
|
events.emit(
|
|
488
507
|
"comment:reply",
|
|
489
508
|
{
|
|
490
509
|
"task_id": task["id"],
|
|
491
|
-
"comment_id":
|
|
510
|
+
"comment_id": comment,
|
|
492
511
|
"reply_id": reply["id"],
|
|
493
512
|
},
|
|
494
513
|
project_id=task["project_id"],
|
|
495
514
|
)
|
|
496
515
|
notifications_service.create_notifications_for_task_and_reply(
|
|
497
|
-
task, comment
|
|
516
|
+
task, comment, reply
|
|
498
517
|
)
|
|
499
518
|
return reply
|
|
500
519
|
|
|
@@ -508,6 +527,14 @@ def get_reply(comment_id, reply_id):
|
|
|
508
527
|
def delete_reply(comment_id, reply_id):
|
|
509
528
|
comment = tasks_service.get_comment_raw(comment_id)
|
|
510
529
|
task = tasks_service.get_task(comment.object_id)
|
|
530
|
+
|
|
531
|
+
if comment.attachment_files is None:
|
|
532
|
+
comment.attachment_files = []
|
|
533
|
+
for attachment_file in comment.attachment_files:
|
|
534
|
+
if attachment_file.reply_id == reply_id:
|
|
535
|
+
deletion_service.remove_attachment_file_by_id(
|
|
536
|
+
attachment_file["id"]
|
|
537
|
+
)
|
|
511
538
|
if comment.replies is None:
|
|
512
539
|
comment.replies = []
|
|
513
540
|
comment.replies = [
|
|
@@ -567,19 +594,25 @@ def get_comment_department_mention_ids(project_id, text):
|
|
|
567
594
|
]
|
|
568
595
|
|
|
569
596
|
|
|
570
|
-
def add_attachments_to_comment(comment, files):
|
|
597
|
+
def add_attachments_to_comment(comment, files, reply_id=None):
|
|
571
598
|
"""
|
|
572
599
|
Create an attachment entry and for each given uploaded files and tie it
|
|
573
600
|
to given comment.
|
|
574
601
|
"""
|
|
575
|
-
comment["attachment_files"]
|
|
602
|
+
if comment["attachment_files"] is None:
|
|
603
|
+
comment["attachment_files"] = []
|
|
604
|
+
new_attachment_files = []
|
|
576
605
|
for uploaded_file in files.values():
|
|
577
606
|
try:
|
|
578
|
-
attachment_file = create_attachment(
|
|
607
|
+
attachment_file = create_attachment(
|
|
608
|
+
comment, uploaded_file, reply_id=reply_id
|
|
609
|
+
)
|
|
579
610
|
comment["attachment_files"].append(attachment_file)
|
|
611
|
+
new_attachment_files.append(attachment_file)
|
|
580
612
|
except IntegrityError:
|
|
581
613
|
attachment_file = create_attachment(
|
|
582
|
-
comment, uploaded_file, randomize=True
|
|
614
|
+
comment, uploaded_file, randomize=True, reply_id=reply_id
|
|
583
615
|
)
|
|
584
616
|
comment["attachment_files"].append(attachment_file)
|
|
585
|
-
|
|
617
|
+
new_attachment_files.append(attachment_file)
|
|
618
|
+
return new_attachment_files
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"""add reply id to attachments
|
|
2
|
+
|
|
3
|
+
Revision ID: 1b0ab951adca
|
|
4
|
+
Revises: ce7f46f445dc
|
|
5
|
+
Create Date: 2025-08-27 14:14:16.237272
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
from alembic import op
|
|
9
|
+
import sqlalchemy as sa
|
|
10
|
+
import sqlalchemy_utils
|
|
11
|
+
import sqlalchemy_utils
|
|
12
|
+
import uuid
|
|
13
|
+
|
|
14
|
+
# revision identifiers, used by Alembic.
|
|
15
|
+
revision = '1b0ab951adca'
|
|
16
|
+
down_revision = 'ce7f46f445dc'
|
|
17
|
+
branch_labels = None
|
|
18
|
+
depends_on = None
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def upgrade():
|
|
22
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
23
|
+
with op.batch_alter_table('attachment_file', schema=None) as batch_op:
|
|
24
|
+
batch_op.add_column(sa.Column('reply_id', sqlalchemy_utils.types.uuid.UUIDType(binary=False), default=uuid.uuid4, nullable=True))
|
|
25
|
+
|
|
26
|
+
with op.batch_alter_table('software', schema=None) as batch_op:
|
|
27
|
+
batch_op.alter_column('version',
|
|
28
|
+
existing_type=sa.VARCHAR(length=20),
|
|
29
|
+
nullable=True)
|
|
30
|
+
|
|
31
|
+
# ### end Alembic commands ###
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def downgrade():
|
|
35
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
36
|
+
with op.batch_alter_table('software', schema=None) as batch_op:
|
|
37
|
+
batch_op.alter_column('version',
|
|
38
|
+
existing_type=sa.VARCHAR(length=20),
|
|
39
|
+
nullable=False)
|
|
40
|
+
|
|
41
|
+
with op.batch_alter_table('attachment_file', schema=None) as batch_op:
|
|
42
|
+
batch_op.drop_column('reply_id')
|
|
43
|
+
|
|
44
|
+
# ### end Alembic commands ###
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: zou
|
|
3
|
-
Version: 0.20.
|
|
3
|
+
Version: 0.20.70
|
|
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
|
|
@@ -23,7 +23,7 @@ License-File: LICENSE
|
|
|
23
23
|
Requires-Dist: babel==2.17.0
|
|
24
24
|
Requires-Dist: click==8.2.1
|
|
25
25
|
Requires-Dist: discord.py==2.6.2
|
|
26
|
-
Requires-Dist: email-validator==2.
|
|
26
|
+
Requires-Dist: email-validator==2.3.0
|
|
27
27
|
Requires-Dist: ffmpeg-python==0.2.0
|
|
28
28
|
Requires-Dist: fido2==2.0.0
|
|
29
29
|
Requires-Dist: flasgger==0.9.7.1
|
|
@@ -41,7 +41,7 @@ Requires-Dist: flask-socketio==5.5.1
|
|
|
41
41
|
Requires-Dist: flask==3.1.2
|
|
42
42
|
Requires-Dist: gazu==0.10.36
|
|
43
43
|
Requires-Dist: gevent-websocket==0.10.1
|
|
44
|
-
Requires-Dist: gevent==25.
|
|
44
|
+
Requires-Dist: gevent==25.8.1
|
|
45
45
|
Requires-Dist: gunicorn==23.0.0
|
|
46
46
|
Requires-Dist: isoweek==1.3.3
|
|
47
47
|
Requires-Dist: itsdangerous==2.2.0
|
|
@@ -53,7 +53,7 @@ Requires-Dist: numpy==2.2.6
|
|
|
53
53
|
Requires-Dist: opencv-python==4.12.0.88
|
|
54
54
|
Requires-Dist: OpenTimelineIO==0.17.0
|
|
55
55
|
Requires-Dist: OpenTimelineIO-Plugins==0.17.0
|
|
56
|
-
Requires-Dist: orjson==3.11.
|
|
56
|
+
Requires-Dist: orjson==3.11.3
|
|
57
57
|
Requires-Dist: pillow==11.3.0
|
|
58
58
|
Requires-Dist: psutil==7.0.0
|
|
59
59
|
Requires-Dist: psycopg[binary]==3.2.9
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
zou/__init__.py,sha256
|
|
1
|
+
zou/__init__.py,sha256=7cGtCw8zdh00Bu_VVAfUraiFK997QSZOzHhyFU_o0Rw,24
|
|
2
2
|
zou/cli.py,sha256=N9FyrL4TDgIiCUa-I3xIzOgiVLM14kz8_QLQ48y51oE,22767
|
|
3
3
|
zou/debug.py,sha256=1fawPbkD4wn0Y9Gk0BiBFSa-CQe5agFi8R9uJYl2Uyk,520
|
|
4
4
|
zou/event_stream.py,sha256=9O1PE_vDW8p3yfHJNSZ8w0ybD-660x8oGN0izgJdTjM,8575
|
|
@@ -18,7 +18,7 @@ zou/app/blueprints/breakdown/resources.py,sha256=vpE6aTdSPS3KSuGhgFIXxgYf3LXwjUj
|
|
|
18
18
|
zou/app/blueprints/chats/__init__.py,sha256=YGmwGvddg3MgSYVIh-hmkX8t2em9_LblxBeJzFqFJD4,558
|
|
19
19
|
zou/app/blueprints/chats/resources.py,sha256=ekKH8BghL4MAh-ZzT8IDPVy8cYAbCRAYwzjjkIa4DmU,5934
|
|
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=FKKfpbnL3MuY5jpK1JgrcLyUlo6_cRLMMDcrOx-JKQ0,19588
|
|
22
22
|
zou/app/blueprints/concepts/__init__.py,sha256=sP_P4mfYvfMcgeE6MHZYP3eD0Lz0Lwit5-CFuVnA-Jg,894
|
|
23
23
|
zou/app/blueprints/concepts/resources.py,sha256=hXVK0ON5vu2VDporVLrQdb5HjyxpVrXLoTq-ObLiO_Y,10114
|
|
24
24
|
zou/app/blueprints/crud/__init__.py,sha256=bzjCUL2BAYuufiWcP1n83JAp1TKXEMqTeN6wMOha76M,9667
|
|
@@ -105,7 +105,7 @@ zou/app/blueprints/projects/resources.py,sha256=kYMjJB91yQWmziE8zx3j7bahpKHKzGCh
|
|
|
105
105
|
zou/app/blueprints/search/__init__.py,sha256=QCjQIY_85l_orhdEiqav_GifjReuwsjZggN3V0GeUVY,356
|
|
106
106
|
zou/app/blueprints/search/resources.py,sha256=mV-JpMta1WOThYKkvboB8VMPG5H_vYPBz8Bx8OKNuvg,3087
|
|
107
107
|
zou/app/blueprints/shots/__init__.py,sha256=EcG9qmAchlucqg1M6-RqWGfuKpa5Kq6RgyLZNSsjUr4,4225
|
|
108
|
-
zou/app/blueprints/shots/resources.py,sha256=
|
|
108
|
+
zou/app/blueprints/shots/resources.py,sha256=jySSalQh8S8BgufYns3PXEBYkTJKU1s1LLrSWZVDiZw,53991
|
|
109
109
|
zou/app/blueprints/source/__init__.py,sha256=H7K-4TDs4pc5EJvcYTYMJBHesxyqsE5-xq7J8ckOS2g,6093
|
|
110
110
|
zou/app/blueprints/source/kitsu.py,sha256=4lWdqxaKDzwx-5POAIHIgZ6ODbDMOOVRxaSb_FOLcCk,5012
|
|
111
111
|
zou/app/blueprints/source/otio.py,sha256=5H3DlM0fAbKIbKob787Ve0F7a70fE1ihpXga14PPZ1M,13413
|
|
@@ -135,7 +135,7 @@ zou/app/blueprints/source/shotgun/tasks.py,sha256=XXBRe9QhhS-kuZeV3HitOnpf7mmWVx
|
|
|
135
135
|
zou/app/blueprints/source/shotgun/team.py,sha256=GF7y2BwDeFJCiidtG68icfCi-uV1-b96YKiH8KR54iE,1819
|
|
136
136
|
zou/app/blueprints/source/shotgun/versions.py,sha256=8Mb35e5p3FLbbiu6AZb9tJErDKz2pPRBdIYu80Ayj7w,2292
|
|
137
137
|
zou/app/blueprints/tasks/__init__.py,sha256=udtTZJVViawRAPu8dO_OoyVzQTheLYWTHeTnrC-2RDA,4331
|
|
138
|
-
zou/app/blueprints/tasks/resources.py,sha256=
|
|
138
|
+
zou/app/blueprints/tasks/resources.py,sha256=a_YD9q_cKnheu9P1DX7vA5n7h2maZ-gEUrpZ4ItaBZI,55368
|
|
139
139
|
zou/app/blueprints/user/__init__.py,sha256=H9zCHcVobC6jq6dTToXKAjnZmDA0a9gChHiIP3BcZsc,4586
|
|
140
140
|
zou/app/blueprints/user/resources.py,sha256=dbZe68cOe15twGrUPDU49kV12K9lUbANpBZ7ATLk_d0,39749
|
|
141
141
|
zou/app/file_trees/default.json,sha256=ryUrEmQYE8B_WkzCoQLgmem3N9yNwMIWx9G8p3HfG9o,2310
|
|
@@ -144,7 +144,7 @@ zou/app/indexer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
144
144
|
zou/app/indexer/indexing.py,sha256=s8Jx62itbeptPlxnl1tFozF3e5HKxEMq-pOnwomVumE,3718
|
|
145
145
|
zou/app/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
146
146
|
zou/app/models/asset_instance.py,sha256=ajfyA3qe6IjoNvd3mM8yr7wk9p4R9WO0qTfqT9ijntg,1714
|
|
147
|
-
zou/app/models/attachment_file.py,sha256=
|
|
147
|
+
zou/app/models/attachment_file.py,sha256=RTQzX6ozHf0SiN1zqKPYvllRqs3ltP9bYLCZQuF5rto,1557
|
|
148
148
|
zou/app/models/base.py,sha256=6w-SXGNpWo3ZXSc6VNw-YZFb-ApOOIlCRfUfzVNPe-M,9061
|
|
149
149
|
zou/app/models/budget.py,sha256=_8TNBvCYdd0fqaTcRuXDGPql7Cw5OGMZS2bczhrKrjU,1096
|
|
150
150
|
zou/app/models/budget_entry.py,sha256=rsil67mVC2nxYAi2TaRBSHH87uvJ5arcvh994LA0e_M,2084
|
|
@@ -200,7 +200,7 @@ zou/app/services/base_service.py,sha256=OZd0STFh-DyBBdwsmA7DMMnrwv4C8wJUbShvZ1is
|
|
|
200
200
|
zou/app/services/breakdown_service.py,sha256=-bH1KUq9-No_OKnQtWK4XEU1w7uDPJnzWFMrKNkS1K0,27593
|
|
201
201
|
zou/app/services/budget_service.py,sha256=uMU1vJr7kyxtkvMz_Nm7DyhW6qvSGYGqRHEQTxsHYCc,5468
|
|
202
202
|
zou/app/services/chats_service.py,sha256=pqnT-RCltdf9Dp4t-2NtOSawGk0jyNhVPTgERZ_nYvk,8297
|
|
203
|
-
zou/app/services/comments_service.py,sha256=
|
|
203
|
+
zou/app/services/comments_service.py,sha256=vAey-rv41i5qWe4dOk6jO7g9rGnW5N7TVkAGH0oVO7o,20013
|
|
204
204
|
zou/app/services/concepts_service.py,sha256=uH0leb23Op48wc1bHlUV2-I97QROsIemKr80F0UwnoM,11213
|
|
205
205
|
zou/app/services/custom_actions_service.py,sha256=fWISEOOdthadrxeHuacEel5Xj6msn0yWXJQDG1gzvsY,297
|
|
206
206
|
zou/app/services/deletion_service.py,sha256=AjLcsb91H8A-lw7j164VG8iX0EkKqwPdNhU5gOCAw_4,17225
|
|
@@ -227,7 +227,7 @@ zou/app/services/shots_service.py,sha256=yb6nlRTn2ap2zDEQ_Cwsi48HJnZPGNNbD_NhaQy
|
|
|
227
227
|
zou/app/services/stats_service.py,sha256=e9h090eZWADtzXycy1WOup_jlxGwQojrr1y_PDcVatc,13156
|
|
228
228
|
zou/app/services/status_automations_service.py,sha256=tVio7Sj7inhvKS4UOyRhcdpwr_KNP96hT1o0X7XcGF4,715
|
|
229
229
|
zou/app/services/sync_service.py,sha256=iWxx1kOGEXympHmSBBQWtDZWNtumdxp8kppee0OefMo,41811
|
|
230
|
-
zou/app/services/tasks_service.py,sha256=
|
|
230
|
+
zou/app/services/tasks_service.py,sha256=ZLUi6_XhLU_SLwERFHx4QwcXdS-ncrVH_rIl-Lt-9yE,69993
|
|
231
231
|
zou/app/services/telemetry_services.py,sha256=xQm1h1t_JxSFW59zQGf4NuNdUi1UfMa_6pQ-ytRbmGA,1029
|
|
232
232
|
zou/app/services/time_spents_service.py,sha256=8sYnepgeo4yohNFRNiEedqFfL2vuJ78GZSHOpRmp52Q,16502
|
|
233
233
|
zou/app/services/user_service.py,sha256=inFNPsAb11odskiidXAOzNGlY5S2DvFYuYCeGGN_1lc,52990
|
|
@@ -285,6 +285,7 @@ zou/migrations/versions/10cf267d95c9_fix_schedule_item.py,sha256=p_IDPtPGGnbu-Dq
|
|
|
285
285
|
zou/migrations/versions/16328eae4b5f_add_new_constraint_for_timespent.py,sha256=xGq1YSvoo-6RME4sBYIZY4NVUB_qkt2hNMvA-nlJmZ0,1809
|
|
286
286
|
zou/migrations/versions/16df47d76c64_add_some_indexes.py,sha256=gHwD3WuTw45hY9UTUzrThofO0Wf107mnJrPsqzkb_hA,4413
|
|
287
287
|
zou/migrations/versions/17ef8f7be758_disallow_null_choicetype.py,sha256=73sljp681nQmrOvxllT-Np8hHjTrQ7CQ9hhkacHMGsg,15432
|
|
288
|
+
zou/migrations/versions/1b0ab951adca_add_reply_id_to_attachments.py,sha256=yIZ63DGa0sjyJajER671xzZnctNYt3dyAOBP6LvPvOQ,1324
|
|
288
289
|
zou/migrations/versions/1bb55759146f_add_table_studio.py,sha256=U0NklqJaX_SwC_Om8rVoJno_vYkeaU69OcW6lvQr8Gc,2024
|
|
289
290
|
zou/migrations/versions/1cb44194db49_add_file_size_field_to_preview_file.py,sha256=vcsHqK9OQY6V1_lVL4fJSn2T7SRMfCCuFKO6_XjtHSU,707
|
|
290
291
|
zou/migrations/versions/1e150c2cea4d_add_nb_entities_out.py,sha256=3fBXfaR4Uz2amzZholso3DX4Z20EZkvKn12OrDluilk,713
|
|
@@ -468,9 +469,9 @@ zou/remote/normalize_movie.py,sha256=zNfEY3N1UbAHZfddGONTg2Sff3ieLVWd4dfZa1dpnes
|
|
|
468
469
|
zou/remote/playlist.py,sha256=AsDo0bgYhDcd6DfNRV6r6Jj3URWwavE2ZN3VkKRPbLU,3293
|
|
469
470
|
zou/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
470
471
|
zou/utils/movie.py,sha256=d67fIL9dVBKt-E_qCGXRbNNdbJaJR5sHvZeX3hf8ldE,16559
|
|
471
|
-
zou-0.20.
|
|
472
|
-
zou-0.20.
|
|
473
|
-
zou-0.20.
|
|
474
|
-
zou-0.20.
|
|
475
|
-
zou-0.20.
|
|
476
|
-
zou-0.20.
|
|
472
|
+
zou-0.20.70.dist-info/licenses/LICENSE,sha256=dql8h4yceoMhuzlcK0TT_i-NgTFNIZsgE47Q4t3dUYI,34520
|
|
473
|
+
zou-0.20.70.dist-info/METADATA,sha256=sgGUZAkpd34oEWsE3ylRZDZ5Z8hKRgqp4-FW9FoX-Kg,6697
|
|
474
|
+
zou-0.20.70.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
475
|
+
zou-0.20.70.dist-info/entry_points.txt,sha256=PelQoIx3qhQ_Tmne7wrLY-1m2izuzgpwokoURwSohy4,130
|
|
476
|
+
zou-0.20.70.dist-info/top_level.txt,sha256=4S7G_jk4MzpToeDItHGjPhHx_fRdX52zJZWTD4SL54g,4
|
|
477
|
+
zou-0.20.70.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|