def validate_item(item, validate_issue_names=False):
    if not item.get('cusip'):
        return {'is_valid' : False, 'reason' : 'No CUSIP #'}

    cusips = item['cusip'].split(MULTI_VALUE_DELIMITTER)
    for cusip in cusips:
        result = validate_cusip(cusip)
        if not result['is_valid']:
            return result

    if validate_issue_names:
        if not item['issue_name']:
            return {'is_valid' : False, 'reason' : 'No issue name'}

        if len(item['issue_name']) > 200:
            return {'is_valid' : False, 'reason' : 'Issue name is suspiciously long'}

        issue_names = item['issue_name'].split(MULTI_VALUE_DELIMITTER)
        cusips = item['cusip'].split(MULTI_VALUE_DELIMITTER)
        if len(cusips) > len(issue_names):
            return {'is_valid' : False, 'reason' : "Insufficient issue names for given CUSIP #'s"}

    # Validate the address. This would be a good place to add a call to an address validation library, if
    # we had one. The cleaning should have taken care of most address parsing problems.
    # For now, just reject really long addresses.

    if item.get('address') and len(item['address']) > 150:
        return {'is_valid' : False, 'reason' : 'Invalid address!'}

    return {'is_valid' : True}
예제 #2
0
def validate_item(item, validate_issue_names=False):
    if not item.get('cusip'):
        return {'is_valid': False, 'reason': 'No CUSIP #'}

    cusips = item['cusip'].split(MULTI_VALUE_DELIMITTER)
    for cusip in cusips:
        result = validate_cusip(cusip)
        if not result['is_valid']:
            return result

    if validate_issue_names:
        if not item['issue_name']:
            return {'is_valid': False, 'reason': 'No issue name'}

        if len(item['issue_name']) > 200:
            return {
                'is_valid': False,
                'reason': 'Issue name is suspiciously long'
            }

        issue_names = item['issue_name'].split(MULTI_VALUE_DELIMITTER)
        cusips = item['cusip'].split(MULTI_VALUE_DELIMITTER)
        if len(cusips) > len(issue_names):
            return {
                'is_valid': False,
                'reason': "Insufficient issue names for given CUSIP #'s"
            }

    # Validate the address. This would be a good place to add a call to an address validation library, if
    # we had one. The cleaning should have taken care of most address parsing problems.
    # For now, just reject really long addresses.

    if item.get('address') and len(item['address']) > 150:
        return {'is_valid': False, 'reason': 'Invalid address!'}

    return {'is_valid': True}
 def test_check_valid_cusip(self):
     self.assertTrue(validate_cusip("19421R200")['is_valid'])
 def test_check_invalid_cusip(self):
     self.assertFalse(validate_cusip("NUMBER FOR")['is_valid'])
 def test_check_ensco_cusip_is_invalid(self):
     self.assertFalse(validate_cusip("26874Q109"))['is_valid']