def _get_ar(cls, identifier: str = None, filing_event_info: dict = None): """Return annual report filing.""" # get directors and registered office as of this filing director_events = cls._get_events( identifier=identifier, filing_type_code=filing_event_info['filing_type_code']) office_events = cls._get_events( identifier=identifier, filing_type_code=filing_event_info['filing_type_code']) director_event_id = None office_event_id = None tmp_timestamp = datetime.datetime.fromtimestamp(0) for event in director_events: if filing_event_info['event_timestmp'] >= event[ 'date'] > tmp_timestamp: director_event_id = event['id'] tmp_timestamp = event['date'] tmp_timestamp = datetime.datetime.fromtimestamp(0) for event in office_events: if filing_event_info['event_timestmp'] >= event[ 'date'] > tmp_timestamp: office_event_id = event['id'] tmp_timestamp = event['date'] if director_event_id: try: directors = Director.get_by_event(identifier=identifier, event_id=director_event_id) except: # noqa B901; pylint: disable=bare-except; # should only get here if event was before the bob date directors = Director.get_current(identifier=identifier) else: directors = Director.get_current(identifier=identifier) directors = [x.as_dict() for x in directors] if office_event_id: try: reg_office = Office.get_by_event(event_id=office_event_id) except: # noqa B901; pylint: disable=bare-except; # should only get here if event was before the bob date reg_office = Office.get_current(identifier=identifier) else: reg_office = Office.get_current(identifier=identifier) reg_office = reg_office.as_dict() # convert dates and date-times to correct json format agm_date = convert_to_json_date(filing_event_info.get( 'agm_date', None)) ar_date = convert_to_json_date(filing_event_info['period_end_dt']) filing_obj = Filing() filing_obj.body = { 'annualGeneralMeetingDate': agm_date, 'annualReportDate': ar_date, 'directors': directors, 'eventId': filing_event_info['event_id'], **reg_office } filing_obj.filing_type = 'annualReport' return filing_obj
def get(identifier): """Return the current directors for a business.""" if not identifier: return jsonify({'message': 'Identifier required'}), 404 try: directors = Director.get_current(identifier) if not directors: return jsonify( {'message': f'directors for {identifier} not found'}), 404 if len(directors) < 3: current_app.logger.error( 'Less than 3 directors for {}'.format(identifier)) return jsonify({'directors': [x.as_dict() for x in directors]}) except GenericException as err: # pylint: disable=duplicate-code return jsonify({'message': err.error}), err.status_code except Exception as err: # pylint: disable=broad-except; want to catch all errors # general catch-all exception current_app.logger.error(err.with_traceback(None)) return jsonify({ 'message': 'Error when trying to retrieve directors from COLIN' }), 500
def _get_ar( cls, identifier: str = None, event_id: str = None, # pylint: disable=too-many-locals,too-many-branches; year: int = None): """Return annual report filing.""" if event_id: filing_event_info = cls._get_filing_event_info( identifier=identifier, event_id=event_id, filing_type_cd1='OTANN', year=year) else: filing_event_info = cls._get_filing_event_info( identifier=identifier, filing_type_cd1='OTANN', year=year) if not filing_event_info: raise FilingNotFoundException(identifier=identifier, filing_type='annualReport', event_id=event_id) # get directors and registered office as of this filing director_events = Director.get_events(identifier=identifier) office_events = Office.get_events(identifier=identifier) director_event_id = None office_event_id = None tmp_timestamp = datetime.datetime.fromtimestamp(0) for event in director_events: if filing_event_info['event_timestmp'] >= event[ 'date'] > tmp_timestamp: director_event_id = event['id'] tmp_timestamp = event['date'] tmp_timestamp = datetime.datetime.fromtimestamp(0) for event in office_events: if filing_event_info['event_timestmp'] >= event[ 'date'] > tmp_timestamp: office_event_id = event['id'] tmp_timestamp = event['date'] if director_event_id: try: directors = Director.get_by_event(identifier=identifier, event_id=director_event_id) except: # noqa B901; pylint: disable=bare-except; # should only get here if event was before the bob date directors = Director.get_current(identifier=identifier) else: directors = Director.get_current(identifier=identifier) directors = [x.as_dict() for x in directors] if office_event_id: try: reg_office = Office.get_by_event(event_id=office_event_id) except: # noqa B901; pylint: disable=bare-except; # should only get here if event was before the bob date reg_office = Office.get_current(identifier=identifier) else: reg_office = Office.get_current(identifier=identifier) reg_office = reg_office.as_dict() # convert dates and date-times to correct json format filing_event_info['event_timestmp'] = convert_to_json_date( filing_event_info['event_timestmp']) agm_date = convert_to_json_date(filing_event_info.get( 'agm_date', None)) ar_date = convert_to_json_date(filing_event_info['period_end_dt']) filing_obj = Filing() filing_obj.header = { 'date': filing_event_info['event_timestmp'], 'name': 'annualReport', 'certifiedBy': filing_event_info['certifiedBy'], 'email': filing_event_info['email'] } filing_obj.body = { 'annualGeneralMeetingDate': agm_date, 'annualReportDate': ar_date, 'directors': directors, 'eventId': filing_event_info['event_id'], **reg_office } filing_obj.filing_type = 'annualReport' filing_obj.event_id = filing_event_info['event_id'] # pylint: disable=attribute-defined-outside-init return filing_obj
def _get_ar(cls, cursor, identifier: str = None, filing_event_info: dict = None): """Return annual report filing.""" # get directors and registered office as of this filing director_events = cls._get_events(identifier=identifier, filing_type_code='OTCDR', cursor=cursor) office_events = cls._get_events(identifier=identifier, filing_type_code='OTADD', cursor=cursor) director_event_id = None office_event_id = None tmp_timestamp = datetime.datetime.fromtimestamp(0) for event in director_events: if filing_event_info['event_timestmp'] >= event[ 'date'] > tmp_timestamp: director_event_id = event['id'] tmp_timestamp = event['date'] tmp_timestamp = datetime.datetime.fromtimestamp(0) for event in office_events: if filing_event_info['event_timestmp'] >= event[ 'date'] > tmp_timestamp: office_event_id = event['id'] tmp_timestamp = event['date'] recreated_dirs_and_office = True if director_event_id: try: directors = Director.get_by_event(identifier=identifier, event_id=director_event_id, cursor=cursor) except: # noqa B901; pylint: disable=bare-except; # should only get here if agm was before the bob date recreated_dirs_and_office = False directors = Director.get_current(identifier=identifier, cursor=cursor) else: directors = Director.get_current(identifier=identifier, cursor=cursor) directors = [x.as_dict() for x in directors] if office_event_id: try: office_obj_list = (Office.get_by_event( event_id=office_event_id, cursor=cursor)).as_dict() offices = Office.convert_obj_list(office_obj_list) except: # noqa B901; pylint: disable=bare-except; # should only get here if agm was before the bob date recreated_dirs_and_office = False office_obj_list = Office.get_current(identifier=identifier, cursor=cursor) offices = Office.convert_obj_list(office_obj_list) else: office_obj_list = Office.get_current(identifier=identifier, cursor=cursor) offices = Office.convert_obj_list(office_obj_list) filing_obj = Filing() filing_obj.body = { 'annualGeneralMeetingDate': convert_to_json_date(filing_event_info.get('agm_date', None)), 'annualReportDate': convert_to_json_date(filing_event_info['period_end_dt']), 'directors': directors, 'eventId': filing_event_info['event_id'], 'offices': offices } filing_obj.filing_type = 'annualReport' filing_obj.paper_only = not recreated_dirs_and_office filing_obj.effective_date = filing_event_info['period_end_dt'] return filing_obj
def _get_ar(cls, identifier: str = None, filing_event_info: dict = None): """Return annual report filing.""" # get directors and registered office as of this filing director_events = cls._get_events(identifier=identifier, filing_type_code='OTCDR') office_events = cls._get_events(identifier=identifier, filing_type_code='OTADD') director_event_id = None office_event_id = None tmp_timestamp = datetime.datetime.fromtimestamp(0) for event in director_events: if filing_event_info['event_timestmp'] >= event[ 'date'] > tmp_timestamp: director_event_id = event['id'] tmp_timestamp = event['date'] tmp_timestamp = datetime.datetime.fromtimestamp(0) for event in office_events: if filing_event_info['event_timestmp'] >= event[ 'date'] > tmp_timestamp: office_event_id = event['id'] tmp_timestamp = event['date'] recreated_dirs_and_office = True if director_event_id: try: directors = Director.get_by_event(identifier=identifier, event_id=director_event_id) except: # noqa B901; pylint: disable=bare-except; # should only get here if agm was before the bob date recreated_dirs_and_office = False directors = Director.get_current(identifier=identifier) else: directors = Director.get_current(identifier=identifier) directors = [x.as_dict() for x in directors] if office_event_id: try: reg_office = Office.get_by_event(event_id=office_event_id) except: # noqa B901; pylint: disable=bare-except; # should only get here if agm was before the bob date recreated_dirs_and_office = False reg_office = Office.get_current(identifier=identifier) else: reg_office = Office.get_current(identifier=identifier) reg_office = reg_office.as_dict() # convert dates and date-times to correct json format agm_date = convert_to_json_date(filing_event_info.get( 'agm_date', None)) ar_date = convert_to_json_date(filing_event_info['period_end_dt']) # paper filings from colin don't enter in the agm_date and don't have no agm filings in the filings table if filing_event_info['user_id'] != 'COOPER' and not agm_date: agm_date = ar_date filing_obj = Filing() filing_obj.body = { 'annualGeneralMeetingDate': agm_date, 'annualReportDate': ar_date, 'directors': directors, 'eventId': filing_event_info['event_id'], **reg_office } filing_obj.filing_type = 'annualReport' filing_obj.paper_only = not recreated_dirs_and_office filing_obj.effective_date = filing_event_info['period_end_dt'] return filing_obj