Skip to content

Commit 4571c00

Browse files
committed
refact generates functions
1 parent 45eef80 commit 4571c00

File tree

2 files changed

+38
-126
lines changed

2 files changed

+38
-126
lines changed

src/opengeodeweb_back/utils_functions.py

Lines changed: 19 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -145,67 +145,33 @@ def handle_exception(e):
145145

146146

147147
def generate_native_viewable_and_light_viewable_from_object(geode_object, data):
148-
generated_id = str(uuid.uuid4()).replace("-", "")
149-
DATA_FOLDER_PATH = flask.current_app.config["DATA_FOLDER_PATH"]
150-
data_path = os.path.join(DATA_FOLDER_PATH, generated_id)
151-
name = data.name()
152-
object_type = geode_functions.get_object_type(geode_object)
148+
return generate_native_viewable_and_light_viewable(geode_object, data)
153149

154-
additional_files_copied = []
155150

156-
saved_native_file_path = geode_functions.save(
157-
geode_object,
158-
data,
159-
data_path,
160-
"native." + data.native_extension(),
161-
)
162-
saved_viewable_file_path = geode_functions.save_viewable(
163-
geode_object, data, data_path, "viewable"
164-
)
165-
viewable_file_name = os.path.basename(saved_viewable_file_path)
166-
saved_light_viewable_file_path = geode_functions.save_light_viewable(
167-
geode_object, data, data_path, "light_viewable"
168-
)
169-
with open(saved_light_viewable_file_path, "rb") as f:
170-
binary_light_viewable = f.read()
171-
172-
result = {
173-
"name": name,
174-
"native_file_name": os.path.basename(saved_native_file_path[0]),
175-
"viewable_file_name": viewable_file_name,
176-
"id": generated_id,
177-
"object_type": object_type,
178-
"binary_light_viewable": binary_light_viewable.decode("utf-8"),
179-
"geode_object": geode_object,
180-
"input_files": additional_files_copied,
181-
}
182-
return result
151+
def generate_native_viewable_and_light_viewable_from_file(geode_object, input_filename):
152+
data = geode_functions.load(geode_object, input_filename)
153+
return generate_native_viewable_and_light_viewable(geode_object, data, input_filename)
183154

184155

185-
def generate_native_viewable_and_light_viewable_from_file(geode_object, input_filename):
156+
def generate_native_viewable_and_light_viewable(geode_object, data, input_filename=None):
186157
generated_id = str(uuid.uuid4()).replace("-", "")
187158
DATA_FOLDER_PATH = flask.current_app.config["DATA_FOLDER_PATH"]
188159
data_path = os.path.join(DATA_FOLDER_PATH, generated_id)
189160
os.makedirs(data_path, exist_ok=True)
190161

191-
data = geode_functions.load(geode_object, input_filename)
192-
name = data.name()
193-
object_type = geode_functions.get_object_type(geode_object)
194-
195162
additional_files_copied = []
196-
additional = geode_functions.additional_files(geode_object, input_filename)
197-
for additional_file in additional.mandatory_files + additional.optional_files:
198-
if additional_file.is_missing:
199-
continue
200-
source_path = os.path.join(
201-
os.path.dirname(input_filename), additional_file.filename
202-
)
203-
if not os.path.exists(source_path):
204-
continue
205-
dest_path = os.path.join(data_path, additional_file.filename)
206-
os.makedirs(os.path.dirname(dest_path), exist_ok=True)
207-
shutil.copy2(source_path, dest_path)
208-
additional_files_copied.append(additional_file.filename)
163+
if input_filename:
164+
additional = geode_functions.additional_files(geode_object, input_filename)
165+
for additional_file in additional.mandatory_files + additional.optional_files:
166+
if additional_file.is_missing:
167+
continue
168+
source_path = os.path.join(os.path.dirname(input_filename), additional_file.filename)
169+
if not os.path.exists(source_path):
170+
continue
171+
dest_path = os.path.join(data_path, additional_file.filename)
172+
os.makedirs(os.path.dirname(dest_path), exist_ok=True)
173+
shutil.copy2(source_path, dest_path)
174+
additional_files_copied.append(additional_file.filename)
209175

