def test_deleting_archive_item_removes_permissions(): ai1, ai2 = ArchiveItemFactory.create_batch(2) im = ImageFactory() civ = ComponentInterfaceValueFactory(image=im) with capture_on_commit_callbacks(execute=True): ai1.values.set([civ]) ai2.values.set([civ]) assert get_groups_with_set_perms(im) == { ai1.archive.editors_group: {"view_image"}, ai1.archive.uploaders_group: {"view_image"}, ai1.archive.users_group: {"view_image"}, ai2.archive.editors_group: {"view_image"}, ai2.archive.uploaders_group: {"view_image"}, ai2.archive.users_group: {"view_image"}, } with capture_on_commit_callbacks(execute=True): ai1.delete() assert get_groups_with_set_perms(im) == { ai2.archive.editors_group: {"view_image"}, ai2.archive.uploaders_group: {"view_image"}, ai2.archive.users_group: {"view_image"}, }
def setUp(self): interface = ComponentInterface.objects.get( slug="generic-medical-image") archive = ArchiveFactory() ais = ArchiveItemFactory.create_batch(2) archive.items.set(ais) input_civs = ComponentInterfaceValueFactory.create_batch( 2, interface=interface) output_civs = ComponentInterfaceValueFactory.create_batch( 2, interface=interface) for ai, civ in zip(ais, input_civs): ai.values.set([civ]) alg = AlgorithmImageFactory() submission = SubmissionFactory(algorithm_image=alg) submission.phase.archive = archive submission.phase.save() submission.phase.algorithm_inputs.set([interface]) jobs = [] for inpt, output in zip(input_civs, output_civs): j = AlgorithmJobFactory(status=Job.SUCCESS, algorithm_image=alg) j.inputs.set([inpt]) j.outputs.set([output]) jobs.append(j) self.evaluation = EvaluationFactory( submission=submission, status=Evaluation.EXECUTING_PREREQUISITES) self.jobs = jobs self.output_civs = output_civs
def test_archive_item_permissions_signal(client, reverse): # noqa: C901 ai1, ai2 = ArchiveItemFactory.create_batch(2) im1, im2, im3, im4 = ImageFactory.create_batch(4) civ1, civ2, civ3, civ4 = ( ComponentInterfaceValueFactory(image=im1), ComponentInterfaceValueFactory(image=im2), ComponentInterfaceValueFactory(image=im3), ComponentInterfaceValueFactory(image=im4), ) with capture_on_commit_callbacks(execute=True): if reverse: for civ in [civ1, civ2, civ3, civ4]: civ.archive_items.add(ai1, ai2) for civ in [civ3, civ4]: civ.archive_items.remove(ai1, ai2) for civ in [civ1, civ2]: civ.archive_items.remove(ai2) else: # Test that adding images works ai1.values.add(civ1, civ2, civ3, civ4) # Test that removing images works ai1.values.remove(civ3, civ4) assert get_groups_with_set_perms(im1) == { ai1.archive.editors_group: {"view_image"}, ai1.archive.uploaders_group: {"view_image"}, ai1.archive.users_group: {"view_image"}, } assert get_groups_with_set_perms(im2) == { ai1.archive.editors_group: {"view_image"}, ai1.archive.uploaders_group: {"view_image"}, ai1.archive.users_group: {"view_image"}, } assert get_groups_with_set_perms(im3) == {} assert get_groups_with_set_perms(im4) == {} # Test clearing with capture_on_commit_callbacks(execute=True): if reverse: civ1.archive_items.clear() civ2.archive_items.clear() else: ai1.values.clear() assert get_groups_with_set_perms(im1) == {} assert get_groups_with_set_perms(im2) == {}