Associate Unassociated Views With a Structure

This article is for Data Center. Visit Cloud

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")