From f047c4a1156c727557df0deef493ae5a15193b48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Brunner?= Date: Wed, 8 Aug 2018 17:02:31 +0200 Subject: [PATCH] Invalidate the layer cache --- .../geomapfish_plugin/accesscontrol.py | 24 ++++++++++++------- .../scaffolds/update/CONST_vars.yaml_tmpl | 5 +++- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/docker/qgisserver/geomapfish_plugin/accesscontrol.py b/docker/qgisserver/geomapfish_plugin/accesscontrol.py index dde41a0d3bc..e89adab4729 100644 --- a/docker/qgisserver/geomapfish_plugin/accesscontrol.py +++ b/docker/qgisserver/geomapfish_plugin/accesscontrol.py @@ -9,21 +9,20 @@ option) any later version. """ -from qgis.core import QgsMessageLog +import geoalchemy2 import json import os -import sys -import traceback from shapely import ops -import geoalchemy2 import sqlalchemy +from sqlalchemy.orm import configure_mappers, scoped_session, sessionmaker +import sys from threading import Lock +import traceback +import zope.event.classhandler +from qgis.core import QgsMessageLog, QgsDataSourceUri, QgsProject from qgis.server import QgsAccessControlFilter -from qgis.core import QgsDataSourceUri, QgsProject - -from sqlalchemy.orm import configure_mappers, scoped_session, sessionmaker from c2cgeoportal_commons.config import config @@ -51,11 +50,20 @@ def __init__(self, server_iface): if "GEOMAPFISH_OGCSERVER" not in os.environ: raise GMFException("The environment variable 'GEOMAPFISH_OGCSERVER' is not defined.") - print("Use OGC server named '{}'".format(os.environ["GEOMAPFISH_OGCSERVER"])) + QgsMessageLog.logMessage("Use OGC server named '{}'".format(os.environ["GEOMAPFISH_OGCSERVER"])) config.init(os.environ.get('GEOMAPFISH_CONFIG', '/etc/qgisserver/geomapfish.yaml')) self.srid = config.get('srid') + from c2cgeoportal_commons.models.main import InvalidateCacheEvent + + @zope.event.classhandler.handler(InvalidateCacheEvent) + def handle(event: InvalidateCacheEvent): + del event + QgsMessageLog.logMessage("=== invalidate ===") + with self.lock: + self.layers = None + from c2cgeoportal_commons.models.main import OGCServer configure_mappers() diff --git a/geoportal/c2cgeoportal_geoportal/scaffolds/update/CONST_vars.yaml_tmpl b/geoportal/c2cgeoportal_geoportal/scaffolds/update/CONST_vars.yaml_tmpl index a166530e43a..2bb2da4f939 100644 --- a/geoportal/c2cgeoportal_geoportal/scaffolds/update/CONST_vars.yaml_tmpl +++ b/geoportal/c2cgeoportal_geoportal/scaffolds/update/CONST_vars.yaml_tmpl @@ -78,7 +78,10 @@ vars: C2C_REDIS_URL: redis://redis:6379 C2C_BROADCAST_PREFIX: broadcast_geoportal_ qgisserver: - environment: *geo-run-env + environment: + <<: *geo-run-env + C2C_REDIS_URL: redis://redis:6379 + C2C_BROADCAST_PREFIX: broadcast_geoportal_ tilecloudchain: environment: GUNICORN_PARAMS: