Exemplo n.º 1
0
    def createStoresFromLayers(self, tree, explorer, selected):
        layers = [item.element for item in selected]
        dlg = PublishLayersDialog(explorer.catalogs(), layers)
        dlg.exec_()
        toPublish = dlg.topublish
        if toPublish is None:
            return
        explorer.setProgressMaximum(len(toPublish), "Upload layers")
        progress = 0
        toUpdate = set()
        for layer, catalog, workspace in toPublish:
            explorer.setProgress(progress)
            ogcat = OGCatalog(catalog)
            explorer.run(
                ogcat.createStore,
                None,  #"Create store from layer '" + layer.name() + "'",
                [],
                layer,
                workspace,
                True)
            progress += 1
            toUpdate.add(tree.findAllItems(catalog))
            explorer.setProgress(progress)

        for item in toUpdate:
            item.refreshContent(explorer)
        explorer.resetActivity()
Exemplo n.º 2
0
    def publishGroup(self, tree, explorer):
        groupname = self.element
        groups = qgislayers.getGroups()
        group = groups[groupname]
        cat = selectCatalog(explorer.catalogs())
        if cat is None:
            return
        gslayers = [layer.name for layer in cat.get_layers()]
        missing = []
        overwrite = bool(QSettings().value(
            "/OpenGeo/Settings/GeoServer/OverwriteGroupLayers", True, bool))
        for layer in group:
            if layer.name() not in gslayers or overwrite:
                missing.append(layer)
        toUpdate = set()
        toUpdate.add(tree.findAllItems(cat)[0])

        if missing:
            catalogs = {
                k: v
                for k, v in explorer.catalogs().iteritems() if v == cat
            }
            dlg = PublishLayersDialog(catalogs, missing)
            dlg.exec_()
            toPublish = dlg.topublish
            if toPublish is None:
                return
            explorer.setProgressMaximum(len(toPublish), "Publish layers")
            progress = 0
            for layer, catalog, workspace in toPublish:
                explorer.setProgress(progress)
                ogcat = OGCatalog(catalog)
                if not explorer.run(ogcat.publishLayer, None, [], layer,
                                    workspace, True):
                    explorer.setProgress(0)
                    return
                progress += 1
                explorer.setProgress(progress)
            explorer.resetActivity()
        names = [layer.name() for layer in group]

        def _createGroup():
            layergroup = cat.create_layergroup(groupname, names, names)
            cat.save(layergroup)

        explorer.run(_createGroup,
                     "Create layer group from group '" + groupname + "'",
                     toUpdate)
Exemplo n.º 3
0
    def publishLayers(self, tree, explorer, selected):
        layers = [item.element for item in selected]
        dlg = PublishLayersDialog(explorer.catalogs(), layers)
        dlg.exec_()
        toPublish = dlg.topublish
        if toPublish is None:
            return
        explorer.setProgressMaximum(len(toPublish), "Publish layers")
        progress = 0
        toUpdate = set()
        for layer, catalog, workspace in toPublish:
            explorer.setProgress(progress)
            ogcat = OGCatalog(catalog)
            if explorer.run(publishLayer, None, [], ogcat, layer, workspace,
                            True):
                toUpdate.add(tree.findAllItems(catalog)[0])
            progress += 1
            explorer.setProgress(progress)

        for item in toUpdate:
            item.refreshContent(explorer)
        explorer.resetActivity()
Exemplo n.º 4
0
def publishProject(tree, explorer):
    layers = qgislayers.getAllLayers()
    if not layers:
        return

    dlg = PublishProjectDialog(explorer.catalogs())
    dlg.exec_()
    catalog = dlg.catalog
    if catalog is None:
        return
    workspace = dlg.workspace
    groupName = dlg.groupName
    ogcat = OGCatalog(catalog)

    groups = qgislayers.getGroups()
    grouplyrs = []
    for group in groups:
        grouplyrs.extend([layer for layer in groups[group]])

    ungroupedlyrs = [layer for layer in layers if layer not in grouplyrs]
    publishedLyrs = []

    if ungroupedlyrs:
        lyrsdlg = PublishLayersDialog(
            {0: catalog}, ungroupedlyrs, workspace=workspace, overwrite=False)
        lyrsdlg.exec_()
        toPublish = lyrsdlg.topublish
        if toPublish is None:
            return

        explorer.setProgressMaximum(len(toPublish), "Publish ungrouped layer")
        progress = 0
        for layer, catalog, workspace, layername in toPublish:
            publishedLyrs.append(layername)
            explorer.setProgress(progress)
            if not explorer.run(ogcat.publishLayer,
                                None,
                                [],
                                layer, workspace, True, layername):
                explorer.setProgress(0)
                return
            progress += 1
            explorer.setProgress(progress)
        explorer.resetActivity()

    for group in groups:
        grouplyrs = [layer for layer in groups[group]]
        if not grouplyrs:
            continue  # don't publish empty groups, when publishing project

        dlg = PublishLayerGroupDialog(catalog, group, grouplyrs,
                                      workspace=workspace,
                                      overwritegroup=False,
                                      overwritelayers=False)
        dlg.exec_()
        grpName = dlg.definedname
        toPublish = dlg.topublish
        if grpName is None:  # toPublish can be empty list
            return

        explorer.setProgressMaximum(len(toPublish), "Publish grouped layer")
        progress = 0
        layernames = []
        for layer, catalog, workspace, layername in toPublish:
            layernames.append(layername)
            publishedLyrs.append(layername)
            explorer.setProgress(progress)
            if not explorer.run(ogcat.publishLayer,
                                None,
                                [],
                                layer, workspace, True, layername):
                explorer.setProgress(0)
                return
            progress += 1
            explorer.setProgress(progress)
        explorer.resetActivity()
        names = reversed(layernames)

        layergroup = catalog.create_layergroup(grpName, names, names)
        if not explorer.run(catalog.save,
                            "Create layer group from group '" + group + "'",
                            [],
                            layergroup):
            return

    if groupName is not None:
        names = reversed(publishedLyrs)
        layergroup = catalog.create_layergroup(groupName, names, names)
        if not explorer.run(catalog.save,
                            "Create global layer group",
                            [],
                            layergroup):
            return

    tree.findAllItems(catalog)[0].refreshContent(explorer)
    explorer.setInfo("Project published")