diff --git a/src/caosadvancedtools/export_related.py b/src/caosadvancedtools/export_related.py index ebc3dac50c825371aade6a24d294ff87d3fdd9d0..1c32106a6db7881d529f8eb28f7a6b31c313154c 100644 --- a/src/caosadvancedtools/export_related.py +++ b/src/caosadvancedtools/export_related.py @@ -35,6 +35,7 @@ import os import caosdb as db from caosdb.apiutils import retrieve_entities_with_ids from caosdb.common.datatype import get_id_of_datatype, is_reference +from lxml import etree def get_ids_of_related_entities(entity): diff --git a/src/caosadvancedtools/import_from_xml.py b/src/caosadvancedtools/import_from_xml.py index 29c97ad79c8d4ce671cfd83a219bcf23b24949a4..8e17d8e0c38c51bd5aaf16a9addf39d839e51406 100644 --- a/src/caosadvancedtools/import_from_xml.py +++ b/src/caosadvancedtools/import_from_xml.py @@ -35,7 +35,7 @@ import caosdb as db from caosmodels.data_model import DataModel from lxml import etree -from export_related import apply_to_ids +RERUN = False def create_dummy_file(text="Please ask the administrator for this file."): @@ -76,22 +76,27 @@ def main(filename): # TODO why is this necessary? new_files = [] + print(files) - for fi in files: - new = db.File(file=fi.file, path=fi.path, name=fi.name, id=fi.id, - description=fi.description) + if not RERUN: + for fi in files: + new = db.File(file=fi.file, path=fi.path, name=fi.name, id=fi.id, + description=fi.description) - for p in fi.parents: - new.add_parent(p) - new_files.append(new) - - files = new_files + for p in fi.parents: + new.add_parent(p) + new_files.append(new) + else: + for fi in files: + new = db.File(path=fi.path, id=fi.id) + new_files.append(new) # remove entities of the model from the container for el in model+files: cont.remove(el) - cont.remove(fi) + + files = new_files id_mapping = {} @@ -105,9 +110,15 @@ def main(filename): # insert files - for i, el in enumerate(files): - id_mapping[el.id] = el - el.insert(unique=False) + if not RERUN: + for i, el in enumerate(files): + print(el) + r = el.insert(unique=False) + print(r) + else: + for i, el in enumerate(files): + el.id = None + el.retrieve() def replace_by_new(old): if old in id_mapping: @@ -118,7 +129,7 @@ def main(filename): # set the ids of already inserted entities in the container for el in cont: - apply_to_ids(el, replace_by_new) + el.apply_to_ids(replace_by_new) cont.insert(unique=False) diff --git a/src/caosadvancedtools/table_converter.py b/src/caosadvancedtools/table_converter.py index c2d0ac38cd59826c384a053d2e32ffcc6eafa9e5..76f4dfcdb5f040d81d923289a7a730806ad8681b 100644 --- a/src/caosadvancedtools/table_converter.py +++ b/src/caosadvancedtools/table_converter.py @@ -24,9 +24,8 @@ import argparse import re import sys -import pandas as pd - import caosdb as db +import pandas as pd def from_tsv(filename, recordtype): @@ -81,6 +80,10 @@ def from_table(spreadsheet, recordtype): rec.add_parent(name=recordtype) for key, value in row.iteritems(): + if key.lower() == "description": + rec.description = value + continue + if (pd.notnull(value) and (not isinstance(value, str) or value.strip() != "")): regexp = r"(.*)\[(.*)\].*"