Skip to content

Commit ad1b5b8

Browse files
committed
original_file to input_file
new test.dxf generate_viewable function separeted into 2 functions
1 parent f73fa41 commit ad1b5b8

File tree

5 files changed

+113324
-2743093
lines changed

5 files changed

+113324
-2743093
lines changed

src/opengeodeweb_back/geode_functions.py

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -291,14 +291,3 @@ def create_coordinate_system(
291291
create_crs(
292292
geode_object, data, name, input_coordiante_system, output_coordiante_system
293293
)
294-
295-
296-
# def file_exists_in_upload(filename: str) -> bool:
297-
# """Vérifie si un fichier existe dans le dossier d'upload."""
298-
# file_path = upload_file_path(filename)
299-
# return os.path.exists(file_path)
300-
301-
# def file_exists_in_data(data_id: str, filename: str) -> bool:
302-
# """Vérifie si un fichier existe dans le dossier de données."""
303-
# file_path = data_file_path(data_id, filename)
304-
# return os.path.exists(file_path)

src/opengeodeweb_back/routes/blueprint_routes.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -242,14 +242,10 @@ def geode_objects_and_output_extensions():
242242
)
243243
def save_viewable_file():
244244
utils_functions.validate_request(flask.request, save_viewable_file_json)
245-
246-
file_path = geode_functions.upload_file_path(flask.request.json["filename"])
247-
data = geode_functions.load(flask.request.json["input_geode_object"], file_path)
248245
return flask.make_response(
249-
utils_functions.generate_native_viewable_and_light_viewable(
246+
utils_functions.generate_native_viewable_and_light_viewable_from_file(
250247
flask.request.json["input_geode_object"],
251-
data,
252-
original_filename=flask.request.json["filename"],
248+
input_filename=flask.request.json["filename"],
253249
),
254250
200,
255251
)
@@ -272,7 +268,7 @@ def create_point():
272268
builder.create_point(opengeode.Point3D([x, y, z]))
273269
builder.set_name(title)
274270
return flask.make_response(
275-
utils_functions.generate_native_viewable_and_light_viewable(
271+
utils_functions.generate_native_viewable_and_light_viewable_from_object(
276272
"PointSet3D", PointSet3D
277273
),
278274
200,

src/opengeodeweb_back/utils_functions.py

Lines changed: 104 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -143,29 +143,14 @@ def handle_exception(e):
143143
response.content_type = "application/json"
144144
return response
145145

146-
147-
def generate_native_viewable_and_light_viewable(
148-
geode_object, data, original_filename=None
149-
):
146+
def generate_native_viewable_and_light_viewable_from_object(geode_object, data):
150147
generated_id = str(uuid.uuid4()).replace("-", "")
151148
DATA_FOLDER_PATH = flask.current_app.config["DATA_FOLDER_PATH"]
152149
data_path = os.path.join(DATA_FOLDER_PATH, generated_id)
153150
name = data.name()
154151
object_type = geode_functions.get_object_type(geode_object)
155152

156153
additional_files_copied = []
157-
if original_filename:
158-
additional = geode_functions.additional_files(geode_object, original_filename)
159-
for additional_file in additional.mandatory_files + additional.optional_files:
160-
if not additional_file.is_missing:
161-
source_path = os.path.join(
162-
os.path.dirname(original_filename), additional_file.filename
163-
)
164-
if os.path.exists(source_path):
165-
dest_path = os.path.join(data_path, additional_file.filename)
166-
os.makedirs(os.path.dirname(dest_path), exist_ok=True)
167-
shutil.copy2(source_path, dest_path)
168-
additional_files_copied.append(additional_file.filename)
169154

170155
saved_native_file_path = geode_functions.save(
171156
geode_object,
@@ -191,9 +176,109 @@ def generate_native_viewable_and_light_viewable(
191176
"object_type": object_type,
192177
"binary_light_viewable": binary_light_viewable.decode("utf-8"),
193178
"geode_object": geode_object,
179+
"input_files": additional_files_copied,
194180
}
181+
return result
182+
183+
def generate_native_viewable_and_light_viewable_from_file(geode_object, input_filename):
184+
generated_id = str(uuid.uuid4()).replace("-", "")
185+
DATA_FOLDER_PATH = flask.current_app.config["DATA_FOLDER_PATH"]
186+
data_path = os.path.join(DATA_FOLDER_PATH, generated_id)
187+
os.makedirs(data_path, exist_ok=True)
195188

196-
if additional_files_copied:
197-
result["additional_files"] = additional_files_copied
189+
data = geode_functions.load(geode_object, input_filename)
190+
name = data.name()
191+
object_type = geode_functions.get_object_type(geode_object)
198192

199-
return result
193+
additional_files_copied = []
194+
additional = geode_functions.additional_files(geode_object, input_filename)
195+
for additional_file in additional.mandatory_files + additional.optional_files:
196+
if additional_file.is_missing:
197+
continue
198+
source_path = os.path.join(os.path.dirname(input_filename), additional_file.filename)
199+
if not os.path.exists(source_path):
200+
continue
201+
dest_path = os.path.join(data_path, additional_file.filename)
202+
os.makedirs(os.path.dirname(dest_path), exist_ok=True)
203+
shutil.copy2(source_path, dest_path)
204+
additional_files_copied.append(additional_file.filename)
205+
206+
saved_native_file_path = geode_functions.save(
207+
geode_object,
208+
data,
209+
data_path,
210+
"native." + data.native_extension(),
211+
)
212+
saved_viewable_file_path = geode_functions.save_viewable(
213+
geode_object, data, data_path, "viewable"
214+
)
215+
viewable_file_name = os.path.basename(saved_viewable_file_path)
216+
saved_light_viewable_file_path = geode_functions.save_light_viewable(
217+
geode_object, data, data_path, "light_viewable"
218+
)
219+
with open(saved_light_viewable_file_path, "rb") as f:
220+
binary_light_viewable = f.read()
221+
222+
return {
223+
"name": name,
224+
"native_file_name": os.path.basename(saved_native_file_path[0]),
225+
"viewable_file_name": viewable_file_name,
226+
"id": generated_id,
227+
"object_type": object_type,
228+
"binary_light_viewable": binary_light_viewable.decode("utf-8"),
229+
"geode_object": geode_object,
230+
"input_files": additional_files_copied,
231+
}
232+
233+
234+
# def generate_native_viewable_and_light_viewable(
235+
# geode_object, data, input_filename
236+
# ):
237+
# generated_id = str(uuid.uuid4()).replace("-", "")
238+
# DATA_FOLDER_PATH = flask.current_app.config["DATA_FOLDER_PATH"]
239+
# data_path = os.path.join(DATA_FOLDER_PATH, generated_id)
240+
# name = data.name()
241+
# object_type = geode_functions.get_object_type(geode_object)
242+
243+
# additional_files_copied = []
244+
# additional = geode_functions.additional_files(geode_object, input_filename)
245+
# for additional_file in additional.mandatory_files + additional.optional_files:
246+
# if additional_file.is_missing:
247+
# continue
248+
# source_path = os.path.join(
249+
# os.path.dirname(input_filename), additional_file.filename
250+
# )
251+
# if not os.path.exists(source_path):
252+
# continue
253+
# dest_path = os.path.join(data_path, additional_file.filename)
254+
# os.makedirs(os.path.dirname(dest_path), exist_ok=True)
255+
# shutil.copy2(source_path, dest_path)
256+
# additional_files_copied.append(additional_file.filename)
257+
258+
# saved_native_file_path = geode_functions.save(
259+
# geode_object,
260+
# data,
261+
# data_path,
262+
# "native." + data.native_extension(),
263+
# )
264+
# saved_viewable_file_path = geode_functions.save_viewable(
265+
# geode_object, data, data_path, "viewable"
266+
# )
267+
# viewable_file_name = os.path.basename(saved_viewable_file_path)
268+
# saved_light_viewable_file_path = geode_functions.save_light_viewable(
269+
# geode_object, data, data_path, "light_viewable"
270+
# )
271+
# with open(saved_light_viewable_file_path, "rb") as f:
272+
# binary_light_viewable = f.read()
273+
274+
# result = {
275+
# "name": name,
276+
# "native_file_name": os.path.basename(saved_native_file_path[0]),
277+
# "viewable_file_name": viewable_file_name,
278+
# "id": generated_id,
279+
# "object_type": object_type,
280+
# "binary_light_viewable": binary_light_viewable.decode("utf-8"),
281+
# "geode_object": geode_object,
282+
# "input_files": additional_files_copied
283+
# }
284+
# return result

0 commit comments

Comments
 (0)