Skip to content

Commit

Permalink
Return SLD style in version it was sent
Browse files Browse the repository at this point in the history
  • Loading branch information
index-git committed Jan 10, 2023
1 parent 5310cb8 commit 7ffd352
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 6 deletions.
32 changes: 29 additions & 3 deletions src/geoserver/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,14 @@
}

headers_sld = {
'Accept': 'application/vnd.ogc.sld+xml',
'Content-type': 'application/xml',
'1.0.0': {
'Accept': 'application/vnd.ogc.sld+xml',
'Content-type': 'application/xml',
},
'1.1.0': {
'Accept': 'application/vnd.ogc.se+xml',
'Content-type': 'application/xml',
},
}

WMS_SERVICE_TYPE = 'wms'
Expand Down Expand Up @@ -342,6 +348,11 @@ def get_workspace_style_url(geoserver_workspace, style=None):
geoserver_workspace + '/styles/' + style)


def get_workspace_style_json_url(geoserver_workspace, style):
return urljoin(GS_REST_WORKSPACES,
geoserver_workspace + '/styles/' + style + '.json')


def post_workspace_sld_style(geoserver_workspace, layername, sld_file, launder_function):
if sld_file is None:
response = requests.get(
Expand Down Expand Up @@ -413,7 +424,13 @@ def post_workspace_sld_style(geoserver_workspace, layername, sld_file, launder_f

def get_workspace_style_response(geoserver_workspace, stylename, headers=None, auth=None):
if headers is None:
headers = headers_sld
response = get_workspace_style_json(geoserver_workspace, stylename, auth)
if response.status_code == 200:
style_dict = json.loads(response.content)
version = style_dict['style']['languageVersion']['version']
else:
version = '1.1.0'
headers = headers_sld[version]
url = get_workspace_style_url(geoserver_workspace, stylename)
response = requests.get(url,
auth=auth,
Expand All @@ -423,6 +440,15 @@ def get_workspace_style_response(geoserver_workspace, stylename, headers=None, a
return response


def get_workspace_style_json(geoserver_workspace, stylename, auth=None):
url = get_workspace_style_json_url(geoserver_workspace, stylename)
response = requests.get(url,
auth=auth,
timeout=GS_REST_TIMEOUT,
)
return response


def delete_workspace_style(geoserver_workspace, stylename, auth=None):
response = get_workspace_style_response(geoserver_workspace, stylename, auth=auth)
if response.status_code == 404:
Expand Down
2 changes: 1 addition & 1 deletion src/layman/layer/geoserver/sld.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ def delete_layer(workspace, layername):


def get_layer_info(workspace, layername):
response = get_style_response(workspace, layername, gs_util.headers_sld, settings.LAYMAN_GS_AUTH)
response = get_style_response(workspace, layername, gs_util.headers_sld['1.0.0'], settings.LAYMAN_GS_AUTH)
if response and response.status_code == 200:
url = url_for('rest_workspace_layer_style.get', workspace=workspace, layername=layername)
info = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@
TEST_CASES = {
'default_sld': {
EnumTestKeys.TYPE: EnumTestTypes.OPTIONAL,
'exp_version': '1.0.0',
'exp_version': '1.1.0',
},
'sld_1_1_0': {
'style_file': 'sample/style/sld_1_1_0.xml',
'exp_version': '1.0.0',
'exp_version': '1.1.0',
},
'sld_1_0_0': {
'style_file': 'sample/style/basic.sld',
Expand Down

0 comments on commit 7ffd352

Please sign in to comment.