@@ -19,30 +19,63 @@ def create_legacy(gi, desc):
1919 library_description = destination .get ("description" )
2020 library_synopsis = destination .get ("synopsis" )
2121
22- lib = gi .libraries .create_library (library_name , library_description , library_synopsis )
23- lib_id = lib ['id' ]
22+ # Check to see if the library already exists. If it does, do not recreate it. If it doesn't, create it.
23+ lib_id = None
24+ print ("Library name: " + str (library_name ))
25+ rmt_lib_list = gi .libraries .get_libraries (name = library_name , deleted = False )
26+ # Now we need to check if the library has been deleted since deleted=False still returns the deleted libraries!
27+ not_deleted_rmt_lib_list = []
2428 folder_id = None
2529
30+ if rmt_lib_list :
31+ for x in rmt_lib_list :
32+ if not x ['deleted' ]:
33+ not_deleted_rmt_lib_list .append (x )
34+ if not_deleted_rmt_lib_list :
35+ lib_id = not_deleted_rmt_lib_list [0 ]['id' ]
36+ print ("Library already exists! id: " + str (lib_id ))
37+ folder_id = gi .libraries .show_library (lib_id )['root_folder_id' ]
38+ else :
39+ lib = gi .libraries .create_library (library_name , library_description , library_synopsis )
40+ lib_id = lib ['id' ]
41+ folder_id = lib ['root_folder_id' ]
42+
2643 def populate_items (base_folder_id , has_items ):
2744 if "items" in has_items :
2845 name = has_items .get ("name" )
2946 folder_id = base_folder_id
3047 if name :
31- folder = gi .libraries .create_folder (lib_id , name , base_folder_id = base_folder_id )
32- folder_id = folder [0 ]["id" ]
48+ # Check to see if the folder already exists, if it doesn't create it.
49+ rmt_folder_list = []
50+ folder = gi .libraries .get_folders (lib_id , folder_id )
51+ new_folder_name = "/" + name
52+ if folder and not folder [0 ]['name' ] == "/" :
53+ new_folder_name = folder [0 ]['name' ] + "/" + name
54+ rmt_folder_list = gi .libraries .get_folders (lib_id , name = new_folder_name )
55+ if rmt_folder_list :
56+ folder_id = rmt_folder_list [0 ]['id' ]
57+ else :
58+ folder = gi .libraries .create_folder (lib_id , name , base_folder_id = base_folder_id )
59+ folder_id = folder [0 ]["id" ]
3360 for item in has_items ["items" ]:
3461 populate_items (folder_id , item )
3562 else :
3663 src = has_items ["src" ]
3764 if src != "url" :
3865 raise Exception ("For pre-18.05 Galaxies only support URLs src items are supported." )
39-
40- gi .libraries .upload_file_from_url (
41- lib_id ,
42- has_items ['url' ],
43- folder_id = base_folder_id ,
44- file_type = has_items ['ext' ]
45- )
66+ rmt_library_files = gi .folders .show_folder (base_folder_id , contents = True )['folder_contents' ]
67+ file_names = []
68+ for item in rmt_library_files :
69+ if item ['type' ] == 'file' :
70+ file_names .append (item ['name' ])
71+ if has_items ['url' ] not in file_names :
72+ gi .libraries .upload_file_from_url (
73+ lib_id ,
74+ has_items ['url' ],
75+ folder_id = base_folder_id ,
76+ file_type = has_items ['ext' ]
77+ )
78+ return None
4679
4780 populate_items (folder_id , desc )
4881
0 commit comments