示例#1
0
文件: __init__.py 项目: rarmitag/lear
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
示例#2
0
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
示例#3
0
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)
示例#4
0
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}')
示例#6
0
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
示例#7
0
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)
示例#8
0
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
示例#9
0
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
示例#10
0
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