Exemple #1
0
    def parse(klass, row, carrier, areacode, phone_type):
        row = list(row)                                 # Make row mutable

        person = Person()
        person.name = normalize_text(row[2])

        address = Address()
        address.location = normalize_text(row[3])
        address.neighborhood = normalize_text(row[4])
        address.city = normalize_text(row[5])
        address.state = normalize_text(row[6])

        phone = Phone()
        phone.carrier = carrier
        phone.areacode = areacode
        phone.type = phone_type

        try:

            # document - try CPF
            person.document = validate_cpf(row[8][-11:])
            person.nature = Person.NATURE_CHOICES_PHYSICAL[0]

        except CPFValidationError:

            # document - try CNPJ
            person.document = validate_cnpj(row[8][-14:])
            person.nature = Person.NATURE_CHOICES_LEGAL[0]

        address.zipcode = validate_zipcode(row[7])

        phone.number = validate_phone_number(row[1])

        return klass(row, person, address, phone)
Exemple #2
0
    def get_or_instantiate_for_zipcode(zipcode, number, complement):
        
        

        with is_valid_brazilian_zipcode(zipcode) as code:
             if code.is_valid:
                hash = Address.make_hash(code.number, remove_spaces_and_similar(number), remove_spaces_and_similar(complement))
                
                instance = None
                number = remove_spaces_and_similar(number) or None
                complement = remove_spaces_and_similar(complement) or None

                try: 
                    instance = Address.objects.only('id').get(hash=hash)                    
                    return dict_to_struct({'instance': instance, 'exists': True })
                except Address.DoesNotExist:
                    try:
                        street = Street.objects.only('id').get(zipcode=code.number)
                        instance = Address(hash=hash, street=street, number=number, complement=complement, neighborhood=street.neighborhood, city=street.neighborhood.city, state=street.neighborhood.city.state, )
                        return dict_to_struct({'instance': instance, 'exists': False })
                    except Street.DoesNotExist:
                        raise ZipCodeNotFoundException(_(u'O CEP informado (%s) não existe na base de DNE' % zipcode))

        raise ZipCodeInvalidException(_(u'O CEP informado (%s) parece estar incorreto' % zipcode))