It's not the same without you
Join the community to find out what other Atlassian users are discussing, debating and creating.
Hello,
from diverse questions and answers found here, I tried to solve my question with the following script. But no attachment gets attached. I guess, the way to address the newly created issue is dead wrong, but what shall I change here? We use 6.4.12 ...
Thanks in advance,
Maud
import com.atlassian.jira.component.ComponentAccessor import org.apache.log4j.Category import com.atlassian.jira.issue.Issue; def Category log = Category.getInstance("com.onresolve.jira.groovy.PostFunction"); log.setLevel(org.apache.log4j.Level.DEBUG); // Key of old issue with attachment Issue issueKey = issue def id = issueKey.getId() // Key of new issue (which shall get attachment) // !!! NOT OK. def linkedIssueKeyList = ComponentAccessor.getIssueLinkManager().getOutwardLinks(issue.getID()) def linkcounter = linkedIssueKeyList.size() def lastlinkedIssueKey = linkedIssueKeyList[linkcounter].getId() // User def user = ComponentAccessor.getJiraAuthenticationContext().getUser().name // Managerservice for attachements def attachmentManager = ComponentAccessor.getAttachmentManager() // today def today = new Date() // Last attachement def attachmentPathManager = ComponentAccessor.getAttachmentPathManager().attachmentPath.toString() def fileName = issueKey.attachments.last()?.filename.toString() def fileType = issueKey.attachments.last()?.mimetype.toString() def fileId = issueKey.attachments.last()?.id // Construct path for attachement def currentIssue = issue.toString() def projectKey = currentIssue.replaceAll("[^A-Z]", "").toString(); def path = attachmentPathManager + "/" + projectKey + "/" + currentIssue + "/" + fileId + "/" File filePath = new File(path.toString()) // issue that shall get attachement Issue newIssue = ComponentAccessor.getIssueManager().getIssueObject(lastlinkedIssueKey) // Any attachment there? Then use it if (fileName != null) { attachmentManager.createAttachmentCopySourceFile(filePath, fileName, fileType, user, newIssue, null, today) }
I have an issue type named testlog. And a transition from "in test" to "failed" via "report failure". In this transition I not only change the status of test log and some custom fields but also use a create-on-transition (Bob Swift) to create another issue of type "bug". This issue should not inherit all attachements from the testlog but only the latest which typically is some screenshot showing the bug. I also have a transition from "failed" to "failed" via "report another failure" which also does the create-on-transition and should attach the last attachement (so the fourth reported bug only gets the very latest attachment and not the ones from the bugs before). Hope it is clearer now. Thanks for trying to help me.
Isn't this a question about the create-on-transition function? If so I don't know much about it.
ScriptRunner has a clone issue function which can accomplish the same thing, there you can provide a closure to control which attachments are copied to the new issue: https://scriptrunner.adaptavist.com/latest/jira/builtin-scripts.html#_control_of_cloning_attachments
The closure would be something like:
import com.atlassian.gzipfilter.org.apache.commons.lang.time.DateUtils checkAttachment = { Attachment attachment -> DateUtils.isSameDay(new Date(attachment.created.time), new Date()) }
Well, create-on-transition only either copies all or no attachments, so I have an additional ScriptRunner script added as another post-function. But your sample could be what I want - will check this and come back to you. Thanks for your help.
Hello again,
so I dismissed the create-on-Transition completely and instead do this (right after the indexing):
//für Datumsvergleich Import com.atlassian.gzipfilter.org.apache.commons.lang.time.DateUtils //für Pop-up-Nachricht import com.onresolve.scriptrunner.runner.util.UserMessageUtil def cf_abw_zsf = customFieldManager.getCustomFieldObjects(sourceIssue).find {it.name == 'Zusammenfassung der Abweichung'} issue.summary = sourceIssue.getCustomFieldValue(cf_abw_zsf) def cf_abw_schritte = customFieldManager.getCustomFieldObjects(sourceIssue).find {it.name == 'Testschritte der Abweichung'} def cf_abw_erwerg = customFieldManager.getCustomFieldObjects(sourceIssue).find {it.name == 'Erwartetes Ergebnis der Abweichung'} def cf_abw_taterg = customFieldManager.getCustomFieldObjects(sourceIssue).find {it.name == 'Testergebnis der Abweichung'} issue.description = 'Durchgeführte Schritte: ' + sourceIssue.getCustomFieldValue(cf_abw_schritte) + ' Erwartetes Ergebnis: ' + sourceIssue.getCustomFieldValue(cf_abw_erwerg) + ' Tatsächliches Ergebnis: ' + sourceIssue.getCustomFieldValue(cf_abw_taterg) def cf_abw_anzfehl = customFieldManager.getCustomFieldObjects(sourceIssue).find {it.name == 'Anzahl Fehlgeschlagen Abweichung'} //issue.setCustomFieldValue(cf_abw_anzfehl, "0"); //nur Anhänge von heute und vom selben User mitkopieren checkAttachment = {attachment -> (DateUtils.isSameDay(new Date(attachment.created.time), new Date()) && attachment.authorKey == issue.reporter) } //Keine Links mitkopieren checkLink = {link -> false} UserMessageUtil.success('Abweichung erstellt')
As you see, I have commented line 12 because that is still incorrect (am not yet sure, why), but the closure is now "all Attachements from today from the current user" - right? So still not the last one? Any further hint?
Thanks again - I haven't been coding that much for many years so this is some exciting challenge.
I am currently struggling with variants of this like:
checkAttachment = {attachment -> (DateUtils.getDuration((new Date() - new Date(attachment.created.time)) <= 7200) && (attachment.authorKey == issue.reporter)) }
but can't get it working. Would appreciate your help very much here
This community is celebrating its one-year anniversary and Atlassian co-founder Mike Cannon-Brookes has all the feels.
Read moreAtlas Camp is our developer event which will take place in Barcelona, Spain from the 6th -7th of September . This is a great opportunity to meet other developers and get n...
Connect with like-minded Atlassian users at free events near you!
Find a groupConnect with like-minded Atlassian users at free events near you!
Unfortunately there are no AUG chapters near you at the moment.
Start an AUGYou're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.