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