Skip to content

Commit 49e00a4

Browse files
authored
Merge pull request #103 from gvlproject/data_library_checking
Makes setup_data_libraries.py check for existence before recreation o…
2 parents 668a8c9 + deb8c42 commit 49e00a4

1 file changed

Lines changed: 44 additions & 11 deletions

File tree

ephemeris/setup_data_libraries.py

Lines changed: 44 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)