Ejemplo n.º 1
0
def factory_filing(business, data_dict, filing_date=FROZEN_DATETIME, filing_type=None):
    """Create a filing."""
    filing = Filing()
    filing.business_id = business.id
    filing.filing_date = filing_date
    filing.filing_json = data_dict
    filing._filing_type = filing_type
    filing.save()
    return filing
Ejemplo n.º 2
0
def load_historic_filings(corp_num: str, business: Business, legal_type: str):
    """Load historic filings for a business."""
    try:
        # get historic filings
        r = requests.get(
            f'{COLIN_API}/api/v1/businesses/{legal_type}/{corp_num}/filings/historic',
            timeout=TIMEOUT)
        if r.status_code != HTTPStatus.OK or not r.json():
            print(
                f'skipping history for {corp_num} historic filings not found')

        else:
            for historic_filing in r.json():
                uow = versioning_manager.unit_of_work(db.session)
                transaction = uow.create_transaction(db.session)
                filing = Filing()
                filing_date = historic_filing['filing']['header']['date']
                filing.filing_date = datetime.datetime.strptime(
                    filing_date, '%Y-%m-%d')
                filing.business_id = business.id
                filing.filing_json = historic_filing
                for colin_id in filing.filing_json['filing']['header'][
                        'colinIds']:
                    colin_event_id = ColinEventId()
                    colin_event_id.colin_event_id = colin_id
                    filing.colin_event_ids.append(colin_event_id)
                filing.transaction_id = transaction.id
                filing._filing_type = historic_filing['filing']['header'][
                    'name']
                filing.paper_only = True
                filing.effective_date = datetime.datetime.strptime(
                    historic_filing['filing']['header']['effectiveDate'],
                    '%Y-%m-%d')
                updater_user = User.find_by_username(UPDATER_USERNAME)
                filing.submitter_id = updater_user.id
                filing.source = Filing.Source.COLIN.value

                db.session.add(filing)

            # only commit after all historic filings were added successfully
            db.session.commit()
            LOADED_FILING_HISTORY.append(corp_num)

    except requests.exceptions.Timeout:
        print('rolling back partial changes...')
        db.session.rollback()
        FAILED_FILING_HISTORY.append(corp_num)
        print('colin_api request timed out getting historic filings.')
    except Exception as err:
        print('rolling back partial changes...')
        db.session.rollback()
        FAILED_FILING_HISTORY.append(corp_num)
        raise err
Ejemplo n.º 3
0
def factory_filing(business,
                   data_dict,
                   filing_date=FROZEN_DATETIME,
                   filing_type=None):
    """Create a filing."""
    filing = Filing()
    filing.business_id = business.id
    filing.filing_date = filing_date
    filing.filing_json = data_dict
    if filing_type:
        filing._filing_type = filing_type
    try:
        filing.save()
    except Exception as err:
        print(err)
    return filing
Ejemplo n.º 4
0
def create_filing(filing_type, colin_filing, colin_event_id, corp_num):
    """Create legal api filing using colin filing as base"""
    effective_date = colin_filing['filing']['business']['foundingDate']
    colin_filing['filing']['business']['identifier'] = corp_num
    filing = Filing(effective_date=effective_date, filing_json=colin_filing)
    filing._filing_type = filing_type
    filing.filing_date = effective_date
    colin_event = ColinEventId()
    colin_event.colin_event_id = colin_event_id
    filing.colin_event_ids.append(colin_event)

    # Override the state setting mechanism
    filing.skip_status_listener = True
    filing._status = 'PENDING'
    filing.source = Filing.Source.COLIN.value
    return filing
