@@ -1615,14 +1615,24 @@ def slugify_zh(text, separator='_'):
1615
1615
return text
1616
1616
1617
1617
1618
- def get_legend_url (instance , style_name ):
1618
+ def get_legend_url (
1619
+ instance , style_name , / ,
1620
+ service_url = None ,
1621
+ layer_name = None ,
1622
+ version = '1.3.0' ,
1623
+ sld_version = '1.1.0' ,
1624
+ width = 20 ,
1625
+ height = 20 ,
1626
+ params = None ):
1619
1627
from geonode .geoserver .helpers import ogc_server_settings
1620
1628
1621
- return (f"{ ogc_server_settings .PUBLIC_LOCATION } ows?"
1622
- "service=WMS&request=GetLegendGraphic&format=image/png&WIDTH=20&HEIGHT=20&"
1623
- f"LAYER={ instance .alternate } &STYLE={ style_name } &version=1.3.0&"
1624
- "sld_version=1.1.0&legend_options=fontAntiAliasing:true;fontSize:12;forceLabels:on"
1625
- )
1629
+ _service_url = service_url or f"{ ogc_server_settings .PUBLIC_LOCATION } ows"
1630
+ _layer_name = layer_name or instance .alternate
1631
+ _params = f"&{ params } " if params else ""
1632
+ return (f"{ _service_url } ?"
1633
+ f"service=WMS&request=GetLegendGraphic&format=image/png&WIDTH={ width } &HEIGHT={ height } &"
1634
+ f"LAYER={ _layer_name } &STYLE={ style_name } &version={ version } &"
1635
+ f"sld_version={ sld_version } &legend_options=fontAntiAliasing:true;fontSize:12;forceLabels:on{ _params } " )
1626
1636
1627
1637
1628
1638
def set_resource_default_links (instance , layer , prune = False , ** kwargs ):
@@ -1847,24 +1857,31 @@ def set_resource_default_links(instance, layer, prune=False, **kwargs):
1847
1857
# Legend link
1848
1858
logger .debug (" -- Resource Links[Legend link]..." )
1849
1859
try :
1850
- for style in set (list (instance .styles .all ()) + [instance .default_style , ]):
1851
- if style :
1852
- style_name = os .path .basename (
1853
- urlparse (style .sld_url ).path ).split ('.' )[0 ]
1854
- legend_url = get_legend_url (instance , style_name )
1855
-
1856
- if Link .objects .filter (resource = instance .resourcebase_ptr , url = legend_url ).count () < 2 :
1857
- Link .objects .update_or_create (
1858
- resource = instance .resourcebase_ptr ,
1859
- name = 'Legend' ,
1860
- url = legend_url ,
1861
- defaults = dict (
1862
- extension = 'png' ,
1860
+ if instance .storeType != 'remoteStore' :
1861
+ for style in set (list (instance .styles .all ()) + [instance .default_style , ]):
1862
+ if style :
1863
+ style_name = os .path .basename (
1864
+ urlparse (style .sld_url ).path ).split ('.' )[0 ]
1865
+ legend_url = get_legend_url (instance , style_name )
1866
+ if Link .objects .filter (resource = instance .resourcebase_ptr , url = legend_url ).count () < 2 :
1867
+ Link .objects .update_or_create (
1868
+ resource = instance .resourcebase_ptr ,
1869
+ name = 'Legend' ,
1863
1870
url = legend_url ,
1864
- mime = 'image/png' ,
1865
- link_type = 'image' ,
1871
+ defaults = dict (
1872
+ extension = 'png' ,
1873
+ url = legend_url ,
1874
+ mime = 'image/png' ,
1875
+ link_type = 'image' ,
1876
+ )
1866
1877
)
1867
- )
1878
+ else :
1879
+ from geonode .services .serviceprocessors .handler import get_service_handler
1880
+ handler = get_service_handler (
1881
+ instance .remote_service .base_url , service_type = instance .remote_service .type )
1882
+ if hasattr (handler , '_create_layer_legend_link' ):
1883
+ handler ._create_layer_legend_link (instance )
1884
+
1868
1885
logger .debug (" -- Resource Links[Legend link]...done!" )
1869
1886
except Exception as e :
1870
1887
logger .debug (f" -- Resource Links[Legend link]...error: { e } " )
0 commit comments