From 3ce1eaaff25f87d43ccb17d78bc0363aeb817e2c Mon Sep 17 00:00:00 2001 From: Markus Scheidgen <markus.scheidgen@gmail.com> Date: Tue, 15 Dec 2020 14:40:16 +0100 Subject: [PATCH] JSON encode MSection values for nomad specific optimade properties. #450 --- nomad/app/optimade/models.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/nomad/app/optimade/models.py b/nomad/app/optimade/models.py index 6516b18511..36240d774f 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 -- GitLab