diff --git a/src/caosdb/common/models.py b/src/caosdb/common/models.py index ac9321bbd2384694d6606460d150ef2a64e68b38..495b4de52a2fa6ac69517aad50d5f1b1605ed873 100644 --- a/src/caosdb/common/models.py +++ b/src/caosdb/common/models.py @@ -981,6 +981,22 @@ class Entity(object): return self + def apply_to_ids(self, func): + self.id = func(self.id) + + for par in self.parents: + par.id = func(par.id) + + for prop in self.properties: + prop.id = func(prop.id) + isref = is_reference(prop.datatype) + + if isref: + if isinstance(prop.value, list): + prop.value = [func(el) for el in prop.value] + else: + prop.value = func(prop.value) + def _parse_col_values(cdt, vals): matcher = re.compile(r"^(?P<col>[^<]+)<(?P<dt>[^>]+)>$")