@@ -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