def create_party(business_id: int, party_info: dict, create: bool = True) -> Party: """Create a new party or get them if they already exist.""" party = None if create: party = PartyRole.find_party_by_name( business_id=business_id, first_name=party_info['officer'].get('firstName', '').upper(), last_name=party_info['officer'].get('lastName', '').upper(), middle_initial=party_info['officer'].get('middleInitial', '').upper(), org_name=party_info.get('orgName', '').upper()) if not party: party = Party( first_name=party_info['officer'].get('firstName', '').upper(), last_name=party_info['officer'].get('lastName', '').upper(), middle_initial=party_info['officer'].get('middleInitial', '').upper(), title=party_info.get('title', '').upper(), organization_name=party_info.get('orgName', '').upper()) # add addresses to party if party_info.get('deliveryAddress', None): address = create_address(party_info['deliveryAddress'], Address.DELIVERY) party.delivery_address = address if party_info.get('mailingAddress', None): mailing_address = create_address(party_info['mailingAddress'], Address.MAILING) party.mailing_address = mailing_address return party
def test_party_json(session): """Assert the json format of party member.""" person = Party(party_type=Party.PartyTypes.PERSON.value, first_name='Michael', last_name='Crane', middle_initial='Joe', title='VP') person_json = { 'officer': { 'firstName': person.first_name, 'lastName': person.last_name, 'middleInitial': person.middle_initial }, 'title': person.title } organization = Party(party_type=Party.PartyTypes.ORGANIZATION.value, organization_name='organization') organization_json = { 'officer': { 'organizationName': organization.organization_name, }, } assert person.json == person_json assert organization.json == organization_json
def add_business_directors(business, directors_json): for director in directors_json['directors']: delivery_address = create_delivery_address(director['deliveryAddress']) # create person/organization get them if they already exist party = Party.find_by_name( first_name=director['officer'].get('firstName', '').upper(), last_name=director['officer'].get('lastName', '').upper(), organization_name=director.get('organization_name', '').upper()) if not party: party = Party( first_name=director['officer'].get('firstName', '').upper(), last_name=director['officer'].get('lastName', '').upper(), middle_initial=director['officer'].get('middleInitial', '').upper(), title=director.get('title', '').upper(), organization_name=director.get('organization_name', '').upper()) # add addresses to party party.delivery_address = delivery_address # create party role and link party to it party_role = PartyRole( role=PartyRole.RoleTypes.DIRECTOR.value, appointment_date=director.get('appointmentDate'), cessation_date=director.get('cessationDate'), party=party) business.party_roles.append(party_role)
def test_party_role_json(session): """Assert the json format of party role.""" identifier = 'CP1234567' business = factory_business(identifier) member = Party( first_name='Michael', last_name='Crane', middle_initial='Joe', title='VP', ) member.save() # sanity check assert member.id party_role = PartyRole( role=PartyRole.RoleTypes.DIRECTOR.value, appointment_date=datetime.datetime(2017, 5, 17), cessation_date=None, party_id=member.id, business_id=business.id ) party_role.save() party_role_json = { 'appointmentDate': party_role.appointment_date.date().isoformat(), 'cessationDate': party_role.cessation_date, 'role': party_role.role, 'officer': { 'firstName': member.first_name, 'lastName': member.last_name, 'middleInitial': member.middle_initial }, 'title': member.title } assert party_role.json == party_role_json
def copy_over_dirs(): # add directors as party members select_string = 'select * from directors' directors = db.session.execute(select_string) count = 0 for row in directors: first_name = row[1] middle_initial = row[2] last_name = row[3] title = row[4] appointment_date = row[5] cessation_date = row[6] business_id = row[7] address_id = row[8] mailing_address_id = row[9] try: member = Party.find_by_name( first_name=first_name.upper(), last_name=last_name.upper(), organization_name=None ) if not member: # initialize member member = Party( first_name=first_name, middle_initial=middle_initial, last_name=last_name, title=title, delivery_address_id=address_id, mailing_address_id=mailing_address_id ) # initialize member role member_role = PartyRole( role=PartyRole.RoleTypes.DIRECTOR.value, appointment_date=appointment_date, cessation_date=cessation_date, business_id=business_id, party=member ) db.session.add(member_role) db.session.commit() except Exception as err: print(f'Error: {err}') print(f'director: {row}') print(f'party: {member}') count += 1 continue print(f'failed to add {count}')
def test_party_save(session): """Assert that the party member saves correctly.""" member1 = Party(first_name='Michael', last_name='Crane', middle_initial='Joe', title='VP') member2 = Party(party_type=Party.PartyTypes.ORGANIZATION.value, organization_name='organization') member1.save() member2.save() assert member1.id assert member2.id
def add_business_directors(business: Business, directors_json: dict): """Create directors and add them to business.""" for director in directors_json['directors']: delivery_address = create_address(director['deliveryAddress'], Address.DELIVERY) mailing_address = create_address(director['mailingAddress'], Address.MAILING) # create person/organization or get them if they already exist for corp party = PartyRole.find_party_by_name( business_id=business.id, first_name=director['officer'].get('firstName', '').upper(), last_name=director['officer'].get('lastName', '').upper(), middle_initial=director['officer'].get('middleInitial', '').upper(), org_name=director.get('organization_name', '').upper()) if not party: party = Party( first_name=director['officer'].get('firstName', '').upper(), last_name=director['officer'].get('lastName', '').upper(), middle_initial=director['officer'].get('middleInitial', '').upper(), title=director.get('title', '').upper(), organization_name=director.get('organization_name', '').upper()) # add addresses to party party.delivery_address = delivery_address party.mailing_address = mailing_address # create party role and link party to it party_role = PartyRole( role=PartyRole.RoleTypes.DIRECTOR.value, appointment_date=director.get('appointmentDate'), cessation_date=director.get('cessationDate'), party=party) business.party_roles.append(party_role)
def test_invalid_org_party_type(session): """Assert the party model validates the party type correctly.""" member1 = Party(party_type=Party.PartyTypes.ORGANIZATION.value, first_name='invalid', last_name='name', middle_initial='test', title='INV') member2 = Party(party_type=Party.PartyTypes.PERSON.value, organization_name='organization') with pytest.raises(BusinessException) as party_type_err1: member1.save() session.rollback() with pytest.raises(BusinessException) as party_type_err2: member2.save() assert party_type_err1 and party_type_err2 assert party_type_err1.value.status_code == HTTPStatus.BAD_REQUEST assert party_type_err2.value.status_code == HTTPStatus.BAD_REQUEST
def factory_party_role(delivery_address: Address, mailing_address: Address, officer: dict, appointment_date: datetime, cessation_date: datetime, role_type: PartyRole.RoleTypes): """Create a role.""" party = Party(first_name=officer['firstName'], last_name=officer['lastName'], middle_initial=officer['middleInitial']) party.delivery_address = delivery_address party.mailing_address = mailing_address party.save() party_role = PartyRole(role=role_type.value, appointment_date=appointment_date, cessation_date=cessation_date, party_id=party.id) return party_role
def test_find_party_by_name(session): """Assert the find_party_by_name method works as expected.""" # setup identifier = 'CP1234567' business = factory_business(identifier) person = Party( first_name='Michael', last_name='Crane', middle_initial='Joe', title='VP', ) person.save() no_middle_initial = Party( first_name='Testing', last_name='NoMiddleInitial', middle_initial='', ) no_middle_initial.save() org = Party( organization_name='testOrg', party_type=Party.PartyTypes.ORGANIZATION.value ) org.save() # sanity check assert person.id assert org.id director1 = PartyRole( role=PartyRole.RoleTypes.DIRECTOR.value, appointment_date=datetime.datetime(2017, 5, 17), cessation_date=None, party_id=person.id, business_id=business.id ) director1.save() director2 = PartyRole( role=PartyRole.RoleTypes.DIRECTOR.value, appointment_date=datetime.datetime(2017, 5, 17), cessation_date=None, party_id=no_middle_initial.id, business_id=business.id ) director2.save() completing_party = PartyRole( role=PartyRole.RoleTypes.COMPLETING_PARTY.value, appointment_date=datetime.datetime(2017, 5, 17), cessation_date=None, party_id=org.id, business_id=business.id ) completing_party.save() # call method should_be_none = PartyRole.find_party_by_name( business_id=business.id, first_name='Test', last_name='Test', middle_initial='', org_name='' ) should_not_find_michael = PartyRole.find_party_by_name( business_id=business.id, first_name='Michael', last_name='Crane', middle_initial='', org_name='' ) should_find_michael = PartyRole.find_party_by_name( business_id=business.id, first_name='Michael', last_name='Crane', middle_initial='Joe', org_name='' ) should_not_find_testing = PartyRole.find_party_by_name( business_id=business.id, first_name='Testing', last_name='NoMiddleInitial', middle_initial='T', org_name='' ) should_find_testing = PartyRole.find_party_by_name( business_id=business.id, first_name='Testing', last_name='NoMiddleInitial', middle_initial='', org_name='' ) should_find_testorg = PartyRole.find_party_by_name( business_id=business.id, first_name='', last_name='', middle_initial='', org_name='testorg' ) # check values assert not should_be_none assert not should_not_find_michael assert not should_not_find_testing assert should_find_michael.id == person.id assert should_find_testing.id == no_middle_initial.id assert should_find_testorg.id == org.id