diff --git a/entities.py b/entities.py index 235988caf1392f5d725f5bb8074714846c93a3f8_ZW50aXRpZXMucHk=..d0bef20eb4a8d55e773ecaa3d073ca4d46e60c00_ZW50aXRpZXMucHk= 100644 --- a/entities.py +++ b/entities.py @@ -16,6 +16,9 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. """cubicweb-elasticsearch entity's classes""" + +import collections + from cubicweb import view from cubicweb.predicates import is_instance @@ -24,6 +27,15 @@ from cubes.elasticsearch import es +def deep_update(d1, d2): + for key, value in d2.iteritems(): + if isinstance(value, collections.Mapping): + d1[key] = deep_update(d1.get(key, {}), value) + else: + d1[key] = d2[key] + return d1 + + class EsRegistry(AppObject): __registry__ = 'es' @@ -55,8 +67,8 @@ settings = self.settings else: settings = {} - settings.update(self.settings) - settings.update(custom_settings) + deep_update(settings, self.settings) + deep_update(settings, custom_settings) es.create_index(self.get_connection(), index_name, settings)