enableupdateing of aliases

This commit is contained in:
Justus Kuhlmann 2025-03-30 17:40:01 +00:00
parent 7af22b04ec
commit 9024268cae

View file

@ -4,6 +4,8 @@ import datalad.config as dlc
import os
from .git_tools import move_submodule
import shutil
from .find import _project_lookup_by_id
from .tools import list2str, str2list
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.")
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.close()
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):
"""
Parameters
@ -62,9 +75,9 @@ def import_project(path, url, aliases=None, code=None, isDataset=True):
"""
tmp_path = path + '/projects/tmp'
if not isDataset:
dl.create(path + '/projects/tmp', dataset=path)
dl.create(tmp_path, dataset=path)
shutil.copytree(url + "/*", path + '/projects/tmp/')
dl.save(path + '/projects/tmp', dataset=path)
dl.save(tmp_path, dataset=path)
else:
dl.install(path=tmp_path, source=url, dataset=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)
move_submodule(path, 'projects/tmp', 'projects/' + 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:
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
return uuid