diff --git a/nomad/app/optimade/models.py b/nomad/app/optimade/models.py index 6516b185112c393c222fa6075538fd8a9bea2edc..36240d774f18d46bff4f613b3f640958c4b31514 100644 --- a/nomad/app/optimade/models.py +++ b/nomad/app/optimade/models.py @@ -30,7 +30,7 @@ import numpy as np from nomad import config, datamodel, files from nomad.app.common import RFC3339DateTime from nomad.normalizing.optimade import optimade_chemical_formula_reduced -from nomad.metainfo import Datetime, MEnum +from nomad.metainfo import Datetime, MEnum, MSection from nomad.datamodel import EntryMetadata from nomad.datamodel.dft import DFTMetadata from nomad.datamodel.optimade import OptimadeEntry @@ -320,9 +320,14 @@ class EntryDataObject: try: if request_field.startswith('_nmd_dft_'): - attrs[request_field] = getattr(calc.dft, request_field[9:]) + response_value = getattr(calc.dft, request_field[9:]) else: - attrs[request_field] = getattr(calc, request_field[5:]) + response_value = getattr(calc, request_field[5:]) + + if isinstance(response_value, MSection): + response_value = response_value.m_to_dict() + + attrs[request_field] = response_value except AttributeError: # if unknown properties where provided, we will ignore them pass