Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit b8c0ef1

Browse files
committedNov 13, 2023
[previews] introduce preview background files
1 parent 9317776 commit b8c0ef1

19 files changed

+986
-72
lines changed
 

‎setup.cfg

+2
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ install_requires =
5555
ldap3==2.9.1
5656
matterhook==0.2
5757
meilisearch==0.28.4
58+
numpy==1.24.4
59+
opencv-python==4.8.1.78
5860
OpenTimelineIO==0.15.0
5961
orjson==3.9.10
6062
pillow==10.1.0

‎zou/app/blueprints/crud/__init__.py

+9-1
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,10 @@
118118
WorkingFilesResource,
119119
WorkingFileResource,
120120
)
121-
121+
from zou.app.blueprints.crud.preview_background_file import (
122+
PreviewBackgroundFileResource,
123+
PreviewBackgroundFilesResource,
124+
)
122125

123126
routes = [
124127
("/data/persons", PersonsResource),
@@ -190,6 +193,11 @@
190193
("/data/subscriptions/<instance_id>", SubscriptionResource),
191194
("/data/entity-links/", EntityLinksResource),
192195
("/data/entity-links/<instance_id>", EntityLinkResource),
196+
("/data/preview-background-files", PreviewBackgroundFilesResource),
197+
(
198+
"/data/preview-background-files/<instance_id>",
199+
PreviewBackgroundFileResource,
200+
),
193201
]
194202

195203
blueprint = Blueprint("/data", "data")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
from zou.app.models.preview_background_file import PreviewBackgroundFile
2+
from zou.app.services.exception import ArgumentsException
3+
from zou.app.services import files_service, deletion_service
4+
5+
from zou.app.blueprints.crud.base import BaseModelResource, BaseModelsResource
6+
7+
8+
class PreviewBackgroundFilesResource(BaseModelsResource):
9+
def __init__(self):
10+
BaseModelsResource.__init__(self, PreviewBackgroundFile)
11+
12+
def check_read_permissions(self):
13+
return True
14+
15+
def update_data(self, data):
16+
name = data.get("name", None)
17+
preview_background_file = PreviewBackgroundFile.get_by(name=name)
18+
if preview_background_file is not None:
19+
raise ArgumentsException(
20+
"A preview background file with similar name already exists"
21+
)
22+
return data
23+
24+
def post_creation(self, instance):
25+
if instance.is_default:
26+
files_service.reset_default_preview_background_files(instance.id)
27+
files_service.clear_preview_background_file_cache(str(instance.id))
28+
return instance.serialize()
29+
30+
31+
class PreviewBackgroundFileResource(BaseModelResource):
32+
def __init__(self):
33+
BaseModelResource.__init__(self, PreviewBackgroundFile)
34+
35+
def check_read_permissions(self, instance):
36+
return True
37+
38+
def update_data(self, data, instance_id):
39+
name = data.get("name", None)
40+
if name is not None:
41+
preview_background_file = PreviewBackgroundFile.get_by(name=name)
42+
if preview_background_file is not None and instance_id != str(
43+
preview_background_file.id
44+
):
45+
raise ArgumentsException(
46+
"A preview background file with similar name already exists"
47+
)
48+
return data
49+
50+
def post_update(self, instance_dict):
51+
if instance_dict["is_default"]:
52+
files_service.reset_default_preview_background_files(
53+
instance_dict["id"]
54+
)
55+
files_service.clear_preview_background_file_cache(instance_dict["id"])
56+
return instance_dict
57+
58+
def post_delete(self, instance_dict):
59+
deletion_service.clear_preview_background_files(instance_dict["id"])
60+
files_service.clear_preview_background_file_cache(instance_dict["id"])
61+
return instance_dict

‎zou/app/blueprints/crud/project.py

+57
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
assets_service,
1616
tasks_service,
1717
status_automations_service,
18+
files_service,
1819
)
1920
from zou.app.utils import events, permissions, fields
2021

@@ -79,6 +80,31 @@ def update_data(self, data):
7980
)
8081
for task_type_id in data["status_automations"]
8182
]
83+
84+
if "preview_background_files" in data:
85+
data["preview_background_files"] = [
86+
files_service.get_preview_background_file_raw(
87+
preview_background_file_id
88+
)
89+
for preview_background_file_id in data[
90+
"preview_background_files"
91+
]
92+
]
93+
94+
if data.get("preview_background_file_id") is not None:
95+
preview_background_files_ids = []
96+
if "preview_background_files" in data:
97+
preview_background_files_ids = [
98+
str(preview_background_file.id)
99+
for preview_background_file in data[
100+
"preview_background_files"
101+
]
102+
]
103+
if (
104+
data["preview_background_file_id"]
105+
not in preview_background_files_ids
106+
):
107+
raise ArgumentsException("Invalid preview_background_file_id")
82108
return data
83109

84110
def post_creation(self, project):
@@ -132,6 +158,37 @@ def pre_update(self, project_dict, data):
132158
)
133159
for task_type_id in data["status_automations"]
134160
]
161+
if "preview_background_files" in data:
162+
data["preview_background_files"] = [
163+
files_service.get_preview_background_file_raw(
164+
preview_background_file_id
165+
)
166+
for preview_background_file_id in data[
167+
"preview_background_files"
168+
]
169+
]
170+
171+
if data.get("preview_background_file_id") is not None:
172+
if "preview_background_files" in data:
173+
preview_background_files_ids = [
174+
str(preview_background_file.id)
175+
for preview_background_file in data[
176+
"preview_background_files"
177+
]
178+
]
179+
else:
180+
preview_background_files_ids = [
181+
preview_background_file_id
182+
for preview_background_file_id in project_dict[
183+
"preview_background_files"
184+
]
185+
]
186+
if (
187+
data["preview_background_file_id"]
188+
not in preview_background_files_ids
189+
):
190+
raise ArgumentsException("Invalid preview_background_file_id")
191+
135192
return data
136193

137194
def post_update(self, project_dict):

‎zou/app/blueprints/previews/__init__.py

+15
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@
2626
UpdatePreviewPositionResource,
2727
ExtractFrameFromPreview,
2828
ExtractTileFromPreview,
29+
CreatePreviewBackgroundFileResource,
30+
PreviewBackgroundFileThumbnailResource,
31+
PreviewBackgroundFileResource,
2932
)
3033

3134
routes = [
@@ -98,6 +101,18 @@
98101
"/pictures/thumbnails/projects/<instance_id>.png",
99102
ProjectThumbnailResource,
100103
),
104+
(
105+
"/pictures/preview-background-files/<instance_id>",
106+
CreatePreviewBackgroundFileResource,
107+
),
108+
(
109+
"/pictures/thumbnails/preview-background-files/<instance_id>.png",
110+
PreviewBackgroundFileThumbnailResource,
111+
),
112+
(
113+
"/pictures/preview-background-files/<instance_id>.<extension>",
114+
PreviewBackgroundFileResource,
115+
),
101116
(
102117
"/actions/entities/<entity_id>/set-main-preview/<preview_file_id>",
103118
LegacySetMainPreviewResource,

0 commit comments

Comments
 (0)
Please sign in to comment.