Structure (DC)
Breadcrumbs

Associate Unassociated Views With a Structure

This script will find views without any associations and then associate them with the given structure.

import com.onresolve.scriptrunner.runner.customisers.WithPlugin
import com.onresolve.scriptrunner.runner.ScriptRunnerImpl
import com.almworks.jira.structure.api.StructureComponents
import com.almworks.jira.structure.api.permissions.*
import com.almworks.jira.structure.api.forest.ForestSpec
import com.almworks.jira.structure.api.item.CoreIdentities
import com.almworks.jira.structure.api.view.*
import groovy.json.JsonSlurper
import groovy.json.JsonOutput

@Grab(group = 'com.almworks.jira.structure', module = 'structure-api', version = '*')
@WithPlugin('com.almworks.jira.structure')

def components = ScriptRunnerImpl.getPluginComponent(StructureComponents)
def vm = components.viewManager
def structureId = 1L /* Structure to associate all views with */

ViewSettings originalSettings = vm.getViewSettings(1)
def newSettings = new ViewSettings.Builder(originalSettings)
def associatedViewIds = originalSettings.associatedViews.collect { it.viewId }.toSet()
def allViews = vm.getViews(null)
def newAssociatedViews = []
allViews
.findAll { vm.getAssociatedStructures(it.id).isEmpty() }
.each { 
if (!associatedViewIds.contains(it.id)) {
newSettings.addView(it.id, false) 
newAssociatedViews.add(it.name)
}   
}
vm.setViewSettings(structureId, newSettings.build())
log.warn("${newAssociatedViews.size()} views have been associated with the structure ${structureId}. Views are: $newAssociatedViews")