Example #1
0
    def _layerGroups(to_publish):

        def _addGroup(layer_tree):
            layers = []
            children = layer_tree.children()
            children.reverse()  # GS and QGIS have opposite ordering
            for child in children:
                if isinstance(child, QgsLayerTreeLayer):
                    in_name, out_name = layerUtils.getLayerTitleAndName(child.layer())
                    if in_name in to_publish:
                        layers.append(out_name)
                elif isinstance(child, QgsLayerTreeGroup):
                    subgroup = _addGroup(child)
                    if subgroup is not None:
                        layers.append(subgroup)
            if layers:
                title, name = layerUtils.getLayerTitleAndName(layer_tree)
                return {"name": name,
                        "title": layerTreeGroup.customProperty("wmsTitle", title),
                        "abstract": layerTreeGroup.customProperty("wmsAbstract", title),
                        "layers": layers}
            else:
                return None

        groups = []
        root = QgsProject().instance().layerTreeRoot()
        for element in root.children():
            if isinstance(element, QgsLayerTreeGroup):
                group = _addGroup(element)
                if group is not None:
                    groups.append(group)

        return groups