def get_native_annotation_data(query_obj: QueryObject) -> Dict[str, Any]: annotation_data = {} annotation_layers = [ layer for layer in query_obj.annotation_layers if layer["sourceType"] == "NATIVE" ] layer_ids = [layer["value"] for layer in annotation_layers] layer_objects = { layer_object.id: layer_object for layer_object in AnnotationLayerDAO.find_by_ids(layer_ids) } # annotations for layer in annotation_layers: layer_id = layer["value"] layer_name = layer["name"] columns = [ "start_dttm", "end_dttm", "short_descr", "long_descr", "json_metadata", ] layer_object = layer_objects[layer_id] records = [ {column: getattr(annotation, column) for column in columns} for annotation in layer_object.annotation ] result = {"columns": columns, "records": records} annotation_data[layer_name] = result return annotation_data
def validate(self) -> None: # Validate/populate model exists self._models = AnnotationLayerDAO.find_by_ids(self._model_ids) if not self._models or len(self._models) != len(self._model_ids): raise AnnotationLayerNotFoundError() if AnnotationLayerDAO.has_annotations(self._model_ids): raise AnnotationLayerBulkDeleteIntegrityError()