Ejemplo n.º 5
0
def load_corps(csv_filepath: str = 'corp_nums/corps_to_load.csv'):
    """Load corps in given csv file from oracle into postgres."""
    global ROWCOUNT
    with open(csv_filepath, 'r') as csvfile:
        reader = csv.DictReader(csvfile)
        with FLASK_APP.app_context():
            for row in reader:
                corp_num = row['CORP_NUM']
                print('loading: ', corp_num)
                added = False
                ROWCOUNT += 1
                try:
                    legal_type = Business.LegalTypes.COOP.value
                    if corp_num[:2] != Business.LegalTypes.COOP.value:
                        legal_type = Business.LegalTypes.BCOMP.value
                        corp_num = 'BC' + corp_num[-7:]
                    business = Business.find_by_identifier(corp_num)
                    if business:
                        added = True
                        print(
                            '-> business info already exists -- skipping corp load'
                        )
                    else:
                        try:
                            # get current company info
                            business_current_info = {}
                            for info_type in BUSINESS_MODEL_INFO_TYPES[
                                    legal_type]:
                                business_current_info[
                                    info_type] = get_oracle_info(
                                        corp_num=corp_num,
                                        legal_type=legal_type,
                                        info_type=info_type)
                                if business_current_info[info_type].get(
                                        'failed', False):
                                    raise Exception(
                                        f'could not load {info_type}')

                        except requests.exceptions.Timeout:
                            FAILED_CORPS.append(corp_num)
                            print(
                                'colin_api request timed out getting corporation details.'
                            )
                            continue

                        except Exception as err:
                            print(f'exception: {err}')
                            print(
                                f'skipping load for {corp_num}, exception occurred getting company info'
                            )
                            continue

                        uow = versioning_manager.unit_of_work(db.session)
                        transaction = uow.create_transaction(db.session)
                        try:
                            # add BC prefix to non coop identifiers
                            if legal_type != Business.LegalTypes.COOP.value:
                                business_current_info['business']['business']['identifier'] = 'BC' + \
                                    business_current_info['business']['business']['identifier']

                            # add company to postgres db
                            business = create_business(
                                business_current_info['business'])
                            add_business_offices(
                                business, business_current_info['office'])
                            add_business_directors(
                                business, business_current_info['parties'])
                            if legal_type == Business.LegalTypes.BCOMP.value:
                                add_business_shares(
                                    business,
                                    business_current_info['sharestructure'])
                                add_business_resolutions(
                                    business,
                                    business_current_info['resolutions'])
                                add_business_aliases(
                                    business, business_current_info['aliases'])
                            filing = Filing()
                            filing.filing_json = {
                                'filing': {
                                    'header': {
                                        'name': 'lear_epoch'
                                    },
                                    'business': business.json()
                                }
                            }
                            filing._filing_type = 'lear_epoch'
                            filing.source = Filing.Source.COLIN.value
                            filing.transaction_id = transaction.id
                            business.filings.append(filing)
                            business.save()
                            added = True
                            NEW_CORPS.append(corp_num)
                        except Exception as err:
                            print(err)
                            print(f'skipping {corp_num} missing info')
                            FAILED_CORPS.append(corp_num)

                    if added and history_needed(business=business):
                        load_historic_filings(corp_num=corp_num,
                                              business=business,
                                              legal_type=legal_type)
                    else:
                        print(
                            '-> historic filings not needed - skipping history load'
                        )
                except Exception as err:
                    print(err)
                    exit(-1)
Ejemplo n.º 6
0
                    transaction = uow.create_transaction(db.session)
                    try:
                        business = create_business(db, business_json)
                        add_business_addresses(business, offices_json)
                        add_business_directors(business, directors_json)
                        db.session.add(business)
                        filing = Filing()
                        # filing.filing_date = datetime.datetime.utcnow
                        filing.filing_json = {
                            'filing': {
                                'header': {
                                    'name': 'lear_epoch'
                                }
                            }
                        }
                        filing._filing_type = 'lear_epoch'
                        filing.transaction_id = transaction.id
                        db.session.add(filing)
                        db.session.commit()

                        # assign filing to business (now that business record has been comitted and id exists)
                        filing.business_id = business.id
                        db.session.add(filing)
                        db.session.commit()
                        added = True
                        NEW_COOPS.append(row["CORP_NUM"])
                    except Exception as err:
                        print(err)
                        print(f'skipping {row["CORP_NUM"]} missing info')
                        FAILED_COOPS.append(row['CORP_NUM'])
                else: