def publishDraggedStyle(explorer, layerName, catalogItem, name=None): catalog = catalogItem.element ogcat = OGCatalog(catalog) toUpdate = [catalogItem.stylesItem] if name is not None: stylename = name else: styles = [style.name for style in catalog.get_styles()] try: stylename = getGSStyleName(name=xmlNameFixUp(layerName), names=styles, unique=False) except UserCanceledOperation: return False return explorer.run(ogcat.publishStyle, "Publish style from layer '" + layerName + "'", toUpdate, layerName, True, stylename)
def addDraggedStyleToLayer(tree, explorer, styleItem, layerItem): catalog = layerItem.element.catalog catItem = tree.findFirstItem(catalog) toUpdate = [catItem.layersItem] if isinstance(styleItem, QgsStyleItem): styleName = styleItem.element.name() # = layer name styles = [style.name for style in catalog.get_styles()] try: stylname = getGSStyleName(name=xmlNameFixUp(styleName), names=styles, unique=False) except UserCanceledOperation: return False if not publishDraggedStyle(explorer, styleName, catItem, name=stylname): return False style = catalog.get_style(stylname) toUpdate.append(catItem.stylesItem) else: style = styleItem.element layer = layerItem.element if not hasattr(layer, "default_style") or layer.default_style is None: # if default style is missing, make dragged style the layer's default # without a default style, some GeoServer operations may fail layer.default_style = style else: # add to layer's additional styles styles = layer.styles styles.append(style) layer.styles = styles return explorer.run( catalog.save, "Add style '" + style.name + "' to layer '" + layer.name + "'", toUpdate, layer)