enableupdateing of aliases
This commit is contained in:
parent
7af22b04ec
commit
9024268cae
1 changed files with 33 additions and 5 deletions
|
@ -4,6 +4,8 @@ import datalad.config as dlc
|
||||||
import os
|
import os
|
||||||
from .git_tools import move_submodule
|
from .git_tools import move_submodule
|
||||||
import shutil
|
import shutil
|
||||||
|
from .find import _project_lookup_by_id
|
||||||
|
from .tools import list2str, str2list
|
||||||
|
|
||||||
|
|
||||||
def create_project(path, uuid, aliases=None, code=None):
|
def create_project(path, uuid, aliases=None, code=None):
|
||||||
|
@ -28,12 +30,23 @@ def create_project(path, uuid, aliases=None, code=None):
|
||||||
raise ValueError("Project already imported, use update_project() instead.")
|
raise ValueError("Project already imported, use update_project() instead.")
|
||||||
|
|
||||||
dl.unlock(path + "/backlogger.db", dataset=path)
|
dl.unlock(path + "/backlogger.db", dataset=path)
|
||||||
c.execute("INSERT INTO projects (id, aliases, code, created_at, updated_at) VALUES (?, ?, ?, datetime('now'), datetime('now'))", (uuid, aliases, code))
|
if aliases is not None:
|
||||||
|
alias_str = list2str(aliases)
|
||||||
|
c.execute("INSERT INTO projects (id, aliases, code, created_at, updated_at) VALUES (?, ?, ?, datetime('now'), datetime('now'))", (uuid, alias_str, code))
|
||||||
conn.commit()
|
conn.commit()
|
||||||
conn.close()
|
conn.close()
|
||||||
dl.save(path + "/backlogger.db", message="Added entry for project " + uuid + " to database", dataset=path)
|
dl.save(path + "/backlogger.db", message="Added entry for project " + uuid + " to database", dataset=path)
|
||||||
|
|
||||||
|
|
||||||
|
def update_project_data(db, uuid, prop, value = None):
|
||||||
|
conn = sqlite3.connect(db)
|
||||||
|
c = conn.cursor()
|
||||||
|
c.execute(f"UPDATE projects SET '{prop}' = '{value}' WHERE id == '{uuid}'")
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
def import_project(path, url, aliases=None, code=None, isDataset=True):
|
def import_project(path, url, aliases=None, code=None, isDataset=True):
|
||||||
"""
|
"""
|
||||||
Parameters
|
Parameters
|
||||||
|
@ -62,9 +75,9 @@ def import_project(path, url, aliases=None, code=None, isDataset=True):
|
||||||
"""
|
"""
|
||||||
tmp_path = path + '/projects/tmp'
|
tmp_path = path + '/projects/tmp'
|
||||||
if not isDataset:
|
if not isDataset:
|
||||||
dl.create(path + '/projects/tmp', dataset=path)
|
dl.create(tmp_path, dataset=path)
|
||||||
shutil.copytree(url + "/*", path + '/projects/tmp/')
|
shutil.copytree(url + "/*", path + '/projects/tmp/')
|
||||||
dl.save(path + '/projects/tmp', dataset=path)
|
dl.save(tmp_path, dataset=path)
|
||||||
else:
|
else:
|
||||||
dl.install(path=tmp_path, source=url, dataset=path)
|
dl.install(path=tmp_path, source=url, dataset=path)
|
||||||
tmp_ds = dl.Dataset(tmp_path)
|
tmp_ds = dl.Dataset(tmp_path)
|
||||||
|
@ -77,8 +90,23 @@ def import_project(path, url, aliases=None, code=None, isDataset=True):
|
||||||
create_project(path, uuid, aliases, code)
|
create_project(path, uuid, aliases, code)
|
||||||
move_submodule(path, 'projects/tmp', 'projects/' + uuid)
|
move_submodule(path, 'projects/tmp', 'projects/' + uuid)
|
||||||
os.mkdir(path + '/import_scripts/' + uuid)
|
os.mkdir(path + '/import_scripts/' + uuid)
|
||||||
dl.save([path + "/backlogger.db", 'projects/' + uuid], message="Import project from " + url, dataset=path)
|
dl.save([path + "/backlogger.db", path + '/projects/' + uuid], message="Import project from " + url, dataset=path)
|
||||||
else:
|
else:
|
||||||
print("Project is already imported.")
|
known_data = _project_lookup_by_id(uuid)[0]
|
||||||
|
known_aliases = known_data[1]
|
||||||
|
if known_aliases is None:
|
||||||
|
print(f"Project {uuid} is already imported, no known aliases.")
|
||||||
|
else:
|
||||||
|
print(f"Project {uuid} is already imported, known by names: {known_aliases}")
|
||||||
|
|
||||||
|
if aliases is not None:
|
||||||
|
known_alias_list = str2list(known_aliases)
|
||||||
|
new_alias_list = known_alias_list
|
||||||
|
for aka in aliases:
|
||||||
|
if aka not in known_aliases:
|
||||||
|
new_alias_list.append(aka)
|
||||||
|
if not len(new_alias_list) == len(known_alias_list):
|
||||||
|
alias_str = list2str(new_alias_list)
|
||||||
|
update_project_data(path, uuid, "aliases", alias_str)
|
||||||
# make this more concrete
|
# make this more concrete
|
||||||
return uuid
|
return uuid
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue