In AAC attributes update, it calls _check to see if the attribute need to be updated. If the attribute is a predefined attribute, then it can't be updated and will return artifact_id as none and update_required as false. After the _check call, it sees artifact_id is none and throws an exception. But in the case of the predefined attribute, artifact_id as none is a valid case. it needs to check to see if update_required is false or not first. if no update is required, it should end call.
In AAC attributes update, it calls _check to see if the attribute need to be updated. If the attribute is a predefined attribute, then it can't be updated and will return artifact_id as none and update_required as false. After the _check call, it sees artifact_id is none and throws an exception. But in the case of the predefined attribute, artifact_id as none is a valid case. it needs to check to see if update_required is false or not first. if no update is required, it should end call.