def CopyParameters(user, old_version, new_version): if ToolPermissions.CanPublish(user, old_version.Tool): parameters = GetParameters(old_version) params = {} for old_param in parameters: parent_param_id = old_param.ParameterID param = deepcopy(old_param) param.ParameterID = None param.ToolVersion = new_version #if this is a child parameter, update the parent to the copy of the parent if param.ParentParameter: param.ParentParameter = params[ param.ParentParameter.ParameterID] #save to add copy to datebase with new ID param.save() ParameterOptions.CopyOptions(user, old_param, param) #store the ID change for any child parameters params[parent_param_id] = param else: raise PermissionDenied
def CopyOutputs(user, old_version, new_version): if ToolPermissions.CanPublish(user, old_version.Tool): outputs = old_version.ExpectedOutputs.all() for out in outputs: out.ExpectedOutputID = None out.ToolVersion = new_version out.save() else: raise PermissionDenied
def PublishToolVersion(user, dev, version_num): if ToolPermissions.CanPublish(user, dev.Tool): new = deepcopy(dev) new.ToolVersionID = None new.ToolVersionNum = version_num new.save() return new else: raise PermissionDenied
def CopyResources(user, old_version, new_version): if ToolPermissions.CanPublish(user, old_version.Tool): resources = old_version.Resources.all() for old in resources: new = old new.ToolVersionResourceID = None new.ToolVersion = new_version new.save() else: raise PermissionDenied
def AddToolVersion(user, Tool, ToolVersionNum, ShortDescription, LongDescription, Command=""): if ToolPermissions.CanPublish(user, Tool): return ToolVersion.objects.create(Tool=Tool, ToolVersionNum=ToolVersionNum, ShortDescription=ShortDescription, LongDescription=LongDescription, Command=Command) else: raise PermissionDenied