Skip to content
Snippets Groups Projects
Commit 78d60e04 authored by Wannes Rombouts's avatar Wannes Rombouts
Browse files

Moved layerstyle functionality to layer PUT as is done in geoserver

parent dda35242
No related branches found
No related tags found
No related merge requests found
...@@ -652,7 +652,7 @@ class layers(object): ...@@ -652,7 +652,7 @@ class layers(object):
def POST(self, format): def POST(self, format):
data = get_data(name="layer", data = get_data(name="layer",
mandatory=["name", "resource"], mandatory=["name", "resource"],
authorized=["name", "title", "abstract", "resource", "enabled"]) authorized=["name", "title", "abstract", "resource", "enabled", "defaultStyle"])
l_name = data.pop("name") l_name = data.pop("name")
l_enabled = data.pop("enabled", True) l_enabled = data.pop("enabled", True)
...@@ -675,6 +675,15 @@ class layers(object): ...@@ -675,6 +675,15 @@ class layers(object):
mf = mra.get_available() mf = mra.get_available()
with webapp.mightConflict(): with webapp.mightConflict():
mf.create_layer(model, l_name, l_enabled) mf.create_layer(model, l_name, l_enabled)
# If we have a defaultStyle apply it.
s_name = data.get("defaultStyle", {}).get("name")
if s_name:
with webapp.mightNotFound():
style = mra.get_style(s_name)
layer = mf.get_layer(l_name)
layer.add_style_sld(mf, s_name, style)
mf.save() mf.save()
webapp.Created("%s/layers/%s.%s" % (web.ctx.home, l_name, format)) webapp.Created("%s/layers/%s.%s" % (web.ctx.home, l_name, format))
...@@ -722,36 +731,47 @@ class layer(object): ...@@ -722,36 +731,47 @@ class layer(object):
def PUT(self, l_name, format): def PUT(self, l_name, format):
mf = mra.get_available() mf = mra.get_available()
data = get_data(name="layer", mandatory=["name", "resource"], data = get_data(name="layer", mandatory=[],
authorized=["name", "title", "abstract", "resource", "enabled"]) authorized=["name", "title", "abstract", "resource", "enabled", "defaultStyle"])
if l_name != data.pop("name"): if l_name != data.get("name", l_name):
raise webapp.Forbidden("Can't change the name of a layer.") raise webapp.Forbidden("Can't change the name of a layer.")
l_enabled = data.pop("enabled", True) l_enabled = data.pop("enabled", True)
mf = mra.get_available()
with webapp.mightNotFound():
layer = mf.get_layer(l_name)
href = data["resource"]["href"] # update resource if changed
try: href = data.get("resource", {}).get("href")
ws_name, st_type, st_name, r_type, r_name = mra.href_parse(href, 5) if href:
except ValueError:
raise webapp.NotFound(message="ressource '%s' was not found." % href)
st_type, r_type = st_type[:-1], r_type[:-1] # Remove trailing s.
ws = get_workspace(ws_name)
with webapp.mightNotFound(r_type, workspace=ws_name):
try: try:
model = ws.get_layermodel(r_type, st_name, r_name) ws_name, st_type, st_name, r_type, r_name = mra.href_parse(href, 5)
except ValueError: except ValueError:
raise KeyError(r_type) raise webapp.NotFound(message="ressource '%s' was not found." % href)
st_type, r_type = st_type[:-1], r_type[:-1] # Remove trailing s.
ws = get_workspace(ws_name)
with webapp.mightNotFound(r_type, workspace=ws_name):
try:
model = ws.get_layermodel(r_type, st_name, r_name)
except ValueError:
raise KeyError(r_type)
mf = mra.get_available()
with webapp.mightNotFound():
layer = mf.get_layer(l_name)
if layer.get_mra_metadata("type") != r_type: if layer.get_mra_metadata("type") != r_type:
raise webapp.BadRequest("Can't change a '%s' layer into a '%s'." raise webapp.BadRequest("Can't change a '%s' layer into a '%s'."
% (layer.get_mra_metadata("type"), r_type)) % (layer.get_mra_metadata("type"), r_type))
model.configure_layer(layer, l_enabled) model.configure_layer(layer, l_enabled)
# If we have a defaultStyle apply it.
s_name = data.get("defaultStyle", {}).get("name")
if s_name:
with webapp.mightNotFound():
style = mra.get_style(s_name)
layer.add_style_sld(mf, s_name, style)
mf.save() mf.save()
@HTTPCompatible() @HTTPCompatible()
...@@ -778,28 +798,28 @@ class layerstyles(object): ...@@ -778,28 +798,28 @@ class layerstyles(object):
} for s_name in layer.iter_styles()], } for s_name in layer.iter_styles()],
} }
@HTTPCompatible() # @HTTPCompatible()
def POST(self, l_name, format): # def POST(self, l_name, format):
data = get_data(name="style", mandatory=["resource"], # data = get_data(name="style", mandatory=["resource"],
authorized=["name", "title", "abstract", "resource"]) # authorized=["name", "title", "abstract", "resource"])
href = data["resource"]["href"] # href = data["resource"]["href"]
try: # try:
_, s_name = mra.href_parse(href, 2) # _, s_name = mra.href_parse(href, 2)
except ValueError: # except ValueError:
raise webapp.NotFound(message="style '%s' was not found." % href) # raise webapp.NotFound(message="style '%s' was not found." % href)
with webapp.mightNotFound(): # with webapp.mightNotFound():
style = mra.get_style(s_name) # style = mra.get_style(s_name)
mf = mra.get_available() # mf = mra.get_available()
with webapp.mightNotFound(): # with webapp.mightNotFound():
layer = mf.get_layer(l_name) # layer = mf.get_layer(l_name)
layer.add_style_sld(mf, s_name, style) # layer.add_style_sld(mf, s_name, style)
mf.save() # mf.save()
webapp.Created("%s/layers/%s/layerstyles/%s.%s" % (web.ctx.home, l_name, s_name, format)) # webapp.Created("%s/layers/%s/layerstyles/%s.%s" % (web.ctx.home, l_name, s_name, format))
class layerstyle(object): class layerstyle(object):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment