zou 0.20.11__py3-none-any.whl → 0.20.13__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/__init__.py +4 -0
- zou/app/blueprints/assets/resources.py +1 -1
- zou/app/blueprints/crud/preview_file.py +3 -1
- zou/app/blueprints/index/resources.py +1 -1
- zou/app/blueprints/projects/resources.py +9 -0
- zou/app/blueprints/source/csv/task_type_estimations.py +3 -0
- zou/app/blueprints/tasks/resources.py +4 -2
- zou/app/config.py +1 -1
- zou/app/indexer/indexing.py +29 -18
- zou/app/models/entity_type.py +21 -10
- zou/app/models/metadata_descriptor.py +24 -10
- zou/app/models/person.py +10 -0
- zou/app/services/comments_service.py +15 -14
- zou/app/services/index_service.py +19 -8
- zou/app/services/tasks_service.py +11 -19
- zou/app/services/user_service.py +1 -1
- zou/cli.py +0 -8
- zou/migrations/versions/20a8ad264659_tasktypeassettypelink_.py +132 -0
- zou/migrations/versions/539a3a00c417_for_departmentlink_index_person_id_.py +50 -0
- {zou-0.20.11.dist-info → zou-0.20.13.dist-info}/METADATA +8 -8
- {zou-0.20.11.dist-info → zou-0.20.13.dist-info}/RECORD +26 -24
- {zou-0.20.11.dist-info → zou-0.20.13.dist-info}/LICENSE +0 -0
- {zou-0.20.11.dist-info → zou-0.20.13.dist-info}/WHEEL +0 -0
- {zou-0.20.11.dist-info → zou-0.20.13.dist-info}/entry_points.txt +0 -0
- {zou-0.20.11.dist-info → zou-0.20.13.dist-info}/top_level.txt +0 -0
zou/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "0.20.
|
|
1
|
+
__version__ = "0.20.13"
|
zou/app/__init__.py
CHANGED
|
@@ -25,6 +25,7 @@ from meilisearch.errors import (
|
|
|
25
25
|
|
|
26
26
|
from zou.app import config, swagger
|
|
27
27
|
from zou.app.stores import auth_tokens_store, file_store
|
|
28
|
+
from zou.app.indexer import indexing
|
|
28
29
|
from zou.app.services.exception import (
|
|
29
30
|
ModelWithRelationsDeletionException,
|
|
30
31
|
PersonNotFoundException,
|
|
@@ -72,6 +73,9 @@ if config.SAML_ENABLED:
|
|
|
72
73
|
|
|
73
74
|
app.extensions["fido_server"] = get_fido_server()
|
|
74
75
|
|
|
76
|
+
if config.INDEXER.get("key") is not None:
|
|
77
|
+
app.extensions["indexer_client"] = indexing.init_client()
|
|
78
|
+
|
|
75
79
|
|
|
76
80
|
@app.teardown_appcontext
|
|
77
81
|
def shutdown_session(exception=None):
|
|
@@ -98,7 +98,9 @@ class PreviewFileResource(BaseModelResource):
|
|
|
98
98
|
instance_dict = instance.serialize()
|
|
99
99
|
self.check_delete_permissions(instance_dict)
|
|
100
100
|
self.pre_delete(instance_dict)
|
|
101
|
-
deletion_service.remove_preview_file(
|
|
101
|
+
deletion_service.remove_preview_file(
|
|
102
|
+
instance, force=self.get_force()
|
|
103
|
+
)
|
|
102
104
|
self.emit_delete_event(instance_dict)
|
|
103
105
|
self.post_delete(instance_dict)
|
|
104
106
|
|
|
@@ -11,6 +11,7 @@ from zou.app.services import (
|
|
|
11
11
|
)
|
|
12
12
|
from zou.app.utils import permissions
|
|
13
13
|
from zou.app.services.exception import WrongParameterException
|
|
14
|
+
from zou.app.models.metadata_descriptor import METADATA_DESCRIPTOR_TYPES
|
|
14
15
|
|
|
15
16
|
|
|
16
17
|
class OpenProjectsResource(Resource, ArgsMixin):
|
|
@@ -715,6 +716,10 @@ class ProductionMetadataDescriptorsResource(Resource, ArgsMixin):
|
|
|
715
716
|
if len(args["name"]) == 0:
|
|
716
717
|
raise WrongParameterException("Name cannot be empty.")
|
|
717
718
|
|
|
719
|
+
types = [type_name for type_name, _ in METADATA_DESCRIPTOR_TYPES]
|
|
720
|
+
if args["data_type"] not in types:
|
|
721
|
+
raise WrongParameterException("Invalid data_type")
|
|
722
|
+
|
|
718
723
|
return (
|
|
719
724
|
projects_service.add_metadata_descriptor(
|
|
720
725
|
project_id,
|
|
@@ -828,6 +833,10 @@ class ProductionMetadataDescriptorResource(Resource, ArgsMixin):
|
|
|
828
833
|
if len(args["name"]) == 0:
|
|
829
834
|
raise WrongParameterException("Name cannot be empty.")
|
|
830
835
|
|
|
836
|
+
types = [type_name for type_name, _ in METADATA_DESCRIPTOR_TYPES]
|
|
837
|
+
if args["data_type"] not in types:
|
|
838
|
+
raise WrongParameterException("Invalid data_type")
|
|
839
|
+
|
|
831
840
|
args["for_client"] = args["for_client"] == "True"
|
|
832
841
|
|
|
833
842
|
return projects_service.update_metadata_descriptor(descriptor_id, args)
|
|
@@ -123,6 +123,9 @@ class TaskTypeEstimationsCsvImportResource(BaseCsvProjectImportResource):
|
|
|
123
123
|
new_data["start_date"], float(row["Estimation"]) - 1
|
|
124
124
|
)
|
|
125
125
|
|
|
126
|
+
if row.get("Difficulty") not in [None, ""]:
|
|
127
|
+
new_data["difficulty"] = int(row["Difficulty"])
|
|
128
|
+
|
|
126
129
|
tasks_service.update_task(self.tasks_map[entity_id], new_data)
|
|
127
130
|
|
|
128
131
|
|
|
@@ -78,7 +78,7 @@ class AddPreviewResource(Resource, ArgsMixin):
|
|
|
78
78
|
return preview_file, 201
|
|
79
79
|
|
|
80
80
|
|
|
81
|
-
class AddExtraPreviewResource(Resource):
|
|
81
|
+
class AddExtraPreviewResource(Resource, ArgsMixin):
|
|
82
82
|
"""
|
|
83
83
|
Add a preview to given comment.
|
|
84
84
|
"""
|
|
@@ -160,7 +160,9 @@ class AddExtraPreviewResource(Resource):
|
|
|
160
160
|
"""
|
|
161
161
|
task = tasks_service.get_task(task_id)
|
|
162
162
|
user_service.check_project_access(task["project_id"])
|
|
163
|
-
deletion_service.remove_preview_file_by_id(
|
|
163
|
+
deletion_service.remove_preview_file_by_id(
|
|
164
|
+
preview_file_id, force=self.get_force()
|
|
165
|
+
)
|
|
164
166
|
return "", 204
|
|
165
167
|
|
|
166
168
|
|
zou/app/config.py
CHANGED
|
@@ -58,7 +58,7 @@ INDEXER = {
|
|
|
58
58
|
"host": os.getenv("INDEXER_HOST", "localhost"),
|
|
59
59
|
"port": os.getenv("INDEXER_PORT", "7700"),
|
|
60
60
|
"protocol": os.getenv("INDEXER_PROTOCOL", "http"),
|
|
61
|
-
"key": os.getenv("INDEXER_KEY"
|
|
61
|
+
"key": os.getenv("INDEXER_KEY"),
|
|
62
62
|
"timeout": int(os.getenv("INDEXER_TIMEOUT", 5000)),
|
|
63
63
|
}
|
|
64
64
|
|
zou/app/indexer/indexing.py
CHANGED
|
@@ -3,24 +3,35 @@ from meilisearch.errors import MeilisearchApiError
|
|
|
3
3
|
|
|
4
4
|
from zou.app import config
|
|
5
5
|
from zou.app.utils import cache
|
|
6
|
+
from flask import current_app
|
|
6
7
|
|
|
7
|
-
client = None
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
def init():
|
|
9
|
+
def init_client():
|
|
11
10
|
"""
|
|
12
11
|
Configure Meilisearch client.
|
|
13
12
|
"""
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
13
|
+
protocol = config.INDEXER["protocol"]
|
|
14
|
+
host = config.INDEXER["host"]
|
|
15
|
+
port = config.INDEXER["port"]
|
|
16
|
+
return meilisearch.Client(
|
|
17
|
+
f"{protocol}://{host}:{port}",
|
|
18
|
+
config.INDEXER["key"],
|
|
19
|
+
timeout=config.INDEXER["timeout"],
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class IndexerNotInitializedError(Exception):
|
|
24
|
+
pass
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def get_client():
|
|
28
|
+
"""
|
|
29
|
+
Get Meilisearch client.
|
|
30
|
+
"""
|
|
31
|
+
try:
|
|
32
|
+
return current_app.extensions["indexer_client"]
|
|
33
|
+
except KeyError:
|
|
34
|
+
raise IndexerNotInitializedError()
|
|
24
35
|
|
|
25
36
|
|
|
26
37
|
def create_index(index_name, searchable_fields=[], filterable_fields=[]):
|
|
@@ -34,6 +45,7 @@ def create_index(index_name, searchable_fields=[], filterable_fields=[]):
|
|
|
34
45
|
except MeilisearchApiError:
|
|
35
46
|
pass
|
|
36
47
|
if index is None:
|
|
48
|
+
client = get_client()
|
|
37
49
|
task = client.create_index(index_name, {"primaryKey": "id"})
|
|
38
50
|
client.wait_for_task(
|
|
39
51
|
task.task_uid, timeout_in_ms=config.INDEXER["timeout"]
|
|
@@ -57,8 +69,7 @@ def get_index(index_name):
|
|
|
57
69
|
"""
|
|
58
70
|
Get index matching given name.
|
|
59
71
|
"""
|
|
60
|
-
|
|
61
|
-
index = client.get_index(index_name)
|
|
72
|
+
index = get_client().get_index(index_name)
|
|
62
73
|
return index
|
|
63
74
|
|
|
64
75
|
|
|
@@ -69,7 +80,7 @@ def clear_index(index_name):
|
|
|
69
80
|
cache.cache.delete_memoized(get_index)
|
|
70
81
|
index = get_index(index_name)
|
|
71
82
|
task = index.delete_all_documents()
|
|
72
|
-
|
|
83
|
+
get_client().wait_for_task(
|
|
73
84
|
task.task_uid, timeout_in_ms=config.INDEXER["timeout"]
|
|
74
85
|
)
|
|
75
86
|
return index
|
|
@@ -80,7 +91,7 @@ def index_document(index, document):
|
|
|
80
91
|
Add given document to given index.
|
|
81
92
|
"""
|
|
82
93
|
task = index.add_documents([document])
|
|
83
|
-
|
|
94
|
+
get_client().wait_for_task(
|
|
84
95
|
task.task_uid, timeout_in_ms=config.INDEXER["timeout"]
|
|
85
96
|
)
|
|
86
97
|
return index
|
|
@@ -91,7 +102,7 @@ def index_documents(index, documents):
|
|
|
91
102
|
Add given documents to given index.
|
|
92
103
|
"""
|
|
93
104
|
task = index.add_documents(documents)
|
|
94
|
-
|
|
105
|
+
get_client().wait_for_task(
|
|
95
106
|
task.task_uid, timeout_in_ms=config.INDEXER["timeout"]
|
|
96
107
|
)
|
|
97
108
|
return documents
|
zou/app/models/entity_type.py
CHANGED
|
@@ -5,19 +5,28 @@ from zou.app.models.serializer import SerializerMixin
|
|
|
5
5
|
from zou.app.models.base import BaseMixin
|
|
6
6
|
from zou.app.models.task_type import TaskType
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
db.Column(
|
|
11
|
-
"asset_type_id",
|
|
8
|
+
|
|
9
|
+
class TaskTypeAssetTypeLink(db.Model):
|
|
10
|
+
asset_type_id = db.Column(
|
|
12
11
|
UUIDType(binary=False),
|
|
13
12
|
db.ForeignKey("entity_type.id"),
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
index=True,
|
|
14
|
+
primary_key=True,
|
|
15
|
+
)
|
|
16
|
+
task_type_id = db.Column(
|
|
17
17
|
UUIDType(binary=False),
|
|
18
18
|
db.ForeignKey("task_type.id"),
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
index=True,
|
|
20
|
+
primary_key=True,
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
__table_args__ = (
|
|
24
|
+
db.UniqueConstraint(
|
|
25
|
+
"asset_type_id",
|
|
26
|
+
"task_type_id",
|
|
27
|
+
name="task_type_asset_type_link_uc",
|
|
28
|
+
),
|
|
29
|
+
)
|
|
21
30
|
|
|
22
31
|
|
|
23
32
|
class EntityType(db.Model, BaseMixin, SerializerMixin):
|
|
@@ -30,7 +39,9 @@ class EntityType(db.Model, BaseMixin, SerializerMixin):
|
|
|
30
39
|
short_name = db.Column(db.String(20))
|
|
31
40
|
description = db.Column(db.Text())
|
|
32
41
|
task_types = db.relationship(
|
|
33
|
-
|
|
42
|
+
TaskType,
|
|
43
|
+
secondary=TaskTypeAssetTypeLink.__table__,
|
|
44
|
+
lazy="joined",
|
|
34
45
|
)
|
|
35
46
|
archived = db.Column(db.Boolean(), default=False)
|
|
36
47
|
|
|
@@ -4,18 +4,31 @@ from sqlalchemy.dialects.postgresql import JSONB
|
|
|
4
4
|
from zou.app import db
|
|
5
5
|
from zou.app.models.serializer import SerializerMixin
|
|
6
6
|
from zou.app.models.base import BaseMixin
|
|
7
|
+
from zou.app.models.department import Department
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
db.Column(
|
|
11
|
-
"metadata_descriptor_id",
|
|
9
|
+
|
|
10
|
+
class DepartmentMetadataDescriptorLink(db.Model):
|
|
11
|
+
metadata_descriptor_id = db.Column(
|
|
12
12
|
UUIDType(binary=False),
|
|
13
13
|
db.ForeignKey("metadata_descriptor.id"),
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
)
|
|
14
|
+
index=True,
|
|
15
|
+
primary_key=True,
|
|
16
|
+
)
|
|
17
|
+
department_id = db.Column(
|
|
18
|
+
UUIDType(binary=False),
|
|
19
|
+
db.ForeignKey("department.id"),
|
|
20
|
+
index=True,
|
|
21
|
+
primary_key=True,
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
__table_args__ = (
|
|
25
|
+
db.UniqueConstraint(
|
|
26
|
+
"metadata_descriptor_id",
|
|
27
|
+
"department_id",
|
|
28
|
+
name="department_metadata_descriptor_link_uc",
|
|
29
|
+
),
|
|
30
|
+
)
|
|
31
|
+
|
|
19
32
|
|
|
20
33
|
METADATA_DESCRIPTOR_TYPES = [
|
|
21
34
|
("string", "String"),
|
|
@@ -46,7 +59,8 @@ class MetadataDescriptor(db.Model, BaseMixin, SerializerMixin):
|
|
|
46
59
|
choices = db.Column(JSONB)
|
|
47
60
|
for_client = db.Column(db.Boolean(), default=False, index=True)
|
|
48
61
|
departments = db.relationship(
|
|
49
|
-
|
|
62
|
+
Department,
|
|
63
|
+
secondary=DepartmentMetadataDescriptorLink.__table__,
|
|
50
64
|
)
|
|
51
65
|
|
|
52
66
|
__table_args__ = (
|
zou/app/models/person.py
CHANGED
|
@@ -49,11 +49,21 @@ class DepartmentLink(db.Model):
|
|
|
49
49
|
UUIDType(binary=False),
|
|
50
50
|
db.ForeignKey("person.id"),
|
|
51
51
|
primary_key=True,
|
|
52
|
+
index=True,
|
|
52
53
|
)
|
|
53
54
|
department_id = db.Column(
|
|
54
55
|
UUIDType(binary=False),
|
|
55
56
|
db.ForeignKey("department.id"),
|
|
56
57
|
primary_key=True,
|
|
58
|
+
index=True,
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
__table_args__ = (
|
|
62
|
+
db.UniqueConstraint(
|
|
63
|
+
"person_id",
|
|
64
|
+
"department_id",
|
|
65
|
+
name="department_link_uc",
|
|
66
|
+
),
|
|
57
67
|
)
|
|
58
68
|
|
|
59
69
|
|
|
@@ -252,24 +252,25 @@ def _run_status_automation(automation, task, person_id):
|
|
|
252
252
|
task["id"]
|
|
253
253
|
)
|
|
254
254
|
)
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
255
|
+
if preview_file is not None:
|
|
256
|
+
preview_files = (
|
|
257
|
+
preview_files_service.get_preview_files_for_revision(
|
|
258
|
+
preview_file["task_id"], preview_file["revision"]
|
|
259
|
+
)
|
|
258
260
|
)
|
|
259
|
-
)
|
|
260
261
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
262
|
+
for preview_file in preview_files:
|
|
263
|
+
new_preview_file = (
|
|
264
|
+
tasks_service.add_preview_file_to_comment(
|
|
265
|
+
new_comment["id"],
|
|
266
|
+
new_comment["person_id"],
|
|
267
|
+
task_to_update["id"],
|
|
268
|
+
)
|
|
267
269
|
)
|
|
268
|
-
)
|
|
269
270
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
271
|
+
preview_files_service.copy_preview_file_in_another_one(
|
|
272
|
+
preview_file["id"], new_preview_file["id"]
|
|
273
|
+
)
|
|
273
274
|
|
|
274
275
|
elif automation["out_field_type"] == "ready_for":
|
|
275
276
|
try:
|
|
@@ -12,9 +12,8 @@ from zou.app.services import (
|
|
|
12
12
|
|
|
13
13
|
def get_index(index_name):
|
|
14
14
|
"""
|
|
15
|
-
Retrieve
|
|
15
|
+
Retrieve meilisearch index from disk. It is required to perform any operations.
|
|
16
16
|
"""
|
|
17
|
-
indexing.init()
|
|
18
17
|
return indexing.get_index(index_name)
|
|
19
18
|
|
|
20
19
|
|
|
@@ -193,9 +192,11 @@ def index_asset(asset):
|
|
|
193
192
|
document = prepare_asset(asset)
|
|
194
193
|
indexing.index_document(index, document)
|
|
195
194
|
return document
|
|
195
|
+
except indexing.IndexerNotInitializedError:
|
|
196
|
+
pass
|
|
196
197
|
except:
|
|
197
198
|
app.logger.error("Indexer is not reachable, indexation failed.")
|
|
198
|
-
|
|
199
|
+
return {}
|
|
199
200
|
|
|
200
201
|
|
|
201
202
|
def index_person(person):
|
|
@@ -207,9 +208,11 @@ def index_person(person):
|
|
|
207
208
|
document = prepare_person(person)
|
|
208
209
|
indexing.index_document(index, document)
|
|
209
210
|
return document
|
|
211
|
+
except indexing.IndexerNotInitializedError:
|
|
212
|
+
pass
|
|
210
213
|
except:
|
|
211
214
|
app.logger.error("Indexer is not reachable, indexation failed.")
|
|
212
|
-
|
|
215
|
+
return {}
|
|
213
216
|
|
|
214
217
|
|
|
215
218
|
def index_shot(shot):
|
|
@@ -221,9 +224,11 @@ def index_shot(shot):
|
|
|
221
224
|
document = prepare_shot(shot)
|
|
222
225
|
indexing.index_document(index, document)
|
|
223
226
|
return document
|
|
227
|
+
except indexing.IndexerNotInitializedError:
|
|
228
|
+
pass
|
|
224
229
|
except:
|
|
225
230
|
app.logger.error("Indexer is not reachable, indexation failed.")
|
|
226
|
-
|
|
231
|
+
return {}
|
|
227
232
|
|
|
228
233
|
|
|
229
234
|
def prepare_asset(asset):
|
|
@@ -320,9 +325,11 @@ def remove_asset_index(asset_id):
|
|
|
320
325
|
"""
|
|
321
326
|
try:
|
|
322
327
|
return indexing.remove_document(get_asset_index(), asset_id)
|
|
328
|
+
except indexing.IndexerNotInitializedError:
|
|
329
|
+
pass
|
|
323
330
|
except:
|
|
324
331
|
app.logger.error("Indexer is not reachable, indexation failed.")
|
|
325
|
-
|
|
332
|
+
return {}
|
|
326
333
|
|
|
327
334
|
|
|
328
335
|
def remove_person_index(person_id):
|
|
@@ -331,9 +338,11 @@ def remove_person_index(person_id):
|
|
|
331
338
|
"""
|
|
332
339
|
try:
|
|
333
340
|
return indexing.remove_document(get_person_index(), person_id)
|
|
341
|
+
except indexing.IndexerNotInitializedError:
|
|
342
|
+
pass
|
|
334
343
|
except:
|
|
335
344
|
app.logger.error("Indexer is not reachable, indexation failed.")
|
|
336
|
-
|
|
345
|
+
return {}
|
|
337
346
|
|
|
338
347
|
|
|
339
348
|
def remove_shot_index(shot_id):
|
|
@@ -342,6 +351,8 @@ def remove_shot_index(shot_id):
|
|
|
342
351
|
"""
|
|
343
352
|
try:
|
|
344
353
|
return indexing.remove_document(get_shot_index(), shot_id)
|
|
354
|
+
except indexing.IndexerNotInitializedError:
|
|
355
|
+
pass
|
|
345
356
|
except:
|
|
346
357
|
app.logger.error("Indexer is not reachable, indexation failed.")
|
|
347
|
-
|
|
358
|
+
return {}
|
|
@@ -376,25 +376,17 @@ def _get_entity_task_query():
|
|
|
376
376
|
|
|
377
377
|
|
|
378
378
|
def _convert_rows_to_detailed_tasks(rows, relations=False):
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
task = get_task(str(task_object.id), relations=relations)
|
|
391
|
-
task["project_name"] = project_name
|
|
392
|
-
task["task_type_name"] = task_type_name
|
|
393
|
-
task["task_status_name"] = task_status_name
|
|
394
|
-
task["entity_type_name"] = entity_type_name
|
|
395
|
-
task["entity_name"] = entity_name
|
|
396
|
-
results.append(task)
|
|
397
|
-
return results
|
|
379
|
+
return [
|
|
380
|
+
{
|
|
381
|
+
**task_object.serialize(relations=relations),
|
|
382
|
+
"project_name": project_name,
|
|
383
|
+
"task_type_name": task_type_name,
|
|
384
|
+
"task_status_name": task_status_name,
|
|
385
|
+
"entity_type_name": entity_type_name,
|
|
386
|
+
"entity_name": entity_name,
|
|
387
|
+
}
|
|
388
|
+
for task_object, project_name, task_type_name, task_status_name, entity_type_name, entity_name in rows
|
|
389
|
+
]
|
|
398
390
|
|
|
399
391
|
|
|
400
392
|
def get_task_types_for_shot(shot_id):
|
zou/app/services/user_service.py
CHANGED
|
@@ -1424,7 +1424,7 @@ def get_last_notifications(
|
|
|
1424
1424
|
)
|
|
1425
1425
|
reply_mentions = reply.get("mentions", []) or []
|
|
1426
1426
|
reply_department_mentions = (
|
|
1427
|
-
reply.get("
|
|
1427
|
+
reply.get("department_mentions", []) or []
|
|
1428
1428
|
)
|
|
1429
1429
|
if reply is not None:
|
|
1430
1430
|
reply_text = reply["text"]
|
zou/cli.py
CHANGED
|
@@ -507,14 +507,6 @@ def reset_search_index():
|
|
|
507
507
|
commands.reset_search_index()
|
|
508
508
|
|
|
509
509
|
|
|
510
|
-
@cli.command()
|
|
511
|
-
def init_search_index():
|
|
512
|
-
"""
|
|
513
|
-
Init search index.
|
|
514
|
-
"""
|
|
515
|
-
commands.init_search_index()
|
|
516
|
-
|
|
517
|
-
|
|
518
510
|
@cli.command()
|
|
519
511
|
@click.option("--query", default="")
|
|
520
512
|
def search_asset(query):
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"""TaskTypeAssetTypeLink/DepartmentMetadataDescriptorLink add index, pkey and constraint
|
|
2
|
+
|
|
3
|
+
Revision ID: 20a8ad264659
|
|
4
|
+
Revises: 539a3a00c417
|
|
5
|
+
Create Date: 2025-01-26 23:15:27.665887
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from alembic import op
|
|
10
|
+
import sqlalchemy as sa
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
# revision identifiers, used by Alembic.
|
|
14
|
+
revision = "20a8ad264659"
|
|
15
|
+
down_revision = "539a3a00c417"
|
|
16
|
+
branch_labels = None
|
|
17
|
+
depends_on = None
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def upgrade():
|
|
21
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
22
|
+
with op.batch_alter_table(
|
|
23
|
+
"department_metadata_descriptor_link", schema=None
|
|
24
|
+
) as batch_op:
|
|
25
|
+
batch_op.alter_column(
|
|
26
|
+
"metadata_descriptor_id", existing_type=sa.UUID(), nullable=False
|
|
27
|
+
)
|
|
28
|
+
batch_op.alter_column(
|
|
29
|
+
"department_id", existing_type=sa.UUID(), nullable=False
|
|
30
|
+
)
|
|
31
|
+
batch_op.create_unique_constraint(
|
|
32
|
+
"department_metadata_descriptor_link_uc",
|
|
33
|
+
["metadata_descriptor_id", "department_id"],
|
|
34
|
+
)
|
|
35
|
+
batch_op.create_index(
|
|
36
|
+
batch_op.f("ix_department_metadata_descriptor_link_department_id"),
|
|
37
|
+
["department_id"],
|
|
38
|
+
unique=False,
|
|
39
|
+
)
|
|
40
|
+
batch_op.create_index(
|
|
41
|
+
batch_op.f(
|
|
42
|
+
"ix_department_metadata_descriptor_link_metadata_descriptor_id"
|
|
43
|
+
),
|
|
44
|
+
["metadata_descriptor_id"],
|
|
45
|
+
unique=False,
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
batch_op.create_primary_key(
|
|
49
|
+
"department_metadata_descriptor_link_pkey",
|
|
50
|
+
["metadata_descriptor_id", "department_id"],
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
with op.batch_alter_table(
|
|
54
|
+
"task_type_asset_type_link", schema=None
|
|
55
|
+
) as batch_op:
|
|
56
|
+
batch_op.alter_column(
|
|
57
|
+
"asset_type_id", existing_type=sa.UUID(), nullable=False
|
|
58
|
+
)
|
|
59
|
+
batch_op.alter_column(
|
|
60
|
+
"task_type_id", existing_type=sa.UUID(), nullable=False
|
|
61
|
+
)
|
|
62
|
+
batch_op.create_index(
|
|
63
|
+
batch_op.f("ix_task_type_asset_type_link_asset_type_id"),
|
|
64
|
+
["asset_type_id"],
|
|
65
|
+
unique=False,
|
|
66
|
+
)
|
|
67
|
+
batch_op.create_index(
|
|
68
|
+
batch_op.f("ix_task_type_asset_type_link_task_type_id"),
|
|
69
|
+
["task_type_id"],
|
|
70
|
+
unique=False,
|
|
71
|
+
)
|
|
72
|
+
batch_op.create_unique_constraint(
|
|
73
|
+
"task_type_asset_type_link_uc", ["asset_type_id", "task_type_id"]
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
batch_op.create_primary_key(
|
|
77
|
+
"task_type_asset_type_link_pkey", ["asset_type_id", "task_type_id"]
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
# ### end Alembic commands ###
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def downgrade():
|
|
84
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
85
|
+
with op.batch_alter_table(
|
|
86
|
+
"task_type_asset_type_link", schema=None
|
|
87
|
+
) as batch_op:
|
|
88
|
+
batch_op.drop_constraint(
|
|
89
|
+
"task_type_asset_type_link_pkey", type_="primary"
|
|
90
|
+
)
|
|
91
|
+
batch_op.drop_constraint(
|
|
92
|
+
"task_type_asset_type_link_uc", type_="unique"
|
|
93
|
+
)
|
|
94
|
+
batch_op.drop_index(
|
|
95
|
+
batch_op.f("ix_task_type_asset_type_link_task_type_id")
|
|
96
|
+
)
|
|
97
|
+
batch_op.drop_index(
|
|
98
|
+
batch_op.f("ix_task_type_asset_type_link_asset_type_id")
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
batch_op.alter_column(
|
|
102
|
+
"task_type_id", existing_type=sa.UUID(), nullable=True
|
|
103
|
+
)
|
|
104
|
+
batch_op.alter_column(
|
|
105
|
+
"asset_type_id", existing_type=sa.UUID(), nullable=True
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
with op.batch_alter_table(
|
|
109
|
+
"department_metadata_descriptor_link", schema=None
|
|
110
|
+
) as batch_op:
|
|
111
|
+
batch_op.drop_index(
|
|
112
|
+
batch_op.f(
|
|
113
|
+
"ix_department_metadata_descriptor_link_metadata_descriptor_id"
|
|
114
|
+
)
|
|
115
|
+
)
|
|
116
|
+
batch_op.drop_index(
|
|
117
|
+
batch_op.f("ix_department_metadata_descriptor_link_department_id")
|
|
118
|
+
)
|
|
119
|
+
batch_op.drop_constraint(
|
|
120
|
+
"department_metadata_descriptor_link_pkey", type_="primary"
|
|
121
|
+
)
|
|
122
|
+
batch_op.drop_constraint(
|
|
123
|
+
"department_metadata_descriptor_link_uc", type_="unique"
|
|
124
|
+
)
|
|
125
|
+
batch_op.alter_column(
|
|
126
|
+
"department_id", existing_type=sa.UUID(), nullable=True
|
|
127
|
+
)
|
|
128
|
+
batch_op.alter_column(
|
|
129
|
+
"metadata_descriptor_id", existing_type=sa.UUID(), nullable=True
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
# ### end Alembic commands ###
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"""For DepartmentLink index person_id / department_id
|
|
2
|
+
|
|
3
|
+
Revision ID: 539a3a00c417
|
|
4
|
+
Revises: 9d3bb33c6fc6
|
|
5
|
+
Create Date: 2025-01-14 12:19:52.699322
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from alembic import op
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
# revision identifiers, used by Alembic.
|
|
13
|
+
revision = "539a3a00c417"
|
|
14
|
+
down_revision = "9d3bb33c6fc6"
|
|
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("department_link", schema=None) as batch_op:
|
|
22
|
+
batch_op.create_unique_constraint(
|
|
23
|
+
"department_link_uc", ["person_id", "department_id"]
|
|
24
|
+
)
|
|
25
|
+
batch_op.create_index(
|
|
26
|
+
batch_op.f("ix_department_link_department_id"),
|
|
27
|
+
["department_id"],
|
|
28
|
+
unique=False,
|
|
29
|
+
)
|
|
30
|
+
batch_op.create_index(
|
|
31
|
+
batch_op.f("ix_department_link_person_id"),
|
|
32
|
+
["person_id"],
|
|
33
|
+
unique=False,
|
|
34
|
+
)
|
|
35
|
+
batch_op.create_primary_key(
|
|
36
|
+
"department_link_pkey", ["person_id", "department_id"]
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
# ### end Alembic commands ###
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def downgrade():
|
|
43
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
44
|
+
with op.batch_alter_table("department_link", schema=None) as batch_op:
|
|
45
|
+
batch_op.drop_index(batch_op.f("ix_department_link_person_id"))
|
|
46
|
+
batch_op.drop_index(batch_op.f("ix_department_link_department_id"))
|
|
47
|
+
batch_op.drop_constraint("department_link_uc", type_="unique")
|
|
48
|
+
batch_op.drop_constraint("department_link_pkey", type_="primary")
|
|
49
|
+
|
|
50
|
+
# ### 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.13
|
|
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
|
|
@@ -41,7 +41,7 @@ Requires-Dist: flask-jwt-extended==4.7.1
|
|
|
41
41
|
Requires-Dist: flask-migrate==4.1.0
|
|
42
42
|
Requires-Dist: flask-socketio==5.5.1
|
|
43
43
|
Requires-Dist: flask==3.1.0
|
|
44
|
-
Requires-Dist: gazu==0.10.
|
|
44
|
+
Requires-Dist: gazu==0.10.25
|
|
45
45
|
Requires-Dist: gevent-websocket==0.10.1
|
|
46
46
|
Requires-Dist: gevent==24.11.1
|
|
47
47
|
Requires-Dist: gunicorn==23.0.0
|
|
@@ -52,14 +52,14 @@ Requires-Dist: ldap3==2.9.1
|
|
|
52
52
|
Requires-Dist: matterhook==0.2
|
|
53
53
|
Requires-Dist: meilisearch==0.33.1
|
|
54
54
|
Requires-Dist: numpy==2.0.1; python_version == "3.9"
|
|
55
|
-
Requires-Dist: numpy==2.2.
|
|
56
|
-
Requires-Dist: opencv-python==4.
|
|
55
|
+
Requires-Dist: numpy==2.2.2; python_version >= "3.10"
|
|
56
|
+
Requires-Dist: opencv-python==4.11.0.86
|
|
57
57
|
Requires-Dist: OpenTimelineIO==0.17.0
|
|
58
58
|
Requires-Dist: OpenTimelineIO-Plugins==0.17.0
|
|
59
|
-
Requires-Dist: orjson==3.10.
|
|
59
|
+
Requires-Dist: orjson==3.10.15
|
|
60
60
|
Requires-Dist: pillow==11.1.0
|
|
61
61
|
Requires-Dist: psutil==6.1.1
|
|
62
|
-
Requires-Dist: psycopg[binary]==3.2.
|
|
62
|
+
Requires-Dist: psycopg[binary]==3.2.4
|
|
63
63
|
Requires-Dist: pyotp==2.9.0
|
|
64
64
|
Requires-Dist: pysaml2==7.5.0
|
|
65
65
|
Requires-Dist: python-nomad==2.0.1
|
|
@@ -87,11 +87,11 @@ Requires-Dist: pytest==8.3.4; extra == "test"
|
|
|
87
87
|
Provides-Extra: monitoring
|
|
88
88
|
Requires-Dist: prometheus-flask-exporter==0.23.1; extra == "monitoring"
|
|
89
89
|
Requires-Dist: pygelf==0.4.2; extra == "monitoring"
|
|
90
|
-
Requires-Dist: sentry-sdk==2.
|
|
90
|
+
Requires-Dist: sentry-sdk==2.20.0; extra == "monitoring"
|
|
91
91
|
Provides-Extra: lint
|
|
92
92
|
Requires-Dist: autoflake==2.3.1; extra == "lint"
|
|
93
93
|
Requires-Dist: black==24.10.0; extra == "lint"
|
|
94
|
-
Requires-Dist: pre-commit==4.0
|
|
94
|
+
Requires-Dist: pre-commit==4.1.0; extra == "lint"
|
|
95
95
|
Dynamic: requires-python
|
|
96
96
|
|
|
97
97
|
.. figure:: https://zou.cg-wire.com/kitsu.png
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
zou/__init__.py,sha256=
|
|
2
|
-
zou/cli.py,sha256=
|
|
1
|
+
zou/__init__.py,sha256=qPiGRnihRo8MqZpRjUGoC5SaRVJFUBb_TMPOZYph7as,24
|
|
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
|
-
zou/app/__init__.py,sha256=
|
|
6
|
+
zou/app/__init__.py,sha256=c5R9IQL5JGl0K0RfPBoq64GsPm-KvmqENHwNodvK_Ec,7104
|
|
7
7
|
zou/app/api.py,sha256=JTB_IMVO8EOoyqx9KdRkiIix0chOLi0yGDY-verUJXA,5127
|
|
8
|
-
zou/app/config.py,sha256=
|
|
8
|
+
zou/app/config.py,sha256=U3DuUOwZ66FZWVwwV-11SyhmpktGh7J7CgoE11jidSs,6687
|
|
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
|
|
12
12
|
zou/app/blueprints/assets/__init__.py,sha256=T2zhDagHjXF6jRwOQ8vqokZTkBHyY7XtTI0Rlooamjs,2931
|
|
13
|
-
zou/app/blueprints/assets/resources.py,sha256=
|
|
13
|
+
zou/app/blueprints/assets/resources.py,sha256=y1fMLrgO8vFXoJT4srh-FP4IFlGvh_E0NxhQ5AK-9O0,25600
|
|
14
14
|
zou/app/blueprints/auth/__init__.py,sha256=xP874bMWUnLIirOPSEbpe-Q2fBBQrxZGKd0tLZmNJXk,1128
|
|
15
15
|
zou/app/blueprints/auth/resources.py,sha256=YIhdEVK9WQ7fCYtknwh3dR3TdSdURRm7rBpDxpNSGK0,45608
|
|
16
16
|
zou/app/blueprints/breakdown/__init__.py,sha256=Dp6GWSGxxWIedpyzTTEKpCRUYEo8oVNVyQhwNvTMmQM,1888
|
|
@@ -46,7 +46,7 @@ zou/app/blueprints/crud/output_type.py,sha256=Uu7Q5iv-4SZDnxHkLk0vUE1N4k0bBUivXQ
|
|
|
46
46
|
zou/app/blueprints/crud/person.py,sha256=k1EcYxD5C5p7tquAvJUpD2873-ITeF2ogMNIYRxWuDo,9427
|
|
47
47
|
zou/app/blueprints/crud/playlist.py,sha256=he8iXoWnjBVXzkB_y8aGnZ6vQ_7hGSf-ALofLFoqx1U,1890
|
|
48
48
|
zou/app/blueprints/crud/preview_background_file.py,sha256=TRJlVQ3nGOYVkA6kxIlNrip9bjkUaknVNCIUYw8uJYk,2451
|
|
49
|
-
zou/app/blueprints/crud/preview_file.py,sha256=
|
|
49
|
+
zou/app/blueprints/crud/preview_file.py,sha256=0-1Zv62xDY5JM54P1iac1mPm-tC4NsbAEgbQZaPYLBw,3899
|
|
50
50
|
zou/app/blueprints/crud/project.py,sha256=g8kWGzgWyVk7s6Y-41DRAGjIegxS36W4SbP1FMJTQDM,8428
|
|
51
51
|
zou/app/blueprints/crud/project_status.py,sha256=XIiIsAfaD5sLZA6wT3UL4FZQpnoOcqPzYfFIWrp9Svs,540
|
|
52
52
|
zou/app/blueprints/crud/schedule_item.py,sha256=1dbNKbftNG3if38Hzh1uslCAu3BE4jOqWhLV0590A90,1400
|
|
@@ -83,7 +83,7 @@ zou/app/blueprints/export/csv/time_spents.py,sha256=yYPtilOxfQD5mBwyh9h-PbTQBpab
|
|
|
83
83
|
zou/app/blueprints/files/__init__.py,sha256=7Wty30JW2OXIn-tBFXOWWmPuHnsnxPpH3jNtHvvr9tY,3987
|
|
84
84
|
zou/app/blueprints/files/resources.py,sha256=kWqhPfi1SmVXE05G3sfR2aF4r6J8O7Tr5c0oKO9MQN0,69175
|
|
85
85
|
zou/app/blueprints/index/__init__.py,sha256=Dh3oQiirpg8RCkfVOuk3irIjSvUvuRf0jPxE6oGubz0,828
|
|
86
|
-
zou/app/blueprints/index/resources.py,sha256=
|
|
86
|
+
zou/app/blueprints/index/resources.py,sha256=L31_Gb-9f4C0UHXQWLBgVbR7hrRLRkDg5E3h6Wkyq-Y,8644
|
|
87
87
|
zou/app/blueprints/news/__init__.py,sha256=HxBXjC15dVbotNAZ0CLf02iwUjxJr20kgf8_kT_9nwM,505
|
|
88
88
|
zou/app/blueprints/news/resources.py,sha256=HdLq2NgfKyN2d3hIATBhH3dlk4c50I4dhhvEhhB_NY4,7334
|
|
89
89
|
zou/app/blueprints/persons/__init__.py,sha256=0cnHHw3K_8OEMm0qOi3wKVomSAg9IJSnVjAXabMeHks,3893
|
|
@@ -93,7 +93,7 @@ zou/app/blueprints/playlists/resources.py,sha256=alRlMHypUFErXLsEYxpFK84cdjFJ3YW
|
|
|
93
93
|
zou/app/blueprints/previews/__init__.py,sha256=ihC6OQ9AUjnZ2JeMnjRh_tKGO0UmAjOwhZnOivc3BnQ,4460
|
|
94
94
|
zou/app/blueprints/previews/resources.py,sha256=22-ISgZba0SpQ2sS0l5WjVtLTaiLKoal4aLcqxLQX9s,53176
|
|
95
95
|
zou/app/blueprints/projects/__init__.py,sha256=Pn3fA5bpNFEPBzxTKJ2foV6osZFflXXSM2l2uZh3ktM,3927
|
|
96
|
-
zou/app/blueprints/projects/resources.py,sha256=
|
|
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
|
|
98
98
|
zou/app/blueprints/search/resources.py,sha256=_QgRlUuxCPgY-ip5r2lGFtXNcGSE579JsCSrVf8ajVU,3093
|
|
99
99
|
zou/app/blueprints/shots/__init__.py,sha256=HfgLneZBYUMa2OGwIgEZTz8zrIEYFRiYmRbreBPYeYw,4076
|
|
@@ -108,7 +108,7 @@ zou/app/blueprints/source/csv/casting.py,sha256=zUlwEnSheoCMTIgvRlKJgNv3hYPDjfSr
|
|
|
108
108
|
zou/app/blueprints/source/csv/edits.py,sha256=yL1RcClBxPNakLt326M2aJk6pVv0H7CrNXALuKHkDZ8,8386
|
|
109
109
|
zou/app/blueprints/source/csv/persons.py,sha256=QciJ47B3rAPyUQTAeToCUAhEai16J4s37oOErjdC_Vw,2582
|
|
110
110
|
zou/app/blueprints/source/csv/shots.py,sha256=5OI0IBY8C72aBbDFrIkvN-ZkWWCHsvOGUQ0Z9rWsnDs,9748
|
|
111
|
-
zou/app/blueprints/source/csv/task_type_estimations.py,sha256=
|
|
111
|
+
zou/app/blueprints/source/csv/task_type_estimations.py,sha256=OdUo9plR1g6ZTKL1-06ye_8xpFJ0V9x5gLzcWw1jFcI,5730
|
|
112
112
|
zou/app/blueprints/source/shotgun/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
113
113
|
zou/app/blueprints/source/shotgun/assets.py,sha256=vuRvy0oUszImYRawrbWC2h7CHYSBvGXDJPoa6ZqpG_U,4980
|
|
114
114
|
zou/app/blueprints/source/shotgun/base.py,sha256=Y0sX8X3oN0AQWiBqjLX-cijnBZH8UzZp4iC8BQpf_tk,6193
|
|
@@ -127,13 +127,13 @@ zou/app/blueprints/source/shotgun/tasks.py,sha256=XXBRe9QhhS-kuZeV3HitOnpf7mmWVx
|
|
|
127
127
|
zou/app/blueprints/source/shotgun/team.py,sha256=GF7y2BwDeFJCiidtG68icfCi-uV1-b96YKiH8KR54iE,1819
|
|
128
128
|
zou/app/blueprints/source/shotgun/versions.py,sha256=8Mb35e5p3FLbbiu6AZb9tJErDKz2pPRBdIYu80Ayj7w,2292
|
|
129
129
|
zou/app/blueprints/tasks/__init__.py,sha256=udtTZJVViawRAPu8dO_OoyVzQTheLYWTHeTnrC-2RDA,4331
|
|
130
|
-
zou/app/blueprints/tasks/resources.py,sha256=
|
|
130
|
+
zou/app/blueprints/tasks/resources.py,sha256=DzwEBv2isg9oxCAE6qo0Q47pfZh_A_3z30QmGDsa9-w,55174
|
|
131
131
|
zou/app/blueprints/user/__init__.py,sha256=H9zCHcVobC6jq6dTToXKAjnZmDA0a9gChHiIP3BcZsc,4586
|
|
132
132
|
zou/app/blueprints/user/resources.py,sha256=loCigQvPCoRw6nVu_9TIY7pjUByJgk6vutFPSo0MwzI,39891
|
|
133
133
|
zou/app/file_trees/default.json,sha256=ryUrEmQYE8B_WkzCoQLgmem3N9yNwMIWx9G8p3HfG9o,2310
|
|
134
134
|
zou/app/file_trees/simple.json,sha256=VBI43Z3rjQxtTpVCq3ktUgS0UB8x-aTowKL9LXuXCFI,3149
|
|
135
135
|
zou/app/indexer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
136
|
-
zou/app/indexer/indexing.py,sha256=
|
|
136
|
+
zou/app/indexer/indexing.py,sha256=s8Jx62itbeptPlxnl1tFozF3e5HKxEMq-pOnwomVumE,3718
|
|
137
137
|
zou/app/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
138
138
|
zou/app/models/asset_instance.py,sha256=ajfyA3qe6IjoNvd3mM8yr7wk9p4R9WO0qTfqT9ijntg,1714
|
|
139
139
|
zou/app/models/attachment_file.py,sha256=d3gldEyKhRyLqGQHBbWVwtmPgtq7oxipxHanZUKWVGI,1377
|
|
@@ -148,18 +148,18 @@ zou/app/models/day_off.py,sha256=WMZs7oMhUBpMnNyvhgpl1j6egZ5J0drnrF1dH3N5cII,691
|
|
|
148
148
|
zou/app/models/department.py,sha256=ZUzZXemrHJOxoEgALCiMqGww1wnEvxTL12k6KmkWoW4,418
|
|
149
149
|
zou/app/models/desktop_login_log.py,sha256=fdgqEXAQkHw6CtRU_Y-CuboaZA9QWJc9OzklvbdPBJY,546
|
|
150
150
|
zou/app/models/entity.py,sha256=KfRurXnssOGkRRGLz1UA1U27tZDJMeaRPTkADbGo094,8550
|
|
151
|
-
zou/app/models/entity_type.py,sha256=
|
|
151
|
+
zou/app/models/entity_type.py,sha256=IWwsew4cHAlNJQNGg8vtcKAlaaKLtkw4RK4OMFp85ho,2129
|
|
152
152
|
zou/app/models/event.py,sha256=WNZ9mSh5kIIg-W5CDKfohtAE_ObXbmgRB5JMyWRZktA,677
|
|
153
153
|
zou/app/models/file_status.py,sha256=pdYnI4empolJ2o2yHSEqp5ZTra4zyXiZPx3bE599GLo,351
|
|
154
154
|
zou/app/models/login_log.py,sha256=Cpyjo01EKHyaKvNaU_4EWOsvOVxzpBOjeEB17z6h25k,654
|
|
155
|
-
zou/app/models/metadata_descriptor.py,sha256=
|
|
155
|
+
zou/app/models/metadata_descriptor.py,sha256=XyuPqx_vhP8TH7avnconktB-3WFCWk3NkdywQltJVqs,2240
|
|
156
156
|
zou/app/models/milestone.py,sha256=ZwJ7_PbXT_LeUZKv3l5DLPM7ByFQEccpEeWFq4-IM-Q,927
|
|
157
157
|
zou/app/models/news.py,sha256=UPX0ojWF-leAGZNKqlo7KL0s0lp2tbKMJl4N5lGbouo,1583
|
|
158
158
|
zou/app/models/notification.py,sha256=1ODOymGPeB4oxgX_3WhOgIL_Lsz-JR7miDkBS6W8t_s,2563
|
|
159
159
|
zou/app/models/organisation.py,sha256=R69AR1JDZSs6YeXDalmz3ewmrSMDv9Mr8AZAHn09Iu0,1365
|
|
160
160
|
zou/app/models/output_file.py,sha256=hyLGrpsgrk0aisDXppRQrB7ItCwyuyw-X0ZwVAHabsA,2569
|
|
161
161
|
zou/app/models/output_type.py,sha256=us_lCUCEvuP4vi_XmmOcEl1J2MtZhMX5ZheBqEFCgWA,381
|
|
162
|
-
zou/app/models/person.py,sha256=
|
|
162
|
+
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=Ur45Wau2X3qyKULh04EUcMbnBmaQc8y4IMs5NgELiAQ,3134
|
|
@@ -185,7 +185,7 @@ zou/app/services/backup_service.py,sha256=_ZtZp6wkcVYnHxBosziwLGdrTvsUttXGphiydq
|
|
|
185
185
|
zou/app/services/base_service.py,sha256=OZd0STFh-DyBBdwsmA7DMMnrwv4C8wJUbShvZ1isndU,1383
|
|
186
186
|
zou/app/services/breakdown_service.py,sha256=-bH1KUq9-No_OKnQtWK4XEU1w7uDPJnzWFMrKNkS1K0,27593
|
|
187
187
|
zou/app/services/chats_service.py,sha256=pqnT-RCltdf9Dp4t-2NtOSawGk0jyNhVPTgERZ_nYvk,8297
|
|
188
|
-
zou/app/services/comments_service.py,sha256=
|
|
188
|
+
zou/app/services/comments_service.py,sha256=dEZ4Y4NQRGtCDnChlZp3VtF02noSPqXPT4yJ9UorwtA,18708
|
|
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
|
|
@@ -196,7 +196,7 @@ zou/app/services/events_service.py,sha256=Ew-bY5hqrWLmpbVj1_xd3E2S3JtyAGzdgw2Xju
|
|
|
196
196
|
zou/app/services/exception.py,sha256=mcDVjWGICMIlOi4nsN2EQ7nc3V70rAC-iCmXt6kOXbA,4240
|
|
197
197
|
zou/app/services/file_tree_service.py,sha256=8JNBDgnXtV-AmSJ3gnUGB4oSwLjPgi1WYyL0Kc98JRE,33875
|
|
198
198
|
zou/app/services/files_service.py,sha256=df1_9v-vwE5HVi9XjtilTPWHuiWunvrwPyQh_IXupNM,28517
|
|
199
|
-
zou/app/services/index_service.py,sha256=
|
|
199
|
+
zou/app/services/index_service.py,sha256=IaffQz_oj6GPEbuDp4a2qnSc6n-hhIcmA_LrTm3Wots,10201
|
|
200
200
|
zou/app/services/names_service.py,sha256=TOSrintROmxcAlcFQE0i2E3PBLnw81GAztNselpTn18,2947
|
|
201
201
|
zou/app/services/news_service.py,sha256=eOXkvLhOcgncI2NrgiJEccV28oxZX5CsZVqaE-l4kWQ,9084
|
|
202
202
|
zou/app/services/notifications_service.py,sha256=7GDRio_mGaRYV5BHOAdpxBZjA_LLYUfVpbwZqy1n9pI,15685
|
|
@@ -210,10 +210,10 @@ zou/app/services/shots_service.py,sha256=4H81Tf6twY4s9Ac9_MCX_4bdW75m30TaKrR0tLi
|
|
|
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=6lJHxVAQ0dxHdO8_2PaVqLwy87s44kvLRj6S9dw-Bvs,68534
|
|
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=QlyckTfiCx-bzRewqVwHMJQXerg6BWXYWfURhvp65G4,50291
|
|
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
|
|
@@ -270,6 +270,7 @@ zou/migrations/versions/1cb44194db49_add_file_size_field_to_preview_file.py,sha2
|
|
|
270
270
|
zou/migrations/versions/1e150c2cea4d_add_nb_entities_out.py,sha256=3fBXfaR4Uz2amzZholso3DX4Z20EZkvKn12OrDluilk,713
|
|
271
271
|
zou/migrations/versions/1e2d77a2f0c4_add_hd_by_default_column.py,sha256=NeqHKwihEPiM9PUnY_XuZ4K2qRYO-AgOujHpqBW-urs,729
|
|
272
272
|
zou/migrations/versions/1fab8c420678_add_attachments_to_message_chats.py,sha256=gSVhdM5EG8HBzJ9BejjKLgbqA7ps0O0iQ9uHZNbzAi0,1639
|
|
273
|
+
zou/migrations/versions/20a8ad264659_tasktypeassettypelink_.py,sha256=evXbBdw-HIT7wYQiDesIlif3JN9jieFVJsLEn63Hzgw,4171
|
|
273
274
|
zou/migrations/versions/20dfeb36142b_add_projecttaskstatuslink_roles_for_.py,sha256=L_BaHxyrWutZ9vJ_x3OQ6cGxicoRNlwps8wakIxrNe4,1256
|
|
274
275
|
zou/migrations/versions/23122f290ca2_add_entity_chat_models.py,sha256=FPnFj84qk36m9DfiBggOIHybtUCMMquRB9j0bw3cL3A,4532
|
|
275
276
|
zou/migrations/versions/269d41bfb73f_add_entity_entity_links.py,sha256=mPChSTYtDAmID9C7p-8iQB6_BXoejPoPSCFf5nDgAxk,1626
|
|
@@ -300,6 +301,7 @@ zou/migrations/versions/4715c2586036_add_last_preview_file_fields.py,sha256=ez0H
|
|
|
300
301
|
zou/migrations/versions/4e3738cdc34c_.py,sha256=0THgcNbLygTZb462fHZ9SK2EBq_j6_htcPXz4CZbVkg,2636
|
|
301
302
|
zou/migrations/versions/4f2398ebcd49_.py,sha256=7ZYIHv3bjppg3dqvBHe_sBatzz7etQBpuRKY-DSvR_Q,683
|
|
302
303
|
zou/migrations/versions/523ee9647bee_.py,sha256=2PbD0cNflQtHd7TLxyfSQDJ8gHybUYCKcPQw_XUivfU,1262
|
|
304
|
+
zou/migrations/versions/539a3a00c417_for_departmentlink_index_person_id_.py,sha256=6_nJuUQsSXvUbhUrzfyr7ACDZehxkfkm0tz_cxV773Y,1534
|
|
303
305
|
zou/migrations/versions/54ee0d1d60ba_add_build_job_model.py,sha256=xePUVxovJ_EOVCdNPz9qoXR_mf89YOhl2IIwYaTQhzI,1889
|
|
304
306
|
zou/migrations/versions/556526e47daa_.py,sha256=XvDBc0o4l76Rf1FBXb5sopNHiGEe-R8tbZ5C5LmLAOA,2052
|
|
305
307
|
zou/migrations/versions/57222395f2be_add_statusautomation_import_last_revision.py,sha256=rPRvyxfrtEtFywGuBkfB8VLEs3EUytgUyA8xB8vtH4A,1039
|
|
@@ -414,9 +416,9 @@ zou/remote/normalize_movie.py,sha256=zNfEY3N1UbAHZfddGONTg2Sff3ieLVWd4dfZa1dpnes
|
|
|
414
416
|
zou/remote/playlist.py,sha256=AsDo0bgYhDcd6DfNRV6r6Jj3URWwavE2ZN3VkKRPbLU,3293
|
|
415
417
|
zou/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
416
418
|
zou/utils/movie.py,sha256=d67fIL9dVBKt-E_qCGXRbNNdbJaJR5sHvZeX3hf8ldE,16559
|
|
417
|
-
zou-0.20.
|
|
418
|
-
zou-0.20.
|
|
419
|
-
zou-0.20.
|
|
420
|
-
zou-0.20.
|
|
421
|
-
zou-0.20.
|
|
422
|
-
zou-0.20.
|
|
419
|
+
zou-0.20.13.dist-info/LICENSE,sha256=dql8h4yceoMhuzlcK0TT_i-NgTFNIZsgE47Q4t3dUYI,34520
|
|
420
|
+
zou-0.20.13.dist-info/METADATA,sha256=ChFlRH3tCEuWxZAdDlQSmy8egoEaXXUdUvzNKplyZoU,6734
|
|
421
|
+
zou-0.20.13.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
|
422
|
+
zou-0.20.13.dist-info/entry_points.txt,sha256=PelQoIx3qhQ_Tmne7wrLY-1m2izuzgpwokoURwSohy4,130
|
|
423
|
+
zou-0.20.13.dist-info/top_level.txt,sha256=4S7G_jk4MzpToeDItHGjPhHx_fRdX52zJZWTD4SL54g,4
|
|
424
|
+
zou-0.20.13.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|