import of non-datalad projects
This commit is contained in:
parent
496724091d
commit
ec63662359
2 changed files with 32 additions and 16 deletions
|
@ -3,12 +3,12 @@ import datalad.api as dl
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
|
||||||
def _create_db(path):
|
def _create_db(db):
|
||||||
"""
|
"""
|
||||||
Create the database file and the table.
|
Create the database file and the table.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
conn = sqlite3.connect(path)
|
conn = sqlite3.connect(db)
|
||||||
c = conn.cursor()
|
c = conn.cursor()
|
||||||
c.execute('''CREATE TABLE IF NOT EXISTS backlogs
|
c.execute('''CREATE TABLE IF NOT EXISTS backlogs
|
||||||
(id INTEGER PRIMARY KEY,
|
(id INTEGER PRIMARY KEY,
|
||||||
|
@ -38,9 +38,8 @@ def create(path):
|
||||||
"""
|
"""
|
||||||
dl.create(path)
|
dl.create(path)
|
||||||
_create_db(path + '/backlogger.db')
|
_create_db(path + '/backlogger.db')
|
||||||
os.chmod(path + '/backlogger.db', 0o666)
|
os.chmod(path + '/backlogger.db', 0o666) # why does this not work?
|
||||||
os.makedirs(path + '/projects')
|
os.makedirs(path + '/projects')
|
||||||
os.makedirs(path + '/projects/tmp')
|
|
||||||
os.makedirs(path + '/archive')
|
os.makedirs(path + '/archive')
|
||||||
os.makedirs(path + '/import_scripts/template.py')
|
os.makedirs(path + '/import_scripts/template.py')
|
||||||
dl.save(path, dataset=path, message="Initialize backlogger directory.")
|
dl.save(path, dataset=path, message="Initialize backlogger directory.")
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
import sqlite3
|
import sqlite3
|
||||||
import datalad.api as dl
|
import datalad.api as dl
|
||||||
|
import datalad.config as dlc
|
||||||
import os
|
import os
|
||||||
from .git_tools import move_submodule
|
from .git_tools import move_submodule
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
|
||||||
def create_project(path, uuid, aliases=None, code=None):
|
def create_project(path, uuid, aliases=None, code=None):
|
||||||
|
@ -32,7 +34,7 @@ def create_project(path, uuid, aliases=None, code=None):
|
||||||
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 import_project(url, path, aliases=None, code=None):
|
def import_project(path, url, aliases=None, code=None, isDataset=True):
|
||||||
"""
|
"""
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
|
@ -41,25 +43,40 @@ def import_project(url, path, aliases=None, code=None):
|
||||||
The url of the project to import. This can be any url that datalad can handle.
|
The url of the project to import. This can be any url that datalad can handle.
|
||||||
path: str
|
path: str
|
||||||
The path to the backlogger folder.
|
The path to the backlogger folder.
|
||||||
name: str
|
aliases: list[str]
|
||||||
Custom name of the project, alias of the project.
|
Custom name of the project, alias of the project.
|
||||||
code: str
|
code: str
|
||||||
Code that was used to create the measurements.
|
Code that was used to create the measurements.
|
||||||
|
|
||||||
|
Import a datalad dataset into the backlogger.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
path: str
|
||||||
|
The path to the backlogger directory.
|
||||||
|
url: str
|
||||||
|
The url of the project to import. This can be any url that datalad can handle.
|
||||||
|
Also supported are non-datalad datasets, which will be converted to datalad datasets,
|
||||||
|
in order to receive a uuid and have a consistent interface.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# install in tmp to find uuid
|
|
||||||
tmp_path = path + '/projects/tmp'
|
tmp_path = path + '/projects/tmp'
|
||||||
dl.install(path=tmp_path, source=url, dataset=path)
|
if not isDataset:
|
||||||
with open(tmp_path + "/.datalad/config") as fp:
|
dl.create(path + '/projects/tmp', dataset=path)
|
||||||
for line in fp:
|
shutil.copytree(url + "/*", path + '/projects/tmp/')
|
||||||
if line.startswith("\tid"):
|
dl.save(path + '/projects/tmp', dataset=path)
|
||||||
uuid = line.split()[2]
|
else:
|
||||||
break
|
dl.install(path=tmp_path, source=url, dataset=path)
|
||||||
|
|
||||||
|
conf = dlc.ConfigManager(tmp_path)
|
||||||
|
uuid = conf.get("datalad.dataset.id")
|
||||||
|
if not uuid:
|
||||||
|
raise ValueError("The dataset does not have a uuid!")
|
||||||
|
dl.unlock(path + "/backlogger.db", dataset=path)
|
||||||
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 + '/projects/tmp')
|
|
||||||
|
|
||||||
os.mkdir(path + '/import_scripts/' + uuid)
|
os.mkdir(path + '/import_scripts/' + uuid)
|
||||||
dl.save(path, message="Import project from " + url, dataset=path)
|
# make this more concrete
|
||||||
|
dl.save([path + "/backlogger.db", 'projects/' + uuid], message="Import project from " + url, dataset=path)
|
||||||
return uuid
|
return uuid
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue