Skip to content
Snippets Groups Projects

F awi sams

Merged Florian Spreckelsen requested to merge f-awi-sams into main
1 unresolved thread
2 files
+ 48
234
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -3,6 +3,8 @@ import yaml
from pathlib import Path
import linkahead as db
with open(os.path.join(Path(__file__).parent, "default_constants.yml")) as yaml_file:
CONSTANTS = yaml.safe_load(yaml_file)
@@ -26,3 +28,39 @@ def get_column_header_name(name: str):
return CONSTANTS["csv_column_names"][name]
return get_entity_name(name)
def update_property(entity: db.Record, property_id: int, value, property_name="", datatype=None):
"""
Set the property of an entity.
If the entity already has the property, just the value is set.
Else, the property is added to the entity
"""
# TODO: Replace by assure_property_is etc.
# If the value in the spreadsheet is empty (nan)
if ((isinstance(value, list) and len(value) == 0)
or (not isinstance(value, list) and pd.isna(value))):
# Remove the property from te Entity if it has it
try:
entity.get_properties().get_by_name(property_name)
entity.remove_property(property_name)
except KeyError:
pass
return entity
if entity.get_property(property_id) is None:
if datatype:
entity.add_property(id=property_id, value=value, name=property_name, datatype=datatype)
else:
entity.add_property(id=property_id, value=value, name=property_name)
logger.debug("{}: Adding {} = {}".format(entity.id, property_id, value.id if
isinstance(value, db.Entity) else value))
else:
if isinstance(value, list) and not entity.get_property(property_id).datatype.startswith("LIST"):
entity.get_property(property_id).datatype = db.LIST(
entity.get_property(property_id).datatype)
entity.get_property(property_id).value = value
logger.debug("{}: Setting {} = {}".format(entity.id, property_id, value.id if
isinstance(value, db.Entity) else value))
return entity
Loading