def get_directors(identifier, director_id=None): """Return a JSON of the directors.""" business = Business.find_by_identifier(identifier) if not business: return jsonify({'message': f'{identifier} not found'}), HTTPStatus.NOT_FOUND # return the matching director if director_id: director, msg, code = _get_director(business, director_id) return jsonify(director or msg), code # return all active directors as of date query param end_date = datetime.utcnow().strptime(request.args.get('date'), '%Y-%m-%d').date()\ if request.args.get('date') else datetime.utcnow().date() party_list = [] active_directors = PartyRole.get_active_directors(business.id, end_date) for director in active_directors: director_json = director.json if business.legal_type == Business.LegalTypes.COOP.value: del director_json['mailingAddress'] party_list.append(director_json) return jsonify(directors=party_list)
async def test_process_combined_filing(app, session, mocker): """Assert that an AR filling can be applied to the model correctly.""" # mock out the email sender and event publishing mocker.patch('entity_filer.worker.publish_email_message', return_value=None) mocker.patch('entity_filer.worker.publish_event', return_value=None) # vars payment_id = str(random.SystemRandom().getrandbits(0x58)) identifier = 'CP1234567' business = create_business(identifier, legal_type='CP') agm_date = datetime.date.fromisoformat( COMBINED_FILING['filing']['annualReport'].get( 'annualGeneralMeetingDate')) ar_date = datetime.date.fromisoformat( COMBINED_FILING['filing']['annualReport'].get('annualReportDate')) new_delivery_address = COMBINED_FILING['filing']['changeOfAddress'][ 'offices']['registeredOffice'][ 'deliveryAddress'] # noqa: E501; line too long by 1 char new_mailing_address = COMBINED_FILING['filing']['changeOfAddress'][ 'offices']['registeredOffice']['mailingAddress'] end_date = datetime.datetime.utcnow().date() # prep director for no change filing_data = copy.deepcopy(COMBINED_FILING) directors = filing_data['filing']['changeOfDirectors']['directors'] director_party1 = create_party(business.id, directors[0]) role1 = { 'roleType': 'director', 'appointmentDate': directors[0].get('appointmentDate'), 'cessationDate': directors[0].get('cessationDate') } director1 = create_role(party=director_party1, role_info=role1) # prep director for name change director_party2_dict = directors[1] director_party2_dict['officer']['firstName'] = director_party2_dict[ 'officer']['prevFirstName'] director_party2_dict['officer']['middleInitial'] = director_party2_dict[ 'officer']['prevMiddleInitial'] director_party2_dict['officer']['lastName'] = director_party2_dict[ 'officer']['prevLastName'] director_party2 = create_party(business.id, director_party2_dict) role2 = { 'roleType': 'Director', 'appointmentDate': director_party2_dict.get('appointmentDate'), 'cessationDate': director_party2_dict.get('cessationDate') } director2 = create_role(party=director_party2, role_info=role2) # prep director for cease director_party3 = create_party(business.id, directors[2]) role3 = { 'roleType': 'director', 'appointmentDate': directors[3].get('appointmentDate'), 'cessationDate': directors[3].get('cessationDate') } director3 = create_role(party=director_party3, role_info=role3) # prep director for address change director_party4_dict = directors[3] director_party4_dict['deliveryAddress'][ 'streetAddress'] = 'should get changed' director_party4 = create_party(business.id, director_party4_dict) role4 = { 'roleType': 'director', 'appointmentDate': director_party4_dict.get('appointmentDate'), 'cessationDate': director_party4_dict.get('cessationDate') } director4 = create_role(party=director_party4, role_info=role4) # list of active/ceased directors in test filing ceased_directors, active_directors = active_ceased_lists(COMBINED_FILING) # setup business.party_roles.append(director1) business.party_roles.append(director2) business.party_roles.append(director3) business.party_roles.append(director4) business.save() director_ceased_id = director3.id # check that adding the directors during setup was successful directors = PartyRole.get_parties_by_role( business.id, PartyRole.RoleTypes.DIRECTOR.value) assert len(directors) == 4 business_id = business.id filing_id = (create_filing(payment_id, COMBINED_FILING, business.id)).id filing_msg = {'filing': {'id': filing_id}} # TEST await process_filing(filing_msg, app) # Get modified data filing = Filing.find_by_id(filing_id) business = Business.find_by_internal_id(business_id) # check it out assert filing.transaction_id assert filing.business_id == business_id assert filing.status == Filing.Status.COMPLETED.value assert datetime.datetime.date(business.last_agm_date) == agm_date assert datetime.datetime.date(business.last_ar_date) == ar_date # check address filing delivery_address = business.delivery_address.one_or_none().json compare_addresses(delivery_address, new_delivery_address) mailing_address = business.mailing_address.one_or_none().json compare_addresses(mailing_address, new_mailing_address) # check director filing directors = PartyRole.get_active_directors(business.id, end_date) check_directors(business, directors, director_ceased_id, ceased_directors, active_directors)
async def test_process_cod_mailing_address(app, session): """Assert that a COD address change filling can be applied to the model correctly.""" # vars payment_id = str(random.SystemRandom().getrandbits(0x58)) identifier = 'CP1234567' end_date = datetime.datetime.utcnow().date() # prep director for no change filing_data = copy.deepcopy(COD_FILING_TWO_ADDRESSES) # setup business = create_business(identifier) business.save() directors = PartyRole.get_active_directors(business.id, end_date) assert len(directors) == 0 # create filing business_id = business.id filing_data['filing']['changeOfDirectors']['directors'][0]['actions'] = [ 'appointed' ] filing_data['filing']['changeOfDirectors']['directors'][1]['actions'] = [ 'appointed' ] filing_id = (create_filing(payment_id, filing_data, business_id)).id filing_msg = {'filing': {'id': filing_id}} # TEST await process_filing(filing_msg, app) business = Business.find_by_internal_id(business_id) directors = PartyRole.get_active_directors(business.id, end_date) has_mailing = list( filter(lambda x: x.party.mailing_address is not None, directors)) no_mailing = list( filter(lambda x: x.party.mailing_address is None, directors)) assert len(has_mailing) == 1 assert has_mailing[0].party.mailing_address.street == 'test mailing 1' assert no_mailing[0].party.mailing_address is None # Add/update mailing address to a director del filing_data['filing']['changeOfDirectors']['directors'][0] filing_data['filing']['changeOfDirectors']['directors'][0]['actions'] = [ 'addressChanged' ] mailing_address = { 'streetAddress': 'test mailing 2', 'streetAddressAdditional': 'test line 1', 'addressCity': 'testcity', 'addressCountry': 'Canada', 'addressRegion': 'BC', 'postalCode': 'T3S T3R', 'deliveryInstructions': 'director1' } filing_data['filing']['changeOfDirectors']['directors'][0][ 'mailingAddress'] = mailing_address payment_id = str(random.SystemRandom().getrandbits(0x58)) filing_id = (create_filing(payment_id, filing_data, business_id)).id filing_msg = {'filing': {'id': filing_id}} await process_filing(filing_msg, app) business = Business.find_by_internal_id(business_id) directors = PartyRole.get_active_directors(business.id, end_date) # Get modified data filing = Filing.find_by_id(filing_id) # check it out assert len( list(filter(lambda x: x.party.mailing_address is not None, directors))) == 2 assert filing.business_id == business_id assert filing.status == Filing.Status.COMPLETED.value
async def test_process_cod_filing(app, session): """Assert that an AR filling can be applied to the model correctly.""" # vars payment_id = str(random.SystemRandom().getrandbits(0x58)) identifier = 'CP1234567' business = create_business(identifier) end_date = datetime.datetime.utcnow().date() # prep director for no change filing_data = copy.deepcopy(COD_FILING) directors = filing_data['filing']['changeOfDirectors']['directors'] director_party1 = create_party(business.id, directors[0]) role1 = { 'roleType': 'director', 'appointmentDate': directors[0].get('appointmentDate'), 'cessationDate': directors[0].get('cessationDate') } director1 = create_role(party=director_party1, role_info=role1) # prep director for name change director_party2_dict = directors[1] director_party2_dict['officer']['firstName'] = director_party2_dict[ 'officer']['prevFirstName'] director_party2_dict['officer']['middleInitial'] = director_party2_dict[ 'officer']['prevMiddleInitial'] director_party2_dict['officer']['lastName'] = director_party2_dict[ 'officer']['prevLastName'] director_party2 = create_party(business.id, director_party2_dict) role2 = { 'roleType': 'director', 'appointmentDate': director_party2_dict.get('appointmentDate'), 'cessationDate': director_party2_dict.get('cessationDate') } director2 = create_role(party=director_party2, role_info=role2) # prep director for cease director_party3 = create_party(business.id, directors[2]) role3 = { 'roleType': 'director', 'appointmentDate': directors[3].get('appointmentDate'), 'cessationDate': directors[3].get('cessationDate') } director3 = create_role(party=director_party3, role_info=role3) # prep director for address change director_party4_dict = directors[3] director_party4_dict['deliveryAddress'][ 'streetAddress'] = 'should get changed' director_party4 = create_party(business.id, director_party4_dict) role4 = { 'roleType': 'director', 'appointmentDate': director_party4_dict.get('appointmentDate'), 'cessationDate': director_party4_dict.get('cessationDate') } director4 = create_role(party=director_party4, role_info=role4) # list of active/ceased directors in test filing ceased_directors, active_directors = active_ceased_lists(COD_FILING) # setup business.party_roles.append(director1) business.party_roles.append(director2) business.party_roles.append(director3) business.party_roles.append(director4) business.save() director_ceased_id = director3.id # check that adding the director during setup was successful directors = PartyRole.get_parties_by_role( business.id, PartyRole.RoleTypes.DIRECTOR.value) assert len(directors) == 4 # create filing business_id = business.id filing_id = (create_filing(payment_id, COD_FILING, business.id)).id filing_msg = {'filing': {'id': filing_id}} # TEST await process_filing(filing_msg, app) # Get modified data filing = Filing.find_by_id(filing_id) business = Business.find_by_internal_id(business_id) # check it out assert filing.transaction_id assert filing.business_id == business_id assert filing.status == Filing.Status.COMPLETED.value directors = PartyRole.get_active_directors(business.id, end_date) check_directors(business, directors, director_ceased_id, ceased_directors, active_directors)