예제 #1
0
    def publishGroup(self, tree, explorer):
        groupname = self.element
        groups = qgislayers.getGroups()
        grouplyrs = groups[groupname]

        cat = selectCatalog(explorer.catalogs())
        if cat is None:
            return
        catgroup = cat.get_layergroup(groupname)
        toUpdate = set()
        toUpdate.add(tree.findAllItems(cat)[0])

        overwrite = bool(QSettings().value(
            "/OpenGeo/Settings/GeoServer/OverwriteGroupLayers", True, bool))

        dlg = PublishLayerGroupDialog(cat, groupname, grouplyrs,
                                      overwritegroup=True,
                                      overwritelayers=overwrite)
        dlg.exec_()
        grpName = dlg.definedname
        toPublish = dlg.topublish
        if grpName is None:  # toPublish can be empty list
            return
        catgroup = cat.get_layergroup(grpName)

        names = []
        if toPublish:
            explorer.setProgressMaximum(len(toPublish), "Publish layers")
            progress = 0
            layernames = []
            for layer, catalog, workspace, layername in toPublish:
                layernames.append(layername)
                explorer.setProgress(progress)
                ogcat = OGCatalog(catalog)
                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)

        if catgroup:
            cat.delete(catgroup)

        #TODO calculate bounds
        bbox = None
        group = UnsavedLayerGroup(cat, grpName, names, names, bbox)

        explorer.run(cat.save,
                     "Create layer group from group '" + groupname + "'",
                     toUpdate,
                     group)
예제 #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)    
 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)