From c8a6ece27a6207defbd6ca4586c4bd0ffd591211 Mon Sep 17 00:00:00 2001 From: "arnaud.morvan@camptocamp.com" Date: Mon, 27 May 2019 10:29:18 +0200 Subject: [PATCH] Load treeitems and ogcservers in sqlmalchemy session.identity_map --- geoportal/c2cgeoportal_geoportal/views/entry.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/geoportal/c2cgeoportal_geoportal/views/entry.py b/geoportal/c2cgeoportal_geoportal/views/entry.py index 4c75bda2b4..49385515f1 100644 --- a/geoportal/c2cgeoportal_geoportal/views/entry.py +++ b/geoportal/c2cgeoportal_geoportal/views/entry.py @@ -140,6 +140,8 @@ def __init__(self, request): self.metadata_type = get_types_map( self.settings.get("admin_interface", {}).get("available_metadata", []) ) + self._ogcservers_cache = None + self._treeitems_cache = None self._layerswms_cache = None self._layerswmts_cache = None self._layergroup_cache = None @@ -682,6 +684,9 @@ def _wms_layers(self, ogc_server): return wms, list(wms.contents), wms_errors def _load_tree_items(self): + # Populate sqlalchemy session.identity_map to reduce the number of database requests. + self._ogcservers_cache = models.DBSession.query(main.OGCServer).all() + self._treeitems_cache = models.DBSession.query(main.TreeItem).all() self._layerswms_cache = models.DBSession.query(main.LayerWMS).options( subqueryload(main.LayerWMS.dimensions), subqueryload(main.LayerWMS.metadatas) ).all()