20
20
21
21
from info_modules .sql import layer_info as sql_layer_info
22
22
from info_modules .wms import layer_info as wms_layer_info
23
- from info_templates import default_info_template , layer_template
23
+ from info_templates import layer_template
24
24
from utils import geom_center
25
25
26
26
@@ -87,6 +87,7 @@ def __init__(self, tenant, logger):
87
87
config_handler = RuntimeConfig ("featureInfo" , logger )
88
88
config = config_handler .tenant_config (tenant )
89
89
90
+ self .default_info_template = None
90
91
self .default_info_template_dir = None
91
92
if config .get ('default_info_template' ):
92
93
self .default_info_template = config .get ('default_info_template' )
@@ -105,8 +106,6 @@ def __init__(self, tenant, logger):
105
106
config .get ('default_info_template_base64' ),
106
107
default_info_template , "default info template"
107
108
)
108
- else :
109
- self .default_info_template = default_info_template
110
109
111
110
self .default_wms_url = config .get (
112
111
'default_qgis_server_url' , 'http://localhost:8001/ows/' )
@@ -504,33 +503,34 @@ def get_layer_info(self, identity, origin, service_name, layer, style, x, y, crs
504
503
geometry = feature .get ('geometry' )
505
504
506
505
info_html = None
507
- try :
508
- # render feature template
509
- templateLoader = None
510
- if template_dir :
511
- templateLoader = jinja2 .FileSystemLoader (searchpath = template_dir )
512
- templateEnv = jinja2 .Environment (loader = templateLoader , autoescape = True )
513
- feature_template = templateEnv .from_string (template )
514
- info_html = feature_template .render (
515
- feature = info_feature , fid = fid , bbox = bbox ,
516
- geometry = geometry , layer = layer , x = x , y = y , crs = crs ,
517
- render_value = self .render_value ,
518
- locale = locale
519
- )
520
- except jinja2 .TemplateSyntaxError as e :
521
- error_msg = (
522
- "TemplateSyntaxError on line %d: %s" % (e .lineno , e )
523
- )
524
- except jinja2 .TemplateError as e :
525
- error_msg = "TemplateError: %s" % e
526
- except Exception as e :
527
- error_msg = "TemplateError: %s" % e
528
- if error_msg is not None :
529
- self .logger .error (error_msg )
530
- info_html = (
531
- '<span class="info_error" style="color: red">%s</span>' %
532
- error_msg
533
- )
506
+ if template :
507
+ try :
508
+ # render feature template
509
+ templateLoader = None
510
+ if template_dir :
511
+ templateLoader = jinja2 .FileSystemLoader (searchpath = template_dir )
512
+ templateEnv = jinja2 .Environment (loader = templateLoader , autoescape = True )
513
+ feature_template = templateEnv .from_string (template )
514
+ info_html = feature_template .render (
515
+ feature = info_feature , fid = fid , bbox = bbox ,
516
+ geometry = geometry , layer = layer , x = x , y = y , crs = crs ,
517
+ render_value = self .render_value ,
518
+ locale = locale
519
+ )
520
+ except jinja2 .TemplateSyntaxError as e :
521
+ error_msg = (
522
+ "TemplateSyntaxError on line %d: %s" % (e .lineno , e )
523
+ )
524
+ except jinja2 .TemplateError as e :
525
+ error_msg = "TemplateError: %s" % e
526
+ except Exception as e :
527
+ error_msg = "TemplateError: %s" % e
528
+ if error_msg is not None :
529
+ self .logger .error (error_msg )
530
+ info_html = (
531
+ '<span class="info_error" style="color: red">%s</span>' %
532
+ error_msg
533
+ )
534
534
535
535
if geomcentroid and geometry :
536
536
gj = wkt .loads (geometry .upper ().replace ('Z' ,'' ))
@@ -542,7 +542,7 @@ def get_layer_info(self, identity, origin, service_name, layer, style, x, y, crs
542
542
543
543
features .append ({
544
544
'fid' : fid ,
545
- 'html_content' : self .html_content (info_html ) if with_htmlcontent else "" ,
545
+ 'html_content' : self .html_content (info_html ) if with_htmlcontent and info_html else "" ,
546
546
'plain_html' : info_html ,
547
547
'bbox' : bbox if with_bbox else None ,
548
548
'wkt_geom' : geometry ,
@@ -553,13 +553,19 @@ def get_layer_info(self, identity, origin, service_name, layer, style, x, y, crs
553
553
output = ""
554
554
for feature in features :
555
555
output += "Feature: {fid}\n " .format (fid = feature ['fid' ])
556
- output += '\n ' .join (map (lambda attr : "{alias}: {value}" . format ( alias = attr ['alias' ], value = attr ['value' ]) , feature ['attributes' ])) + '\n \n '
556
+ output += '\n ' .join (map (lambda attr : f" { attr ['alias' ]} : { attr ['value' ]} " , feature ['attributes' ])) + '\n \n '
557
557
return "Layer: {layer_title}\n \n {output}\n \n \n " .format (layer_title = layer_title , output = output )
558
558
elif output_info_format == 'text/html' :
559
559
output = ""
560
560
for feature in features :
561
- output += "<h2><i>Feature</i>: {fid}</h2>\n {plain_html}\n " .format (fid = feature ['fid' ], plain_html = feature ['plain_html' ])
562
- return "<h1><i>Layer</i>: {layer_title}</h1>\n {output}\n <br />\n " .format (layer_title = layer_title , output = output )
561
+ output += f"<h2><i>Feature</i>: { feature ['fid' ]} </h2>\n "
562
+ if feature ['plain_html' ]:
563
+ output += f"{ feature ['plain_html' ]} \n "
564
+ else :
565
+ output += "<table>\n "
566
+ output += '\n ' .join (map (lambda attr : f"<tr><td>{ attr ['alias' ]} </td><td>{ attr ['value' ]} </td></tr>" , feature ['attributes' ])) + '\n '
567
+ output += "</table>\n "
568
+ return f"<h1><i>Layer</i>: { layer_title } </h1>\n { output } \n <br />\n "
563
569
elif output_info_format == 'application/json' :
564
570
return {
565
571
"type" : "Feature" ,
0 commit comments