Skip to content

Commit c78a4e6

Browse files
committed
Add support for qgis_server_url_tenant_suffix config setting
1 parent e2d78b9 commit c78a4e6

File tree

6 files changed

+47
-9
lines changed

6 files changed

+47
-9
lines changed

src/config_generator/capabilities_reader.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from xml.etree import ElementTree
44

55
import os
6+
import posixpath
67
import re
78
import requests
89
import traceback
@@ -30,6 +31,9 @@ def __init__(self, generator_config, logger, use_cached_project_metadata, cache_
3031
self.default_qgis_server_url = generator_config.get(
3132
'default_qgis_server_url', 'http://localhost:8001/ows/'
3233
).rstrip('/') + '/'
34+
self.qgis_server_url_tenant_suffix = generator_config.get(
35+
'qgis_server_url_tenant_suffix', ''
36+
).strip('/')
3337

3438
# layer opacity values for QGIS <= 3.10 from ConfigGenerator config
3539
self.layer_opacities = generator_config.get("layer_opacities", {})
@@ -44,18 +48,20 @@ def __init__(self, generator_config, logger, use_cached_project_metadata, cache_
4448

4549
# WMS GetProjectSettings
4650

47-
def read_wms_service_capabilities(self, url, service_name, item, themes_config):
51+
def read_wms_service_capabilities(self, service_name, item, themes_config):
4852
"""Load and parse WMS GetProjectSettings for a theme item.
4953
50-
:param str url: service URL
5154
:param str service_name: service name
5255
:param object item: theme item
5356
:param object themes_config: themes config
5457
"""
5558

5659
try:
5760
# get GetProjectSettings
58-
full_url = urljoin(self.default_qgis_server_url, url)
61+
full_url = urljoin(
62+
self.default_qgis_server_url,
63+
posixpath.join(self.qgis_server_url_tenant_suffix, service_name)
64+
)
5965

6066
if len(full_url) > 2000:
6167
self.logger.warning(
@@ -488,18 +494,20 @@ def collect_geometryless_layers(self, layer, internal_print_layers, ns, np,
488494

489495
# WFS Capabilities
490496

491-
def read_wfs_service_capabilities(self, url, service_name, item):
497+
def read_wfs_service_capabilities(self, service_name, item):
492498
"""Load and parse WFS GetCapabilities for a theme item.
493499
494500
NOTE: returns empty result if WFS does not contains any layers
495501
496-
:param str url: service URL
497502
:param str service_name: service name
498503
:param object item: theme item
499504
"""
500505
try:
501506
# get GetProjectSettings
502-
full_url = urljoin(self.default_qgis_server_url, url)
507+
full_url = urljoin(
508+
self.default_qgis_server_url,
509+
posixpath.join(self.qgis_server_url_tenant_suffix, service_name )
510+
)
503511

504512
if len(full_url) > 2000:
505513
self.logger.warning(

src/config_generator/feature_info_service_config.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ def __init__(self, generator_config, themes_reader, config_models,
3030
self.default_qgis_server_url = generator_config.get(
3131
'default_qgis_server_url', 'http://localhost:8001/ows/'
3232
).rstrip('/') + '/'
33+
self.qgis_server_url_tenant_suffix = generator_config.get(
34+
'qgis_server_url_tenant_suffix', ''
35+
).strip('/')
3336
self.permissions_default_allow = generator_config.get(
3437
'permissions_default_allow', True
3538
)
@@ -54,6 +57,11 @@ def config(self):
5457
cfg_config['default_qgis_server_url'] = \
5558
self.default_qgis_server_url
5659

60+
if 'qgis_server_url_tenant_suffix' not in cfg_config:
61+
# use qgis_server_url_tenant_suffix from ConfigGenerator config
62+
# if not set in service config
63+
cfg_config['qgis_server_url_tenant_suffix'] = self.qgis_server_url_tenant_suffix
64+
5765
config['config'] = cfg_config
5866

5967
resources = OrderedDict()

src/config_generator/legend_service_config.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ def __init__(self, generator_config, themes_reader, config_models,
3333
self.default_qgis_server_url = generator_config.get(
3434
'default_qgis_server_url', 'http://localhost:8001/ows/'
3535
).rstrip('/') + '/'
36+
self.qgis_server_url_tenant_suffix = generator_config.get(
37+
'qgis_server_url_tenant_suffix', ''
38+
).strip('/')
3639

3740
self.themes_reader = themes_reader
3841

@@ -49,6 +52,11 @@ def config(self):
4952
cfg_config['default_qgis_server_url'] = \
5053
self.default_qgis_server_url
5154

55+
if 'qgis_server_url_tenant_suffix' not in cfg_config:
56+
# use qgis_server_url_tenant_suffix from ConfigGenerator config
57+
# if not set in service config
58+
cfg_config['qgis_server_url_tenant_suffix'] = self.qgis_server_url_tenant_suffix
59+
5260
config['config'] = cfg_config
5361

5462
resources = OrderedDict()

src/config_generator/map_viewer_config.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import os
44
import re
55
from pathlib import Path
6+
import posixpath
67
import requests
78
import traceback
89
import urllib.parse
@@ -103,6 +104,9 @@ def __init__(self, tenant_path, generator_config, themes_reader,
103104
self.default_qgis_server_url = generator_config.get(
104105
'default_qgis_server_url', 'http://localhost:8001/ows/'
105106
).rstrip('/') + '/'
107+
self.qgis_server_url_tenant_suffix = generator_config.get(
108+
'qgis_server_url_tenant_suffix', ''
109+
).strip('/')
106110

107111
# Use default map thumbnail instead of generating via GetMap
108112
self.use_default_map_thumbnail = generator_config.get(
@@ -650,7 +654,10 @@ def get_thumbnail(self, cfg_item, service_name, capabilities, assets_dir):
650654
layers.append(layer['name'])
651655

652656
# WMS GetMap request
653-
url = urllib.parse.urljoin(self.default_qgis_server_url, service_name)
657+
url = urllib.parse.urljoin(
658+
self.default_qgis_server_url,
659+
posixpath.join(self.qgis_server_url_tenant_suffix, service_name)
660+
)
654661

655662
bboxw = extent[2] - extent[0]
656663
bboxh = extent[3] - extent[1]

src/config_generator/ogc_service_config.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ def __init__(self, generator_config, themes_reader, config_models,
2727
self.default_qgis_server_url = generator_config.get(
2828
'default_qgis_server_url', 'http://localhost:8001/ows/'
2929
).rstrip('/') + '/'
30+
self.qgis_server_url_tenant_suffix = generator_config.get(
31+
'qgis_server_url_tenant_suffix', ''
32+
).strip('/')
3033

3134
self.themes_reader = themes_reader
3235

@@ -51,6 +54,10 @@ def config(self):
5154
# if not set in service config
5255
cfg_config['default_qgis_server_url'] = \
5356
self.default_qgis_server_url
57+
if 'qgis_server_url_tenant_suffix' not in cfg_config:
58+
# use qgis_server_url_tenant_suffix from ConfigGenerator config
59+
# if not set in service config
60+
cfg_config['qgis_server_url_tenant_suffix'] = self.qgis_server_url_tenant_suffix
5461

5562
config['config'] = cfg_config
5663

src/config_generator/theme_reader.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,11 @@ def read_metadata_for_theme(self, item, themes_config):
9393

9494
self.logger.info("<b>Reading theme %s</b>" % url)
9595

96-
wms_capabilities = self.capabilities_reader.read_wms_service_capabilities(url, service_name, item, themes_config)
96+
wms_capabilities = self.capabilities_reader.read_wms_service_capabilities(service_name, item, themes_config)
9797

9898
wfs_capabilities = {}
9999
if self.generate_wfs_services:
100-
wfs_capabilities = self.capabilities_reader.read_wfs_service_capabilities(url, service_name, item)
100+
wfs_capabilities = self.capabilities_reader.read_wfs_service_capabilities(service_name, item)
101101

102102
qgs_reader = QGSReader(
103103
self.config, self.logger, self.qgis_projects_base_dir,

0 commit comments

Comments
 (0)