def set_default_style(self, mf): s_name = tools.get_dflt_sld_name(self.ms.type) if self.ms.type == mapscript.MS_LAYER_POINT: self.ms.tolerance = 8 self.ms.toleranceunits = 6 elif self.ms.type == mapscript.MS_LAYER_LINE: self.ms.tolerance = 8 self.ms.toleranceunits = 6 elif self.ms.type == mapscript.MS_LAYER_POLYGON: self.ms.tolerance = 0 self.ms.toleranceunits = 6 else: return None try: style = open(os.path.join(os.path.dirname(__file__), "%s.sld" % s_name), encoding="utf-8").read() except IOError as OSError: logging.warning("mra.py::Layer::set_default_style IOError %s", OSError) return self.add_style_sld(mf, s_name, style) self.ms.classgroup = s_name
def PUT(self, l_name, format): """Modify layer <l>.""" mf = mra.get_available() data = get_data(name="layer", mandatory=[], authorized=["name", "title", "abstract", "resource", "enabled", "defaultStyle"]) if l_name != data.get("name", l_name): raise webapp.Forbidden("Can't change the name of a layer.") l_enabled = data.pop("enabled", True) mf = mra.get_available() with webapp.mightNotFound(): layer = mf.get_layer(l_name) # update resource if changed href = data.get("resource", {}).get("href") if href: try: ws_name, st_type, st_name, r_type, r_name = mra.href_parse(href, 5) except ValueError: raise webapp.NotFound(message="resource \"%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) if layer.get_mra_metadata("type") != r_type: raise webapp.BadRequest("Can't change a \"%s\" layer into a \"%s\"." % (layer.get_mra_metadata("type"), r_type)) 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) # Remove the automatic default style. for s_name in layer.iter_styles(): if s_name == tools.get_dflt_sld_name(layer.ms.type): layer.remove_style(s_name) mf.save()
def PUT(self, l_name, format): """Modify layer <l>.""" mf = mra.get_available() data = get_data(name="layer", mandatory=[], authorized=["name", "resource", "defaultStyle"]) if l_name != data.get("name", l_name): raise webapp.Forbidden("Can't change the name of a layer.") l_enabled = True # TODO: => data.pop("enabled", True) mf = mra.get_available() with webapp.mightNotFound(): layer = mf.get_layer(l_name) # update resource if changed href = data.get("resource", {}).get("href") if href: try: ws_name, st_type, st_name, r_type, r_name = mra.href_parse(href, 5) except ValueError: raise webapp.NotFound(message="resource \"%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) if layer.get_mra_metadata("type") != r_type: raise webapp.BadRequest("Can't change a \"%s\" layer into a \"%s\"." % (layer.get_mra_metadata("type"), r_type)) 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) # Remove the automatic default style. for s_name in layer.iter_styles(): if s_name == tools.get_dflt_sld_name(layer.ms.type): layer.remove_style(s_name) mf.save()
def POST(self, format): """Create a new layer.""" data = get_data(name="layer", mandatory=["name", "resource"], authorized=["name", "title", "abstract", "resource", "enabled", "defaultStyle"]) l_name = data.pop("name") l_enabled = data.pop("enabled", True) href = data["resource"]["href"] try: ws_name, st_type, st_name, r_type, r_name = mra.href_parse(href, 5) except ValueError: raise webapp.NotFound(message="resource \"%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.mightConflict(): 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) # Remove the automatic default style. for s_name in layer.iter_styles(): if s_name == tools.get_dflt_sld_name(layer.ms.type): layer.remove_style(s_name) mf.save() webapp.Created("%s/layers/%s.%s" % (web.ctx.home, l_name, format))
def set_default_style(self, mf): s_name = tools.get_dflt_sld_name(self.ms.type) if self.ms.type == mapscript.MS_LAYER_POINT: self.ms.tolerance = 8 self.ms.toleranceunits = 6 elif self.ms.type == mapscript.MS_LAYER_LINE: self.ms.tolerance = 8 self.ms.toleranceunits = 6 elif self.ms.type == mapscript.MS_LAYER_POLYGON: self.ms.tolerance = 0 self.ms.toleranceunits = 6 else: return try: style = open(os.path.join(os.path.dirname(__file__), "%s.sld" % s_name)).read() except IOError, OSError: return
def set_default_style(self, mf): s_name = tools.get_dflt_sld_name(self.ms.type) if self.ms.type == mapscript.MS_LAYER_POINT: self.ms.tolerance = 8 self.ms.toleranceunits = 6 elif self.ms.type == mapscript.MS_LAYER_LINE: self.ms.tolerance = 8 self.ms.toleranceunits = 6 elif self.ms.type == mapscript.MS_LAYER_POLYGON: self.ms.tolerance = 0 self.ms.toleranceunits = 6 else: return try: style = open( os.path.join(os.path.dirname(__file__), "%s.sld" % s_name)).read() except IOError, OSError: return