@@ -235,66 +235,61 @@ def geode_objects_and_output_extensions():
235235) as file :
236236 save_viewable_file_json = json .load (file )
237237
238+ def save_geode_object (geode_object , data , folder_absolute_path , id ):
239+ saved_native_file_path = geode_functions .save (
240+ geode_object , data , folder_absolute_path , id + "." + data .native_extension ()
241+ )
242+ saved_viewable_file_path = geode_functions .save_viewable (
243+ geode_object , data , folder_absolute_path , id
244+ )
245+ saved_light_viewable_file_path = geode_functions .save_light_viewable (
246+ geode_object , data , folder_absolute_path , "light_" + id
247+ )
248+ f = open (saved_light_viewable_file_path , "rb" )
249+ binary_light_viewable = f .read ()
250+ f .close ()
251+ return {
252+ "native_file_name" : os .path .basename (saved_native_file_path [0 ]),
253+ "viewable_file_name" : os .path .basename (saved_viewable_file_path [0 ]),
254+ "binary_light_viewable" : str (binary_light_viewable , "utf-8" ),
255+ }
256+
257+ def create_geode_object_response (geode_object , data , folder_absolute_path ):
258+ generated_id = str (uuid .uuid4 ()).replace ("-" , "" )
259+ name = data .name ()
260+ object_type = geode_functions .get_object_type (geode_object )
261+
262+ saved_files_info = save_geode_object (
263+ geode_object , data , folder_absolute_path , generated_id
264+ )
265+
266+ return {
267+ "name" : name ,
268+ "native_file_name" : saved_files_info ["native_file_name" ],
269+ "viewable_file_name" : saved_files_info ["viewable_file_name" ],
270+ "id" : generated_id ,
271+ "object_type" : object_type ,
272+ "binary_light_viewable" : saved_files_info ["binary_light_viewable" ],
273+ "geode_object" : geode_object ,
274+ }
238275
239276@routes .route (
240277 save_viewable_file_json ["route" ],
241278 methods = save_viewable_file_json ["methods" ],
242279)
243280def save_viewable_file ():
281+ utils_functions .validate_request (flask .request , save_viewable_file_json )
244282 UPLOAD_FOLDER = flask .current_app .config ["UPLOAD_FOLDER" ]
245283 DATA_FOLDER_PATH = flask .current_app .config ["DATA_FOLDER_PATH" ]
246- utils_functions .validate_request (flask .request , save_viewable_file_json )
247-
248284 secure_filename = werkzeug .utils .secure_filename (flask .request .json ["filename" ])
249285 file_path = os .path .abspath (os .path .join (UPLOAD_FOLDER , secure_filename ))
250286 data = geode_functions .load (flask .request .json ["input_geode_object" ], file_path )
251287 generated_id = str (uuid .uuid4 ()).replace ("-" , "" )
252-
253288 name = data .name ()
254- native_extension = data .native_extension ()
255-
256- absolute_native_file_path = os .path .join (
257- UPLOAD_FOLDER , generated_id + "." + native_extension
258- )
259-
260- saved_viewable_file_path = geode_functions .save_viewable (
261- flask .request .json ["input_geode_object" ], data , DATA_FOLDER_PATH , generated_id
262- )
263-
264- saved_light_viewable_file_path = geode_functions .save_light_viewable (
265- flask .request .json ["input_geode_object" ],
266- data ,
267- DATA_FOLDER_PATH ,
268- "light_" + generated_id ,
269- )
270-
271- f = open (saved_light_viewable_file_path , "rb" )
272- binary_light_viewable = f .read ()
273- f .close ()
274-
275- geode_functions .save (
276- flask .request .json ["input_geode_object" ],
277- data ,
278- DATA_FOLDER_PATH ,
279- generated_id + "." + native_extension ,
280- )
281- os .remove (os .path .join (UPLOAD_FOLDER , secure_filename ))
282- object_type = geode_functions .get_object_type (
283- flask .request .json ["input_geode_object" ]
284- )
285-
286- native_file_name = os .path .basename (absolute_native_file_path )
287- viewable_file_name = os .path .basename (saved_viewable_file_path )
289+ object_type = geode_functions .get_object_type (flask .request .json ["input_geode_object" ])
288290 return flask .make_response (
289- {
290- "name" : name ,
291- "native_file_name" : native_file_name ,
292- "viewable_file_name" : viewable_file_name ,
293- "id" : generated_id ,
294- "object_type" : object_type ,
295- "binary_light_viewable" : str (binary_light_viewable , "utf-8" ),
296- },
297- 200 ,
291+ create_geode_object_response (flask .request .json ["input_geode_object" ], data , DATA_FOLDER_PATH ),
292+ 200 ,
298293 )
299294
300295
@@ -318,35 +313,9 @@ def create_point():
318313 name = PointSet3D .name ()
319314 generated_id = str (uuid .uuid4 ()).replace ("-" , "" )
320315 object_type = geode_functions .get_object_type ("PointSet3D" )
321- saved_native_file_path = geode_functions .save (
322- "PointSet3D" , PointSet3D , DATA_FOLDER_PATH , generated_id + ".og_pts3d"
323- )
324- saved_viewable_file_path = geode_functions .save_viewable (
325- "PointSet3D" , PointSet3D , DATA_FOLDER_PATH , generated_id
326- )
327- saved_light_viewable_file_path = geode_functions .save_light_viewable (
328- "PointSet3D" , PointSet3D , DATA_FOLDER_PATH , "light_" + generated_id
329- )
330-
331- f = open (saved_light_viewable_file_path , "rb" )
332- binary_light_viewable = f .read ()
333- f .close ()
334-
335- native_file_name = os .path .basename (saved_native_file_path [0 ])
336- viewable_file_name = os .path .basename (saved_viewable_file_path )
337-
338316 return flask .make_response (
339- {
340- "viewable_file_name" : os .path .basename (saved_viewable_file_path ),
341- "id" : generated_id ,
342- "name" : name ,
343- "native_file_name" : native_file_name ,
344- "viewable_file_name" : viewable_file_name ,
345- "object_type" : object_type ,
346- "geode_object" : "PointSet3D" ,
347- "binary_light_viewable" : str (binary_light_viewable , "utf-8" ),
348- },
349- 200 ,
317+ create_geode_object_response ("PointSet3D" , PointSet3D , DATA_FOLDER_PATH ),
318+ 200 ,
350319 )
351320
352321
0 commit comments