210176
saved_native_file_path = geode_functions.save(
211177
geode_object,
@@ -224,65 +190,12 @@ def generate_native_viewable_and_light_viewable_from_file(geode_object, input_fi
224190
binary_light_viewable = f.read()
225191

226192
return {
227-
"name": name,
193+
"name": data.name(),
228194
"native_file_name": os.path.basename(saved_native_file_path[0]),
229195
"viewable_file_name": viewable_file_name,
230196
"id": generated_id,
231-
"object_type": object_type,
197+
"object_type": geode_functions.get_object_type(geode_object),
232198
"binary_light_viewable": binary_light_viewable.decode("utf-8"),
233199
"geode_object": geode_object,
234200
"input_files": additional_files_copied,
235201
}
236-
237-
238-
# def generate_native_viewable_and_light_viewable(
239-
# geode_object, data, input_filename
240-
# ):
241-
# generated_id = str(uuid.uuid4()).replace("-", "")
242-
# DATA_FOLDER_PATH = flask.current_app.config["DATA_FOLDER_PATH"]
243-
# data_path = os.path.join(DATA_FOLDER_PATH, generated_id)
244-
# name = data.name()
245-
# object_type = geode_functions.get_object_type(geode_object)
246-
247-
# additional_files_copied = []
248-
# additional = geode_functions.additional_files(geode_object, input_filename)
249-
# for additional_file in additional.mandatory_files + additional.optional_files:
250-
# if additional_file.is_missing:
251-
# continue
252-
# source_path = os.path.join(
253-
# os.path.dirname(input_filename), additional_file.filename
254-
# )
255-
# if not os.path.exists(source_path):
256-
# continue
257-
# dest_path = os.path.join(data_path, additional_file.filename)
258-
# os.makedirs(os.path.dirname(dest_path), exist_ok=True)
259-
# shutil.copy2(source_path, dest_path)
260-
# additional_files_copied.append(additional_file.filename)
261-
262-
# saved_native_file_path = geode_functions.save(
263-
# geode_object,
264-
# data,
265-
# data_path,
266-
# "native." + data.native_extension(),
267-
# )
268-
# saved_viewable_file_path = geode_functions.save_viewable(
269-
# geode_object, data, data_path, "viewable"
270-
# )
271-
# viewable_file_name = os.path.basename(saved_viewable_file_path)
272-
# saved_light_viewable_file_path = geode_functions.save_light_viewable(
273-
# geode_object, data, data_path, "light_viewable"
274-
# )
275-
# with open(saved_light_viewable_file_path, "rb") as f:
276-
# binary_light_viewable = f.read()
277-
278-
# result = {
279-
# "name": name,
280-
# "native_file_name": os.path.basename(saved_native_file_path[0]),
281-
# "viewable_file_name": viewable_file_name,
282-
# "id": generated_id,
283-
# "object_type": object_type,
284-
# "binary_light_viewable": binary_light_viewable.decode("utf-8"),
285-
# "geode_object": geode_object,
286-
# "input_files": additional_files_copied
287-
# }
288-
# return result

tests/test_utils_functions.py

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -119,23 +119,22 @@ def test_generate_native_viewable_and_light_viewable_from_file(client):
119119
assert isinstance(result["input_files"], list)
120120

121121

122-
# def test_generate_native_viewable_and_light_viewable(client):
123-
# app = client.application
124-
# with app.app_context():
125-
# geode_object = "BRep"
126-
# data = geode_functions.load(geode_object, "./tests/data/test.og_brep")
127-
128-
# result = utils_functions.generate_native_viewable_and_light_viewable(
129-
# geode_object, data
130-
# )
131-
132-
# assert type(result) is dict
133-
# assert type(result["name"]) is str
134-
# assert type(result["native_file_name"]) is str
135-
# assert result["native_file_name"] == "native.og_brep"
136-
# assert type(result["viewable_file_name"]) is str
137-
# assert result["viewable_file_name"] == "viewable.vtm"
138-
# assert type(result["id"]) is str
139-
# assert re.match(r"[0-9a-f]{32}", result["id"])
140-
# assert type(result["object_type"]) is str
141-
# assert type(result["binary_light_viewable"]) is str
122+
def test_native_viewable_and_light_viewable(client):
123+
app = client.application
124+
with app.app_context():
125+
geode_object = "BRep"
126+
data = geode_functions.load(geode_object, "./tests/data/test.og_brep")
127+
result = utils_functions.generate_native_viewable_and_light_viewable(
128+
geode_object, data
129+
)
130+
131+
assert isinstance(result, dict)
132+
assert isinstance(result["name"], str)
133+
assert isinstance(result["native_file_name"], str)
134+
assert result["native_file_name"].startswith("native.")
135+
assert isinstance(result["viewable_file_name"], str)
136+
assert result["viewable_file_name"].endswith(".vtm")
137+
assert isinstance(result["id"], str)
138+
assert re.match(r"[0-9a-f]{32}", result["id"])
139+
assert isinstance(result["object_type"], str)
140+
assert isinstance(result["binary_light_viewable"], str)

0 commit comments

Comments
 (0)