def test_assign_score(settings): settings.task_eager_propagates = (True, ) settings.task_always_eager = (True, ) rs = ReaderStudyFactory(use_display_sets=False) im = ImageFactory() q1 = QuestionFactory(reader_study=rs) q2 = QuestionFactory(reader_study=rs, answer_type=Question.AnswerType.MULTIPLE_CHOICE) e, r1, r2 = UserFactory(), UserFactory(), UserFactory() rs.images.add(im) rs.add_editor(e) rs.add_reader(r1) rs.add_reader(r2) with capture_on_commit_callbacks(execute=True): a1 = AnswerFactory(question=q1, creator=r1, answer="foo") a1.images.add(im) assert a1.score is None with capture_on_commit_callbacks(execute=True): gt = AnswerFactory(question=q1, creator=e, answer="foo", is_ground_truth=True) gt.images.add(im) a1.refresh_from_db() assert a1.score == 1.0 with capture_on_commit_callbacks(execute=True): a2 = AnswerFactory(question=q1, creator=r2, answer="foo") a2.images.add(im) a2.refresh_from_db() assert a2.score == 1.0 with capture_on_commit_callbacks(execute=True): a1 = AnswerFactory(question=q2, creator=r1, answer=[]) a1.images.add(im) a1.refresh_from_db() assert a1.score is None with capture_on_commit_callbacks(execute=True): gt = AnswerFactory(question=q2, creator=e, answer=[], is_ground_truth=True) gt.images.add(im) a1.refresh_from_db() assert a1.score == 1.0 with capture_on_commit_callbacks(execute=True): a2 = AnswerFactory(question=q2, creator=r2, answer=[]) a2.images.add(im) a2.refresh_from_db() assert a2.score == 1.0
def test_assign_answer_image(client, settings): settings.task_eager_propagates = (True,) settings.task_always_eager = (True,) rs = ReaderStudyFactory() im = ImageFactory() editor, reader = UserFactory(), UserFactory() rs.images.add(im) rs.add_editor(editor) rs.add_reader(reader) question = QuestionFactory( reader_study=rs, answer_type=Question.ANSWER_TYPE_POLYGON_IMAGE ) us = RawImageUploadSessionFactory(creator=reader) answer = AnswerFactory( creator=reader, question=question, answer={"upload_session_pk": str(us.pk)}, ) f = StagedFileFactory( file__from_path=Path(__file__).parent.parent / "cases_tests" / "resources" / "image10x10x10.mha" ) RawImageFileFactory(upload_session=us, staged_file_id=f.file_id) response = get_view_for_user( viewname="api:upload-session-process-images", reverse_kwargs={"pk": us.pk}, user=reader, client=client, method=client.patch, data={"answer": str(answer.pk)}, content_type="application/json", ) assert response.status_code == 200 answer.refresh_from_db() image = us.image_set.first() assert answer.answer_image == image assert reader.has_perm("view_image", image) assert editor.has_perm("view_image", image)
def test_assign_score(settings): settings.task_eager_propagates = (True,) settings.task_always_eager = (True,) rs = ReaderStudyFactory() im = ImageFactory() q1 = QuestionFactory(reader_study=rs) q2 = QuestionFactory( reader_study=rs, answer_type=Question.ANSWER_TYPE_MULTIPLE_CHOICE ) e, r1, r2 = UserFactory(), UserFactory(), UserFactory() rs.images.add(im) rs.add_editor(e) rs.add_reader(r1) rs.add_reader(r2) a1 = AnswerFactory(question=q1, creator=r1, answer="foo") a1.images.add(im) assert a1.score is None gt = AnswerFactory( question=q1, creator=e, answer="foo", is_ground_truth=True ) gt.images.add(im) a1.refresh_from_db() assert a1.score == 1.0 a2 = AnswerFactory(question=q1, creator=r2, answer="foo") a2.images.add(im) a2.refresh_from_db() assert a2.score == 1.0 a1 = AnswerFactory(question=q2, creator=r1, answer=[]) a1.images.add(im) assert a1.score is None gt = AnswerFactory(question=q2, creator=e, answer=[], is_ground_truth=True) gt.images.add(im) a1.refresh_from_db() assert a1.score == 1.0 a2 = AnswerFactory(question=q2, creator=r2, answer=[]) a2.images.add(im) a2.refresh_from_db() assert a2.score == 1.0