From b96527631031e28052515098340f5e639251f583 Mon Sep 17 00:00:00 2001 From: Aaron Louie Date: Mon, 2 Mar 2020 15:01:41 -0500 Subject: [PATCH 1/7] Adds a mock study with same ID a one from data loader. --- tests/data/pb_responses/user_studies.json | 8 ++++++++ tests/test_study_api.py | 17 ++++++++--------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/tests/data/pb_responses/user_studies.json b/tests/data/pb_responses/user_studies.json index 40aa65b3..18a0a00d 100644 --- a/tests/data/pb_responses/user_studies.json +++ b/tests/data/pb_responses/user_studies.json @@ -14,5 +14,13 @@ "Q_COMPLETE": true, "STUDYID": 65432, "TITLE": "Peanut butter consumption among quiet dogs" + }, + { + "DATE_MODIFIED": "2020-02-19T14:24:55.101695", + "HSRNUMBER": "45678", + "NETBADGEID": "dhf8r", + "Q_COMPLETE": true, + "STUDYID": 1, + "TITLE": "Efficacy of xenomorph bio-augmented circuits on dexterity of cybernetic prostheses" } ] diff --git a/tests/test_study_api.py b/tests/test_study_api.py index 4edeea8f..e4cd6425 100644 --- a/tests/test_study_api.py +++ b/tests/test_study_api.py @@ -68,10 +68,9 @@ class TestStudyApi(BaseTest): db_studies_before = session.query(StudyModel).all() num_db_studies_before = len(db_studies_before) + # Mock Protocol Builder response mock_get.return_value.ok = True mock_get.return_value.text = self.protocol_builder_response('user_studies.json') - # pb_response = ProtocolBuilderService.get_studies(self.test_uid) - # self.assertIsNotNone(pb_response) self.load_example_data() api_response = self.app.get('/v1.0/study', @@ -79,11 +78,6 @@ class TestStudyApi(BaseTest): headers=self.logged_in_headers(), content_type="application/json") self.assert_success(api_response) - - db_studies_after = session.query(StudyModel).all() - num_db_studies_after = len(db_studies_after) - self.assertGreater(num_db_studies_after, num_db_studies_before) - json_data = json.loads(api_response.get_data(as_text=True)) api_studies = StudyModelSchema(many=True).load(json_data, session=session) @@ -96,8 +90,13 @@ class TestStudyApi(BaseTest): else: num_active += 1 - self.assertEqual(num_inactive, num_db_studies_before) - self.assertEqual(num_active, num_db_studies_after - num_db_studies_before) + db_studies_after = session.query(StudyModel).all() + num_db_studies_after = len(db_studies_after) + self.assertGreater(num_db_studies_after, num_db_studies_before) + self.assertGreater(num_inactive, 0) + self.assertGreater(num_active, 0) + self.assertEqual(len(api_studies), num_db_studies_after) + self.assertEqual(num_active + num_inactive, num_db_studies_after) def test_study_api_get_single_study(self): self.load_example_data() From 668de6c4dc958b0e74981fd1cce7ec2a8d00c5eb Mon Sep 17 00:00:00 2001 From: Aaron Louie Date: Tue, 3 Mar 2020 15:46:20 -0500 Subject: [PATCH 2/7] Edits Protocol Builder statuses --- crc/api/study.py | 22 ++++++++++++++++++---- crc/models/protocol_builder.py | 9 +++++---- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/crc/api/study.py b/crc/api/study.py index 5fabdce0..f8d2a8b4 100644 --- a/crc/api/study.py +++ b/crc/api/study.py @@ -88,7 +88,13 @@ def update_from_protocol_builder(): # Mark studies as inactive that are no longer in Protocol Builder for study_id in db_study_ids: if study_id not in pb_study_ids: - update_study(study_id=study_id, body={'inactive': True}) + update_study( + study_id=study_id, + body={ + 'inactive': True, + 'protocol_builder_status': ProtocolBuilderStatus.INACTIVE._value_ + } + ) # Return updated studies updated_studies = session.query(StudyModel).filter_by(user_uid=user.uid).all() @@ -157,10 +163,18 @@ def map_pb_study_to_study(pb_study): if k in prop_map: study_info[prop_map[k]] = v + # Translate Protocol Builder states to enum values + status = ProtocolBuilderStatus.DRAFT if pb_study['Q_COMPLETE']: - study_info['protocol_builder_status'] = ProtocolBuilderStatus.complete._value_ - else: - study_info['protocol_builder_status'] = ProtocolBuilderStatus.in_process._value_ + if pb_study['UPLOAD_COMPLETE']: + if pb_study['HSRNUMBER']: + status = ProtocolBuilderStatus.REVIEW_COMPLETE + else: + status = ProtocolBuilderStatus.IN_REVIEW + else: + status = ProtocolBuilderStatus.IN_PROCESS + study_info['protocol_builder_status'] = status._value_ + study_info['inactive'] = False return study_info diff --git a/crc/models/protocol_builder.py b/crc/models/protocol_builder.py index 436e0027..a52a1ea0 100644 --- a/crc/models/protocol_builder.py +++ b/crc/models/protocol_builder.py @@ -18,10 +18,11 @@ class ProtocolBuilderInvestigatorType(enum.Enum): class ProtocolBuilderStatus(enum.Enum): - out_of_date = "out_of_date" - in_process = "in_process" - complete = "complete" - updating = "updating" + DRAFT = 'draft', # !Q_COMPLETE + IN_PROCESS = 'in_process', # Q_COMPLETE && !UPLOAD_COMPLETE && !HSRNUMBER + IN_REVIEW = 'in_review', # Q_COMPLETE && (!UPLOAD_COMPLETE || !HSRNUMBER) + REVIEW_COMPLETE = 'review_complete', # Q_COMPLETE && UPLOAD_COMPLETE && HSRNUMBER + INACTIVE = 'inactive', # Not found in PB class ProtocolBuilderStudy(object): From 01720a8bbfcadb046508aef994b683fe55a7ee82 Mon Sep 17 00:00:00 2001 From: Aaron Louie Date: Tue, 3 Mar 2020 16:01:36 -0500 Subject: [PATCH 3/7] Replaces migration and fixes broken tests --- crc/api.yml | 2 +- crc/api/study.py | 6 +++--- example_data.py | 5 +++-- .../versions/{cb3a03c10a0e_.py => 1c6e4e179f8e_.py} | 8 ++++---- tests/test_study_api.py | 4 ++-- 5 files changed, 13 insertions(+), 12 deletions(-) rename migrations/versions/{cb3a03c10a0e_.py => 1c6e4e179f8e_.py} (94%) diff --git a/crc/api.yml b/crc/api.yml index 783fde2d..de1220a3 100644 --- a/crc/api.yml +++ b/crc/api.yml @@ -733,7 +733,7 @@ components: example: "2019-12-25T09:12:33.001Z" protocol_builder_status: type: string - enum: [out_of_date, in_process, complete, updating] + enum: [DRAFT, IN_PROCESS, IN_REVIEW, REVIEW_COMPLETE, INACTIVE] example: done user_uid: type: string diff --git a/crc/api/study.py b/crc/api/study.py index f8d2a8b4..b1061036 100644 --- a/crc/api/study.py +++ b/crc/api/study.py @@ -165,9 +165,9 @@ def map_pb_study_to_study(pb_study): # Translate Protocol Builder states to enum values status = ProtocolBuilderStatus.DRAFT - if pb_study['Q_COMPLETE']: - if pb_study['UPLOAD_COMPLETE']: - if pb_study['HSRNUMBER']: + if 'Q_COMPLETE' in pb_study['Q_COMPLETE'] and pb_study['Q_COMPLETE']: + if 'UPLOAD_COMPLETE' in pb_study and pb_study['UPLOAD_COMPLETE']: + if 'HSRNUMBER' in pb_study and pb_study['HSRNUMBER']: status = ProtocolBuilderStatus.REVIEW_COMPLETE else: status = ProtocolBuilderStatus.IN_REVIEW diff --git a/example_data.py b/example_data.py index 0fc72d86..2421ce84 100644 --- a/example_data.py +++ b/example_data.py @@ -9,6 +9,7 @@ from crc.models.study import StudyModel from crc.models.user import UserModel from crc.models.workflow import WorkflowSpecModel from crc.services.workflow_processor import WorkflowProcessor +from models.protocol_builder import ProtocolBuilderStatus class ExampleDataLoader: @@ -31,7 +32,7 @@ class ExampleDataLoader: id=1, title='The impact of fried pickles on beer consumption in bipedal software developers.', last_updated=datetime.datetime.now(), - protocol_builder_status='in_process', + protocol_builder_status=ProtocolBuilderStatus.IN_PROCESS.name, primary_investigator_id='dhf8r', sponsor='Sartography Pharmaceuticals', ind_number='1234', @@ -41,7 +42,7 @@ class ExampleDataLoader: id=2, title='Requirement of hippocampal neurogenesis for the behavioral effects of soft pretzels', last_updated=datetime.datetime.now(), - protocol_builder_status='in_process', + protocol_builder_status=ProtocolBuilderStatus.IN_PROCESS.name, primary_investigator_id='dhf8r', sponsor='Makerspace & Co.', ind_number='5678', diff --git a/migrations/versions/cb3a03c10a0e_.py b/migrations/versions/1c6e4e179f8e_.py similarity index 94% rename from migrations/versions/cb3a03c10a0e_.py rename to migrations/versions/1c6e4e179f8e_.py index 0280235c..b6237cb0 100644 --- a/migrations/versions/cb3a03c10a0e_.py +++ b/migrations/versions/1c6e4e179f8e_.py @@ -1,8 +1,8 @@ """empty message -Revision ID: cb3a03c10a0e +Revision ID: 1c6e4e179f8e Revises: -Create Date: 2020-02-28 11:12:56.150837 +Create Date: 2020-03-03 15:51:45.550681 """ from alembic import op @@ -10,7 +10,7 @@ import sqlalchemy as sa # revision identifiers, used by Alembic. -revision = 'cb3a03c10a0e' +revision = '1c6e4e179f8e' down_revision = None branch_labels = None depends_on = None @@ -43,7 +43,7 @@ def upgrade(): sa.Column('id', sa.Integer(), nullable=False), sa.Column('title', sa.String(), nullable=True), sa.Column('last_updated', sa.DateTime(timezone=True), nullable=True), - sa.Column('protocol_builder_status', sa.Enum('out_of_date', 'in_process', 'complete', 'updating', name='protocolbuilderstatus'), nullable=True), + sa.Column('protocol_builder_status', sa.Enum('DRAFT', 'IN_PROCESS', 'IN_REVIEW', 'REVIEW_COMPLETE', 'INACTIVE', name='protocolbuilderstatus'), nullable=True), sa.Column('primary_investigator_id', sa.String(), nullable=True), sa.Column('sponsor', sa.String(), nullable=True), sa.Column('hsr_number', sa.String(), nullable=True), diff --git a/tests/test_study_api.py b/tests/test_study_api.py index a8d142fe..5129836c 100644 --- a/tests/test_study_api.py +++ b/tests/test_study_api.py @@ -24,7 +24,7 @@ class TestStudyApi(BaseTest): "title": "Phase III Trial of Genuine People Personalities (GPP) Autonomous Intelligent Emotional Agents " "for Interstellar Spacecraft", "last_updated": datetime.now(tz=timezone.utc), - "protocol_builder_status": ProtocolBuilderStatus.in_process, + "protocol_builder_status": ProtocolBuilderStatus.IN_PROCESS, "primary_investigator_id": "tricia.marie.mcmillan@heartofgold.edu", "sponsor": "Sirius Cybernetics Corporation", "ind_number": "567890", @@ -49,7 +49,7 @@ class TestStudyApi(BaseTest): self.load_example_data() study: StudyModel = session.query(StudyModel).first() study.title = "Pilot Study of Fjord Placement for Single Fraction Outcomes to Cortisol Susceptibility" - study.protocol_builder_status = ProtocolBuilderStatus.complete + study.protocol_builder_status = ProtocolBuilderStatus.REVIEW_COMPLETE rv = self.app.put('/v1.0/study/%i' % study.id, content_type="application/json", headers=self.logged_in_headers(), From 8cbd6f892f27083096476833c8c23fc511dd9a5b Mon Sep 17 00:00:00 2001 From: Aaron Louie Date: Tue, 3 Mar 2020 20:56:46 -0500 Subject: [PATCH 4/7] WIP: Mocks study details PB endpoint response --- crc/api/study.py | 11 +++++++---- tests/test_study_api.py | 19 ++++++++++++------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/crc/api/study.py b/crc/api/study.py index b1061036..d479b023 100644 --- a/crc/api/study.py +++ b/crc/api/study.py @@ -92,7 +92,7 @@ def update_from_protocol_builder(): study_id=study_id, body={ 'inactive': True, - 'protocol_builder_status': ProtocolBuilderStatus.INACTIVE._value_ + 'protocol_builder_status': ProtocolBuilderStatus.INACTIVE.name } ) @@ -165,8 +165,11 @@ def map_pb_study_to_study(pb_study): # Translate Protocol Builder states to enum values status = ProtocolBuilderStatus.DRAFT - if 'Q_COMPLETE' in pb_study['Q_COMPLETE'] and pb_study['Q_COMPLETE']: - if 'UPLOAD_COMPLETE' in pb_study and pb_study['UPLOAD_COMPLETE']: + pb_details = ProtocolBuilderService.get_study_details(pb_study['STUDYID']) + print(pb_details) + + if 'Q_COMPLETE' in pb_study and pb_study['Q_COMPLETE']: + if 'UPLOAD_COMPLETE' in pb_details and pb_details['UPLOAD_COMPLETE']: if 'HSRNUMBER' in pb_study and pb_study['HSRNUMBER']: status = ProtocolBuilderStatus.REVIEW_COMPLETE else: @@ -174,7 +177,7 @@ def map_pb_study_to_study(pb_study): else: status = ProtocolBuilderStatus.IN_PROCESS - study_info['protocol_builder_status'] = status._value_ + study_info['protocol_builder_status'] = status.name study_info['inactive'] = False return study_info diff --git a/tests/test_study_api.py b/tests/test_study_api.py index 5129836c..6fdf50ce 100644 --- a/tests/test_study_api.py +++ b/tests/test_study_api.py @@ -1,10 +1,10 @@ import json from datetime import datetime, timezone -from unittest.mock import patch +from unittest.mock import patch, Mock from crc import session from crc.models.study import StudyModel, StudyModelSchema -from crc.models.protocol_builder import ProtocolBuilderStatus +from crc.models.protocol_builder import ProtocolBuilderStatus, ProtocolBuilderStudyDetailsSchema from crc.models.workflow import WorkflowSpecModel, WorkflowSpecModelSchema, WorkflowModel, WorkflowStatus, \ WorkflowApiSchema from tests.base_test import BaseTest @@ -49,7 +49,7 @@ class TestStudyApi(BaseTest): self.load_example_data() study: StudyModel = session.query(StudyModel).first() study.title = "Pilot Study of Fjord Placement for Single Fraction Outcomes to Cortisol Susceptibility" - study.protocol_builder_status = ProtocolBuilderStatus.REVIEW_COMPLETE + study.protocol_builder_status = ProtocolBuilderStatus.REVIEW_COMPLETE.name rv = self.app.put('/v1.0/study/%i' % study.id, content_type="application/json", headers=self.logged_in_headers(), @@ -61,15 +61,20 @@ class TestStudyApi(BaseTest): self.assertEqual(study.protocol_builder_status, db_study.protocol_builder_status) - @patch('crc.services.protocol_builder.requests.get') - def test_get_all_studies(self, mock_get): + def test_get_all_studies(self): self.load_example_data() db_studies_before = session.query(StudyModel).all() num_db_studies_before = len(db_studies_before) # Mock Protocol Builder response - mock_get.return_value.ok = True - mock_get.return_value.text = self.protocol_builder_response('user_studies.json') + with patch('crc.services.protocol_builder.requests.get') as mock_get: + mock_get.return_value.ok = True + mock_get.return_value.text = self.protocol_builder_response('user_studies.json') + + with patch('crc.services.protocol_builder.ProtocolBuilderService.get_study_details') as mock_details: + sd_response = self.protocol_builder_response('study_details.json') + mock_details.return_value = Mock() + mock_details.return_value.json.return_value = ProtocolBuilderStudyDetailsSchema().loads(sd_response) self.load_example_data() api_response = self.app.get('/v1.0/study', From f258090a0b8c4f1b83ab4d8657cafbfe53ef239f Mon Sep 17 00:00:00 2001 From: Aaron Louie Date: Wed, 4 Mar 2020 09:54:00 -0500 Subject: [PATCH 5/7] Fixes broken unit test --- crc/api/study.py | 1 - tests/test_study_api.py | 19 +++++++++---------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/crc/api/study.py b/crc/api/study.py index d479b023..7a90ddc4 100644 --- a/crc/api/study.py +++ b/crc/api/study.py @@ -166,7 +166,6 @@ def map_pb_study_to_study(pb_study): # Translate Protocol Builder states to enum values status = ProtocolBuilderStatus.DRAFT pb_details = ProtocolBuilderService.get_study_details(pb_study['STUDYID']) - print(pb_details) if 'Q_COMPLETE' in pb_study and pb_study['Q_COMPLETE']: if 'UPLOAD_COMPLETE' in pb_details and pb_details['UPLOAD_COMPLETE']: diff --git a/tests/test_study_api.py b/tests/test_study_api.py index 6fdf50ce..7da55c55 100644 --- a/tests/test_study_api.py +++ b/tests/test_study_api.py @@ -4,7 +4,8 @@ from unittest.mock import patch, Mock from crc import session from crc.models.study import StudyModel, StudyModelSchema -from crc.models.protocol_builder import ProtocolBuilderStatus, ProtocolBuilderStudyDetailsSchema +from crc.models.protocol_builder import ProtocolBuilderStatus, ProtocolBuilderStudyDetailsSchema, \ + ProtocolBuilderStudySchema from crc.models.workflow import WorkflowSpecModel, WorkflowSpecModelSchema, WorkflowModel, WorkflowStatus, \ WorkflowApiSchema from tests.base_test import BaseTest @@ -60,21 +61,19 @@ class TestStudyApi(BaseTest): self.assertEqual(study.title, db_study.title) self.assertEqual(study.protocol_builder_status, db_study.protocol_builder_status) - - def test_get_all_studies(self): + @patch('crc.services.protocol_builder.ProtocolBuilderService.get_study_details') # mock_details + @patch('crc.services.protocol_builder.ProtocolBuilderService.get_studies') # mock_studies + def test_get_all_studies(self, mock_studies, mock_details): self.load_example_data() db_studies_before = session.query(StudyModel).all() num_db_studies_before = len(db_studies_before) # Mock Protocol Builder response - with patch('crc.services.protocol_builder.requests.get') as mock_get: - mock_get.return_value.ok = True - mock_get.return_value.text = self.protocol_builder_response('user_studies.json') + studies_response = self.protocol_builder_response('user_studies.json') + mock_studies.return_value = ProtocolBuilderStudySchema(many=True).loads(studies_response) - with patch('crc.services.protocol_builder.ProtocolBuilderService.get_study_details') as mock_details: - sd_response = self.protocol_builder_response('study_details.json') - mock_details.return_value = Mock() - mock_details.return_value.json.return_value = ProtocolBuilderStudyDetailsSchema().loads(sd_response) + details_response = self.protocol_builder_response('study_details.json') + mock_details.return_value = ProtocolBuilderStudyDetailsSchema().loads(details_response) self.load_example_data() api_response = self.app.get('/v1.0/study', From e2f7032155214889c33111c63438c7674cf0c375 Mon Sep 17 00:00:00 2001 From: Dan Funk Date: Wed, 4 Mar 2020 12:06:00 -0500 Subject: [PATCH 6/7] fixing a stupid. --- example_data.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example_data.py b/example_data.py index 2421ce84..6f2a8b44 100644 --- a/example_data.py +++ b/example_data.py @@ -9,7 +9,7 @@ from crc.models.study import StudyModel from crc.models.user import UserModel from crc.models.workflow import WorkflowSpecModel from crc.services.workflow_processor import WorkflowProcessor -from models.protocol_builder import ProtocolBuilderStatus +from crc.models.protocol_builder import ProtocolBuilderStatus class ExampleDataLoader: From e07ad8d21cdac02b81b2296450bbfecaa46b914f Mon Sep 17 00:00:00 2001 From: Aaron Louie Date: Thu, 5 Mar 2020 14:21:03 -0500 Subject: [PATCH 7/7] Updates training session BPMN files. Fixes PB status enums. --- ...2_training_session_data_security_plan.bpmn | 141 +++----- ...crc2_training_session_enter_core_info.bpmn | 323 ++++++++---------- ...ining_session_sponsor_funding_source.bpmn} | 19 +- example_data.py | 14 +- tests/test_study_api.py | 2 +- 5 files changed, 194 insertions(+), 305 deletions(-) rename crc/static/bpmn/{sponsor_funding_source/sponsor_funding_source.bpmn => crc2_training_session_sponsor_funding_source/crc2_training_session_sponsor_funding_source.bpmn} (78%) diff --git a/crc/static/bpmn/crc2_training_session_data_security_plan/crc2_training_session_data_security_plan.bpmn b/crc/static/bpmn/crc2_training_session_data_security_plan/crc2_training_session_data_security_plan.bpmn index f11e9a4e..453ba1ad 100644 --- a/crc/static/bpmn/crc2_training_session_data_security_plan/crc2_training_session_data_security_plan.bpmn +++ b/crc/static/bpmn/crc2_training_session_data_security_plan/crc2_training_session_data_security_plan.bpmn @@ -98,7 +98,7 @@ - + @@ -484,78 +484,49 @@ Indicate all the possible formats in which you will transmit your data outside o SequenceFlow_08rwbhm SequenceFlow_0uewki3 SequenceFlow_0lere0k - SequenceFlow_14p4mbl + Flow_1h5ufzp - Transmission Method of data that will be mailed or faxed (FedEx, UPS, certified mail, etc.) Check all that apply: - + - - + + - - + + - + - - + + - + - - + + SequenceFlow_1mnmo6p SequenceFlow_0lere0k - - Data Security Plan Study Team Notes - - - - - - - - - - - - - - - - - - - - SequenceFlow_14p4mbl - SequenceFlow_18ik6tv - SequenceFlow_02pq2w4 - - Flow_0bvraie - SequenceFlow_0mgwas4 SequenceFlow_01hl869 - SequenceFlow_18ik6tv DateTransmittedOutside == True @@ -566,9 +537,6 @@ Indicate all the possible formats in which you will transmit your data outside o SequenceFlow_12bv2i4 SequenceFlow_1mnmo6p - - DateTransmittedOutside == False - #### Collection & storage of research data at UVA @@ -650,8 +618,8 @@ Submit the step only when you are ready. After you "Submit" the step, the inform - SequenceFlow_02pq2w4 Flow_1wgcnrc + Flow_1h5ufzp SequenceFlow_1wzlqa1 @@ -693,6 +661,7 @@ Submit the step only when you are ready. After you "Submit" the step, the inform FormField_DSP_Done == False + @@ -841,23 +810,12 @@ Submit the step only when you are ready. After you "Submit" the step, the inform - - - - - - - - + - - - - @@ -874,15 +832,6 @@ Submit the step only when you are ready. After you "Submit" the step, the inform - - - - - - - - - @@ -913,64 +862,68 @@ Submit the step only when you are ready. After you "Submit" the step, the inform - - + + - + - + - - + + - + - - + + - + - - - - + + + + - + - - + + - + - + - - + + - + - - - - + + + + - + + + + + diff --git a/crc/static/bpmn/crc2_training_session_enter_core_info/crc2_training_session_enter_core_info.bpmn b/crc/static/bpmn/crc2_training_session_enter_core_info/crc2_training_session_enter_core_info.bpmn index 15346b03..fc90a9de 100644 --- a/crc/static/bpmn/crc2_training_session_enter_core_info/crc2_training_session_enter_core_info.bpmn +++ b/crc/static/bpmn/crc2_training_session_enter_core_info/crc2_training_session_enter_core_info.bpmn @@ -14,6 +14,121 @@ + + SequenceFlow_0xfv8yt + SequenceFlow_1nyebxq + SequenceFlow_0s6lscl + SequenceFlow_0tl6dtl + SequenceFlow_1bdgyx8 + + + SequenceFlow_0vnit5w + SequenceFlow_12u08ph + SequenceFlow_1049qrj + SequenceFlow_1vfbg50 + SequenceFlow_0skynyx + + + SequenceFlow_0skynyx + + + SequenceFlow_0xfv8yt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SequenceFlow_0tl6dtl + SequenceFlow_1049qrj + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SequenceFlow_1bdgyx8 + SequenceFlow_1vfbg50 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SequenceFlow_0s6lscl + SequenceFlow_12u08ph + @@ -83,163 +198,6 @@ SequenceFlow_1nyebxq SequenceFlow_0vnit5w - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_0s6lscl - SequenceFlow_12u08ph - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_1bdgyx8 - SequenceFlow_1vfbg50 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_1oz7y6d - SequenceFlow_0vbmpyv - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_0tl6dtl - SequenceFlow_1049qrj - - - SequenceFlow_0xfv8yt - SequenceFlow_1nyebxq - SequenceFlow_0s6lscl - SequenceFlow_0tl6dtl - SequenceFlow_1bdgyx8 - SequenceFlow_1oz7y6d - - - SequenceFlow_0vnit5w - SequenceFlow_12u08ph - SequenceFlow_1049qrj - SequenceFlow_1vfbg50 - SequenceFlow_0vbmpyv - SequenceFlow_0skynyx - - - SequenceFlow_0skynyx - - - SequenceFlow_0xfv8yt - @@ -250,13 +208,13 @@ - + - + - + @@ -268,7 +226,7 @@ - + @@ -276,63 +234,52 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - - - - - - - - diff --git a/crc/static/bpmn/sponsor_funding_source/sponsor_funding_source.bpmn b/crc/static/bpmn/crc2_training_session_sponsor_funding_source/crc2_training_session_sponsor_funding_source.bpmn similarity index 78% rename from crc/static/bpmn/sponsor_funding_source/sponsor_funding_source.bpmn rename to crc/static/bpmn/crc2_training_session_sponsor_funding_source/crc2_training_session_sponsor_funding_source.bpmn index c3b9d2bd..bcf6f6d9 100644 --- a/crc/static/bpmn/sponsor_funding_source/sponsor_funding_source.bpmn +++ b/crc/static/bpmn/crc2_training_session_sponsor_funding_source/crc2_training_session_sponsor_funding_source.bpmn @@ -14,11 +14,7 @@ - - - - - + @@ -26,14 +22,7 @@ - - - - - - - - + @@ -51,10 +40,10 @@ - + - + diff --git a/example_data.py b/example_data.py index 2421ce84..c9c7ce7c 100644 --- a/example_data.py +++ b/example_data.py @@ -9,7 +9,7 @@ from crc.models.study import StudyModel from crc.models.user import UserModel from crc.models.workflow import WorkflowSpecModel from crc.services.workflow_processor import WorkflowProcessor -from models.protocol_builder import ProtocolBuilderStatus +from crc.models.protocol_builder import ProtocolBuilderStatus class ExampleDataLoader: @@ -32,7 +32,7 @@ class ExampleDataLoader: id=1, title='The impact of fried pickles on beer consumption in bipedal software developers.', last_updated=datetime.datetime.now(), - protocol_builder_status=ProtocolBuilderStatus.IN_PROCESS.name, + protocol_builder_status=ProtocolBuilderStatus.IN_PROCESS, primary_investigator_id='dhf8r', sponsor='Sartography Pharmaceuticals', ind_number='1234', @@ -42,7 +42,7 @@ class ExampleDataLoader: id=2, title='Requirement of hippocampal neurogenesis for the behavioral effects of soft pretzels', last_updated=datetime.datetime.now(), - protocol_builder_status=ProtocolBuilderStatus.IN_PROCESS.name, + protocol_builder_status=ProtocolBuilderStatus.IN_PROCESS, primary_investigator_id='dhf8r', sponsor='Makerspace & Co.', ind_number='5678', @@ -61,10 +61,10 @@ class ExampleDataLoader: display_name="CR Connect2 - Training Session - Data Security Plan", description='Part of Milestone 3 Deliverable') workflow_specifications += \ - self.create_spec(id="sponsor_funding_source", - name="sponsor_funding_source", - display_name="Sponsor and/or Funding Source ", - description='TBD') + self.create_spec(id="crc2_training_session_sponsor_funding_source", + name="crc2_training_session_sponsor_funding_source", + display_name="CR Connect2 - Training Session - Sponsor and/or Funding Source", + description='Part of Milestone 3 Deliverable') # workflow_specifications += \ # self.create_spec(id="m2_demo", # name="m2_demo", diff --git a/tests/test_study_api.py b/tests/test_study_api.py index 7da55c55..acfa7104 100644 --- a/tests/test_study_api.py +++ b/tests/test_study_api.py @@ -50,7 +50,7 @@ class TestStudyApi(BaseTest): self.load_example_data() study: StudyModel = session.query(StudyModel).first() study.title = "Pilot Study of Fjord Placement for Single Fraction Outcomes to Cortisol Susceptibility" - study.protocol_builder_status = ProtocolBuilderStatus.REVIEW_COMPLETE.name + study.protocol_builder_status = ProtocolBuilderStatus.REVIEW_COMPLETE rv = self.app.put('/v1.0/study/%i' % study.id, content_type="application/json", headers=self.logged_in_headers(),