Ejemplo 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()
Ejemplo 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)
 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 = dict([(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)    
Ejemplo n.º 4
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 = []         
     for layer in group:            
         if layer.name() not in gslayers:
             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,#"Publish layer '" + layer.name() + "'",
                      [],
                      layer, workspace, True):
                 explorer.setProgress(0)
                 return
             progress += 1                
             explorer.setProgress(progress)
         explorer.resetActivity()      
     names = [layer.name() for layer in group]      
     layergroup = cat.create_layergroup(groupname, names, names)
     explorer.run(cat.save, "Create layer group from group '" + groupname + "'", 
              [], layergroup)        
     for item in toUpdate:
         item.refreshContent(explorer)
Ejemplo n.º 5
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()
Ejemplo n.º 6
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()
 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()    
Ejemplo n.º 8
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")