Hi Everyone,
I am able to delete the attachment using the groovy script. The Problem is I am not able to reflect the changed within the change history of an issue.
Does anyone has come across such issue?
My Jira Version is 6.4.12
Thanks,
Manish
I was able to do this over the weekend. Here is the code to delete the attachment as well as update the Change history for an issue.
import com.atlassian.jira.issue.attachment.Attachmentimport com.atlassian.jira.component.ComponentAccessorimport com.atlassian.crowd.embedded.api.CrowdService;import com.atlassian.jira.issue.AttachmentManager;import com.atlassian.crowd.embedded.api.User;import com.atlassian.jira.issue.Issueimport com.atlassian.jira.issue.IssueManagerimport com.atlassian.jira.project.Project;import com.atlassian.jira.issue.search.SearchProviderimport com.atlassian.jira.jql.builder.JqlQueryBuilderimport com.atlassian.jira.issue.search.SearchResultsimport com.atlassian.jira.web.bean.PagerFilterimport com.atlassian.jira.bc.issue.search.SearchServiceimport com.atlassian.query.Queryimport java.util.*import org.apache.log4j.Loggerimport org.apache.log4j.Levelimport com.atlassian.jira.user.ApplicationUser;import com.atlassian.jira.user.util.UserManagerimport com.atlassian.jira.issue.MutableIssueimport com.atlassian.jira.bc.JiraServiceContextImplimport com.atlassian.jira.bc.issue.attachment.AttachmentServiceimport com.atlassian.jira.bc.JiraServiceContext
def log = Logger.getLogger("com.ultimate.deleteAttachment")log.setLevel(Level.DEBUG)
CrowdService crowdService = ComponentAccessor.getCrowdService();User user = crowdService.getUser("xxxx")def userManager = ComponentAccessor.getUserManager();ApplicationUser appUser = userManager.getUserByKey("xxxx");
SearchProvider searchProvider = ComponentAccessor.getComponentOfType(SearchProvider.class);SearchService searchService = ComponentAccessor.getComponentOfType(SearchService.class);JiraServiceContext jiraServiceContext = new JiraServiceContextImpl(user);AttachmentService attachmentService = ComponentAccessor.getComponentOfType(AttachmentService.class);
def jqlargument = "project = CA and issuetype = Epic and issuekey =\"CA-42\"";
SearchService.ParseResult parseResult = searchService.parseQuery(user,jqlargument);
Query query = parseResult.getQuery();SearchResults results = searchProvider.search(query, user, PagerFilter.getUnlimitedFilter());
def fetchedIssues= results.getIssues();
for(j=0;j<fetchedIssues.size(); j++){IssueManager issueManager = ComponentAccessor.getComponentOfType(IssueManager);MutableIssue issue = issueManager.getIssueObject(fetchedIssues.get(j).getKey())def issueId = issue.getId()
for(i=0; i<issue.getAttachments().size();i++){def authorKey = issue.getAttachments().get(i).getAuthorObject().getKey()Attachment attachment = issue.getAttachments().get(i)AttachmentManager attachmentManager = ComponentAccessor.getComponent(AttachmentManager)if(authorKey=="xxxxx")//provide owner userid of the attachment.{attachmentService.delete(jiraServiceContext,attachment.getId() )}
}}
Hi Manish,
Can you please post the code so we can help?
Cheers
Bhushan
Hi @JamieA@Jamie Echlin _ScriptRunner - The Adaptavist Group_
Do you guys have any idea about this?
Here you go @Bhushan Nagaraj
import com.atlassian.jira.issue.attachment.Attachmentimport com.atlassian.jira.component.ComponentAccessorimport com.atlassian.crowd.embedded.api.CrowdService;import com.atlassian.jira.issue.AttachmentManager;import com.atlassian.crowd.embedded.api.User;import com.atlassian.jira.issue.Issueimport com.atlassian.jira.issue.IssueManagerimport com.atlassian.jira.project.Project;import com.atlassian.jira.issue.search.SearchProviderimport com.atlassian.jira.jql.builder.JqlQueryBuilderimport com.atlassian.jira.issue.search.SearchResultsimport com.atlassian.jira.web.bean.PagerFilterimport com.atlassian.jira.bc.issue.search.SearchServiceimport com.atlassian.query.Queryimport java.util.*import com.atlassian.jira.user.ApplicationUser;import com.atlassian.jira.user.util.UserManagerimport com.atlassian.jira.issue.MutableIssue
def customFieldManager = ComponentAccessor.getCustomFieldManager()def cField = customFieldManager.getCustomFieldObjectByName("Number of Attachments")
SearchProvider searchProvider = ComponentAccessor.getComponentOfType(SearchProvider.class);SearchService searchService = ComponentAccessor.getComponentOfType(SearchService.class);
IssueIndexManager issueIndexingService = ComponentAccessor.getComponent(IssueIndexManager)
def issueService = ComponentAccessor.getIssueService()
for(i=0; i<issue.getAttachments().size();i++){def authorKey = issue.getAttachments().get(i).getAuthorObject().getKey()Attachment attachment = issue.getAttachments().get(i)AttachmentManager attachmentManager = ComponentAccessor.getComponent(AttachmentManager)if(authorKey=="xxxx"){attachmentManager.deleteAttachment(attachment)}
It looks like you're new here. Sign in or register to get started.