def setup_info(test_client): mpa = MinePartyAppointment( mine_party_appt_guid=TEST_MINE_PARTY_APPT_GUID, mine_guid=uuid.UUID(TEST_MINE_GUID), party_guid=uuid.UUID(TEST_PARTY_PER_GUID_1), mine_party_appt_type_code=TEST_MINE_PARTY_APPT_TYPE_CODE1, **DUMMY_USER_KWARGS) mpa.save() yield dict(mine_party_appointment=mpa) db.session.delete(mpa) db.session.commit()
def test_get_mine_party_appt_by_multiple_types(test_client, auth_headers): new_mpa = MinePartyAppointment( mine_party_appt_type_code=TEST_MINE_PARTY_APPT_TYPE_CODE2, party_guid=uuid.UUID(TEST_PARTY_PER_GUID_1), mine_guid=uuid.UUID(TEST_MINE_GUID)) new_mpa.save() get_resp = test_client.get( f'/parties/mines?mine_guid={TEST_MINE_GUID}&types={TEST_MINE_PARTY_APPT_TYPE_CODE2}&types={TEST_MINE_PARTY_APPT_TYPE_CODE1}', headers=auth_headers['full_auth_header']) get_data = json.loads(get_resp.data.decode()) assert get_resp.status_code == 200 assert all(mpa['mine_guid'] == TEST_MINE_GUID for mpa in get_data) assert len(get_data) == 2
def setup_info(test_client): permittee = MinePartyAppointment( mine_party_appt_guid=uuid.uuid4(), mine_party_appt_type_code='PMT', party_guid=uuid.UUID(TEST_PARTY_PER_GUID_1), mine_guid=uuid.UUID(TEST_MINE_GUID), permit_guid=uuid.UUID(TEST_PERMIT_GUID_1)) permittee.save() yield dict(permittee_guid=permittee.mine_party_appt_guid) db.session.delete(permittee) db.session.commit()
def setup_info(test_client): NON_EXISTENT_GUID = '8ef23184-02c4-4472-a912-380b5a0d9cae' permittee = MinePartyAppointment( mine_party_appt_guid=uuid.uuid4(), mine_party_appt_type_code='PMT', party_guid=uuid.UUID(TEST_PARTY_PER_GUID_1), mine_guid=uuid.UUID(TEST_MINE_GUID), permit_guid=uuid.UUID(TEST_PERMIT_GUID_1)) permittee.save() yield dict(permittee_guid=str(permittee.mine_party_appt_guid), bad_guid=NON_EXISTENT_GUID) db.session.delete(permittee) db.session.commit()
def setup_info(test_client): mpa = MinePartyAppointment( mine_party_appt_guid=TEST_MINE_PARTY_APPT_GUID, mine_guid=uuid.UUID(TEST_MINE_GUID), party_guid=uuid.UUID(TEST_PARTY_PER_GUID_1), mine_party_appt_type_code=TEST_MINE_PARTY_APPT_TYPE_CODE1) mpa.save() mine_tsf1 = MineTailingsStorageFacility.create( mine_guid=TEST_MINE_GUID, tailings_facility_name='Tailings Facility 1') mine_tsf1.save() yield dict(mine_party_appointment=mpa, tsf1=mine_tsf1) db.session.query(MinePartyAppointment).delete() db.session.delete(mine_tsf1) db.session.commit()
def setup_info(test_client): mine_manager_1 = MinePartyAppointment( mine_guid=uuid.UUID(TEST_MINE_GUID), party_guid=uuid.UUID(TEST_PARTY_PER_GUID_1), mine_party_appt_type_code='MMG', start_date=INIT_START_DATE, end_date=INIT_END_DATE, processed_by='update_user') mine_manager_1.save() mine_manager_2 = MinePartyAppointment( mine_guid=uuid.UUID(TEST_MINE_GUID), party_guid=uuid.UUID(TEST_PARTY_PER_GUID_1), mine_party_appt_type_code='MMG', start_date=INIT_START_DATE + timedelta(days=500), end_date=INIT_END_DATE + timedelta(days=500), processed_by='update_user') mine_manager_2.save() yield dict(mine_manager_1=mine_manager_1, mine_manager_2=mine_manager_2) db.session.delete(mine_manager_1) db.session.delete(mine_manager_2) db.session.commit()
def post(self, mine_party_appt_guid=None): if mine_party_appt_guid: raise BadRequest('unexpected mine party appointment guid') data = self.parser.parse_args() end_current = data.get('end_current') mine_party_appt_type_code = data.get('mine_party_appt_type_code') related_guid = data.get('related_guid') mine_guid = data.get('mine_guid') start_date = data.get('start_date') if end_current: if mine_party_appt_type_code == "EOR": current_mpa = MinePartyAppointment.find_current_appointments( mine_guid=mine_guid, mine_party_appt_type_code=mine_party_appt_type_code, mine_tailings_storage_facility_guid=related_guid) elif mine_party_appt_type_code == "PMT": current_mpa = MinePartyAppointment.find_current_appointments( mine_guid=mine_guid, mine_party_appt_type_code=mine_party_appt_type_code, permit_guid=related_guid) else: current_mpa = MinePartyAppointment.find_current_appointments( mine_guid=mine_guid, mine_party_appt_type_code=mine_party_appt_type_code) if len(current_mpa) > 1: raise BadRequest( 'There is currently more than one active appointment.') current_mpa[0].end_date = start_date - timedelta(days=1) current_mpa[0].save() new_mpa = MinePartyAppointment( mine_guid=mine_guid, party_guid=data.get('party_guid'), mine_party_appt_type_code=mine_party_appt_type_code, start_date=start_date, end_date=data.get('end_date'), processed_by=self.get_user_info()) if new_mpa.mine_party_appt_type_code == "EOR": new_mpa.assign_related_guid(related_guid) if not new_mpa.mine_tailings_storage_facility_guid: raise AssertionError( 'mine_tailings_storage_facility_guid must be provided for Engineer of Record' ) #TODO move db foreign key constraint when services get separated pass if new_mpa.mine_party_appt_type_code == "PMT": new_mpa.assign_related_guid(related_guid) if not new_mpa.permit_guid: raise AssertionError( 'permit_guid must be provided for Permittee') #TODO move db foreign key constraint when services get separated pass try: new_mpa.save() except alch_exceptions.IntegrityError as e: if "daterange_excl" in str(e): mpa_type_name = MinePartyAppointmentType.find_by_mine_party_appt_type_code( data.get('mine_party_appt_type_code')).description raise BadRequest( f'Date ranges for {mpa_type_name} must not overlap') return new_mpa.json()
def setup_data(session): # Clear data clear_data(session) # Insert Region Code for region_code_value, display_order_value in zip( TEST_REGION_CODES, TEST_REGION_CODE_DISPLAY_ORDER): region_code = MineRegionCode(mine_region_code=region_code_value, description=TEST_REGION_DESCRIPTION, display_order=display_order_value, **DUMMY_USER_KWARGS) region_code.save() # Insert Mine Tenure Types for code, description in zip(TEST_MINE_TENURE_TYPE_CODES, TEST_MINE_TENURE_TYPE_DESCRIPTIONS): mine_tenure_type_code = MineTenureTypeCode(mine_tenure_type_code=code, description=description, **DUMMY_USER_KWARGS) mine_tenure_type_code.save() # Insert Mine Disturbance Codes for code, description in zip(TEST_MINE_DISTURBANCE_CODES, TEST_MINE_DISTURBANCE_DESCRIPTIONS): mine_disturbance_code = MineDisturbanceCode(mine_disturbance_code=code, description=description, **DUMMY_USER_KWARGS) mine_disturbance_code.save() # Insert Mine Commodity Codes for code, description in zip(TEST_MINE_COMMODITY_CODES, TEST_MINE_COMMODITY_DESCRIPTIONS): mine_commodity_code = MineCommodityCode(mine_commodity_code=code, description=description, **DUMMY_USER_KWARGS) mine_commodity_code.save() # Test Mine Data mine_identity = MineIdentity(mine_guid=uuid.UUID(TEST_MINE_GUID), **DUMMY_USER_KWARGS) mine_detail = MineDetail(mine_detail_guid=uuid.UUID(TEST_MINE_DETAIL_GUID), mine_guid=uuid.UUID(TEST_MINE_GUID), mine_no=TEST_MINE_NO, mine_name=TEST_MINE_NAME, mine_region=TEST_REGION_CODE, **DUMMY_USER_KWARGS) mine_identity.save() mine_detail.save() # Test Mine Type mine_type = MineType(mine_type_guid=uuid.UUID(TEST_MINE_TYPE_GUID), mine_guid=uuid.UUID(TEST_MINE_GUID), mine_tenure_type_code=TEST_MINE_TENURE_TYPE_CODES[0], active_ind=True, **DUMMY_USER_KWARGS) mine_type.save() # Test Mine Type Detail mine_type_detail = MineTypeDetail( mine_type_detail_xref_guid=uuid.UUID(TEST_MINE_TYPE_DETAIL_GUID), mine_type_guid=uuid.UUID(TEST_MINE_TYPE_GUID), mine_disturbance_code=TEST_MINE_DISTURBANCE_CODES[0], active_ind=True, **DUMMY_USER_KWARGS) mine_type_detail.save() # Test Tenure Data tenure = MineralTenureXref( mineral_tenure_xref_guid=uuid.UUID(TEST_TENURE_GUID), mine_guid=uuid.UUID(TEST_MINE_GUID), tenure_number_id=TEST_TENURE_ID, **DUMMY_USER_KWARGS) tenure.save() # Test Location Data mine_location = MineLocation( mine_location_guid=uuid.UUID(TEST_LOCATION_GUID), mine_guid=uuid.UUID(TEST_MINE_GUID), latitude=TEST_LAT_1, longitude=TEST_LONG_1, effective_date=datetime.today(), expiry_date=datetime.today(), **DUMMY_USER_KWARGS) mine_location.save() # Test Person Type Codes for k, v in PARTY_STATUS_CODE.items(): party_code = PartyTypeCode(party_type_code=v, description=v, **DUMMY_USER_KWARGS) party_code.save() session.commit() # Test Operation Codes for k, v in MINE_OPERATION_STATUS.items(): mine_operation_status_code = MineOperationStatusCode( mine_operation_status_code=v['value'], description=v['label'], **DUMMY_USER_KWARGS) mine_operation_status_code.save() for k, v in MINE_OPERATION_STATUS_REASON.items(): mine_operation_status_reason_code = MineOperationStatusReasonCode( mine_operation_status_reason_code=v['value'], description=v['label'], **DUMMY_USER_KWARGS) mine_operation_status_reason_code.save() for k, v in MINE_OPERATION_STATUS_SUB_REASON.items(): mine_operation_status_sub_reason_code = MineOperationStatusSubReasonCode( mine_operation_status_sub_reason_code=v['value'], description=v['label'], **DUMMY_USER_KWARGS) mine_operation_status_sub_reason_code.save() session.commit() # Test Person Data person = Party(party_guid=uuid.UUID(TEST_PARTY_PER_GUID_1), first_name=TEST_PARTY_PER_FIRST_NAME_1, party_name=TEST_PARTY_PER_PARTY_NAME_1, email=TEST_PARTY_PER_EMAIL_1, phone_no=TEST_PARTY_PER_PHONE_1, phone_ext=TEST_PARTY_PER_PHONE_EXT_1, party_type_code=TEST_PARTY_TYPE, **DUMMY_USER_KWARGS) person.save(commit=False) person2 = Party(party_guid=uuid.UUID(TEST_PARTY_PER_GUID_2), first_name=TEST_PARTY_PER_FIRST_NAME_2, party_name=TEST_PARTY_PER_PARTY_NAME_2, email=TEST_PARTY_PER_EMAIL_2, phone_no=TEST_PARTY_PER_PHONE_2, phone_ext=TEST_PARTY_PER_PHONE_EXT_2, party_type_code=TEST_PARTY_TYPE, **DUMMY_USER_KWARGS) person2.save(commit=False) person3 = Party(party_guid=uuid.UUID(TEST_PARTY_PER_GUID_3), first_name=TEST_PARTY_PER_FIRST_NAME_3, party_name=TEST_PARTY_PER_PARTY_NAME_3, email=TEST_PARTY_PER_EMAIL_3, phone_no=TEST_PARTY_PER_PHONE_3, phone_ext=TEST_PARTY_PER_PHONE_EXT_3, party_type_code=TEST_PARTY_TYPE, **DUMMY_USER_KWARGS) person3.save(commit=False) party_org = Party(party_guid=uuid.UUID(TEST_PARTY_ORG_GUID), party_name=TEST_PARTY_ORG_NAME, email=TEST_PARTY_ORG_EMAIL, phone_no=TEST_PARTY_ORG_PHONE, phone_ext=TEST_PARTY_ORG_EXT, party_type_code=TEST_ORG_TYPE, **DUMMY_USER_KWARGS) party_org.save() # Test Manager Data manager = MgrAppointment(mgr_appointment_guid=uuid.UUID(TEST_MANAGER_GUID), party_guid=uuid.UUID(TEST_PARTY_PER_GUID_1), mine_guid=uuid.UUID(TEST_MINE_GUID), effective_date=datetime.today() - timedelta(days=10), **DUMMY_USER_KWARGS) manager.save() # Test Permit Status Codes for permit_code_value in TEST_PERMIT_STATUS_CODES: permit_code = PermitStatusCode( permit_status_code=permit_code_value, description=TEST_PERMIT_STATUS_CODE_NAME_1, **DUMMY_USER_KWARGS) permit_code.save() # Test Permit Data permit = Permit(permit_guid=TEST_PERMIT_GUID_1, mine_guid=TEST_MINE_GUID, permit_no=TEST_PERMIT_NO_1, permit_status_code=TEST_PERMIT_STATUS_CODE_1, received_date=datetime.today(), issue_date=datetime.today(), **DUMMY_USER_KWARGS) permit.save() # Test Permittee Data permittee = Permittee(permittee_guid=uuid.UUID(TEST_PERMITTEE_GUID), permit_guid=uuid.UUID(TEST_PERMIT_GUID_1), party_guid=uuid.UUID(TEST_PARTY_PER_GUID_1), **DUMMY_USER_KWARGS) permittee.save() required_document_due_date_type1 = RequiredDocumentDueDateType( req_document_due_date_type=TEST_REQUIRED_REPORT_DUE_DATE_TYPE[0], req_document_due_date_description= TEST_REQUIRED_REPORT_DUE_DATE_DESCRIPTION[0], **DUMMY_USER_KWARGS) required_document_due_date_type1.save() required_document_due_date_type2 = RequiredDocumentDueDateType( req_document_due_date_type=TEST_REQUIRED_REPORT_DUE_DATE_TYPE[1], req_document_due_date_description= TEST_REQUIRED_REPORT_DUE_DATE_DESCRIPTION[1], **DUMMY_USER_KWARGS) required_document_due_date_type2.save() required_document_category1 = RequiredDocumentCategory( req_document_category_guid=TEST_REQUIRED_REPORT_CATEGORY_TAILINGS_GUID, req_document_category=TEST_REQUIRED_REPORT_CATEGORY_TAILINGS) required_document_category1.save() required_document_category2 = RequiredDocumentCategory( req_document_category_guid=TEST_REQUIRED_REPORT_CATEGORY_OTHER_GUID, req_document_category=TEST_REQUIRED_REPORT_CATEGORY_OTHER) required_document_category2.save() required_document1 = RequiredDocument( req_document_guid=uuid.UUID(TEST_REQUIRED_REPORT_GUID1), req_document_name=TEST_REQUIRED_REPORT_NAME1, req_document_category_guid=TEST_REQUIRED_REPORT_CATEGORY_TAILINGS_GUID, req_document_due_date_type=TEST_REQUIRED_REPORT_DUE_DATE_TYPE[0], req_document_due_date_period_months=12, **DUMMY_USER_KWARGS) required_document1.save() required_document2 = RequiredDocument( req_document_guid=uuid.UUID(TEST_REQUIRED_REPORT_GUID2), req_document_name=TEST_REQUIRED_REPORT_NAME2, req_document_category_guid=TEST_REQUIRED_REPORT_CATEGORY_TAILINGS_GUID, req_document_due_date_type=TEST_REQUIRED_REPORT_DUE_DATE_TYPE[0], req_document_due_date_period_months=12, **DUMMY_USER_KWARGS) required_document2.save() required_document3 = RequiredDocument( req_document_guid=uuid.UUID(TEST_REQUIRED_REPORT_GUID3), req_document_name=TEST_REQUIRED_REPORT_NAME3, req_document_category_guid=TEST_REQUIRED_REPORT_CATEGORY_OTHER_GUID, req_document_due_date_type=TEST_REQUIRED_REPORT_DUE_DATE_TYPE[1], req_document_due_date_period_months=12, **DUMMY_USER_KWARGS) required_document3.save() expected_document1 = MineExpectedDocument( exp_document_guid=uuid.UUID(TEST_EXPECTED_DOCUMENT_GUID1), req_document_guid=uuid.UUID(TEST_REQUIRED_REPORT_GUID1), mine_guid=TEST_MINE_GUID, exp_document_name=TEST_EXPECTED_DOCUMENT_NAME1, due_date=datetime.strptime('1984-06-18', '%Y-%m-%d'), received_date=datetime.strptime('1984-06-18', '%Y-%m-%d'), **DUMMY_USER_KWARGS) expected_document1.save() mine_tsf1 = MineTailingsStorageFacility( mine_tailings_storage_facility_guid= TEST_TAILINGS_STORAGE_FACILITY_GUID1, mine_guid=TEST_MINE_GUID, mine_tailings_storage_facility_name= TEST_TAILINGS_STORAGE_FACILITY_NAME1, **DUMMY_USER_KWARGS) mine_tsf1.save() mpat1 = MinePartyAppointmentType( mine_party_appt_type_code=TEST_MINE_PARTY_APPT_TYPE_CODE1, description=TEST_MINE_PARTY_APPT_TYPE_DESCRIPTION1, **DUMMY_USER_KWARGS) mpat1.save() mpat2 = MinePartyAppointmentType( mine_party_appt_type_code=TEST_MINE_PARTY_APPT_TYPE_CODE2, description=TEST_MINE_PARTY_APPT_TYPE_DESCRIPTION2, **DUMMY_USER_KWARGS) mpat2.save() mpat3 = MinePartyAppointmentType(mine_party_appt_type_code='EOR', description='Engineer of Record', **DUMMY_USER_KWARGS) mpat3.save() mpa = MinePartyAppointment( mine_party_appt_guid=TEST_MINE_PARTY_APPT_GUID, mine_guid=uuid.UUID(TEST_MINE_GUID), party_guid=uuid.UUID(TEST_PARTY_PER_GUID_1), mine_party_appt_type_code=TEST_MINE_PARTY_APPT_TYPE_CODE1, **DUMMY_USER_KWARGS) mpa.save() mine_doc1 = MineDocument( mine_guid=uuid.UUID(TEST_MINE_GUID), document_name=TEST_MINE_DOCUMENT_NAME1, document_manager_guid=TEST_DOCUMENT_MANAGER_FILE_GUID, **DUMMY_USER_KWARGS) mine_doc1.mine_expected_document.append(expected_document1) mine_doc1.save()