js/duplicates-with-different-visibility/duplicates.js (26 lines of code) (raw):
var entities = require('@jetbrains/youtrack-scripting-api/entities');
var workflow = require('@jetbrains/youtrack-scripting-api/workflow');
exports.rule = entities.Issue.onChange({
title: 'Prohibit duplicates with different visibility',
guard: function(ctx) {
return ctx.issue.links['duplicates'].added.isNotEmpty();
},
action: function(ctx) {
var issue = ctx.issue;
var isSameGroup = function(group1, group2) {
if (!group1) {
return !group2;
}
if (!group2) {
return false;
}
return group1.name === group2.name;
};
issue.links['duplicates'].added.forEach(function(duplicate) {
workflow.check(isSameGroup(issue.permittedGroup, duplicate.permittedGroup),
'You can\'t link issues with different visibility restrictions ' +
'as duplicates. To add these links, update the visibility settings ' +
'for either ' + issue.id + ' or ' + duplicate.id);
});
}
});