Beispiel #1
0
def _get_obj(field, identifier, person_type):
    if person_type == 'pessoa-fisica':
        Socios = Dataset.objects.get(slug='socios-brasil')\
                                .get_table('socios')\
                                .get_model()
        return Socios.objects.filter(**{field: identifier}).first()
    elif person_type == 'pessoa-juridica':
        try:
            return get_company_by_document(numbers_only(identifier))
        except ObjectDoesNotExist:
            return None
Beispiel #2
0
def _get_obj(field, identifier, person_type):
    if person_type == "pessoa-fisica":
        Socios = get_table_model("socios-brasil", "socios")
        return Socios.objects.filter(**{field: identifier}).first()
    elif person_type == "pessoa-juridica":
        try:
            return get_company_by_document(numbers_only(identifier))
        except ValueError:
            raise ValidationError(
                _("Invalid value: %(value)s"), params={"value": identifier},
            )
        except ObjectDoesNotExist:
            return None
Beispiel #3
0
def _get_obj(field, identifier, person_type):
    if person_type == 'pessoa-fisica':
        Socios = Dataset.objects.get(slug='socios-brasil')\
                                .get_table('socios')\
                                .get_model()
        return Socios.objects.filter(**{field: identifier}).first()
    elif person_type == 'pessoa-juridica':
        try:
            return get_company_by_document(numbers_only(identifier))
        except ValueError:
            raise ValidationError(
                _('Invalid value: %(value)s'),
                params={'value': identifier},
            )
        except ObjectDoesNotExist:
            return None
def document_detail(request, document):
    Candidatos = get_table_model("eleicoes-brasil", "candidatos")
    Documents = get_table_model("documentos-brasil", "documents")
    Empresas = get_table_model("socios-brasil", "empresas")
    Holdings = get_table_model("socios-brasil", "holdings")
    Socios = get_table_model("socios-brasil", "socios")
    FiliadosPartidos = get_table_model("eleicoes-brasil", "filiados")
    GastosDeputados = get_table_model("gastos-deputados", "cota_parlamentar")
    GastosDiretos = get_table_model("gastos-diretos", "gastos")

    encrypted = False
    if len(document) not in (11, 14):  # encrypted
        try:
            encrypted_document = document.encode("ascii")
            document_bytes = cipher_suite.decrypt(encrypted_document)
            document = document_bytes.decode("ascii")
        except (UnicodeEncodeError, InvalidToken, UnicodeDecodeError):
            raise Http404
        else:
            encrypted = True
    document = document.replace(".", "").replace("-", "").replace("/",
                                                                  "").strip()
    document_size = len(document)
    is_company = document_size == 14
    is_person = document_size == 11

    branches = Documents.objects.none()
    branches_cnpjs = []

    if is_company:
        doc_prefix = document[:8]
        try:
            obj = get_company_by_document(document)
        except Documents.DoesNotExist:
            raise Http404
        # From here only HQs or companies without HQs
        if document != obj.document:
            if obj.document[:12].endswith("0001"):  # HQ
                return redirect_company(document, obj.document, warn=False)
            else:
                return redirect_company(document, obj.document, warn=True)

        branches = Documents.objects.filter(docroot=obj.docroot,
                                            document_type="CNPJ")
        branches_cnpjs = [branch.document for branch in branches]

    else:  # not a company
        doc_prefix = None
        obj = get_object_or_404(Documents, document=document)

    obj_dict = obj.__dict__
    partners_data = Socios.objects.none()
    companies_data = Socios.objects.none()
    applications_data = Candidatos.objects.none()
    filiations_data = FiliadosPartidos.objects.none()
    applications_fields = _get_fields(
        get_table("eleicoes-brasil", "candidatos"),
        remove=["cpf_candidato", "nome_candidato"],
    )
    companies_fields = _get_fields(get_table("socios-brasil", "socios"),
                                   remove=["cpf_cnpj_socio", "nome_socio"])
    camara_spending_fields = _get_fields(
        get_table("gastos-deputados", "cota_parlamentar"),
        remove=["txtcnpjcpf", "txtfornecedor"],
    )
    federal_spending_fields = _get_fields(
        get_table("gastos-diretos", "gastos"),
        remove=["codigo_favorecido", "nome_favorecido"],
    )
    partners_fields = _get_fields(get_table("socios-brasil", "socios"),
                                  remove=["cnpj", "razao_social"])
    filiations_fields = _get_fields(get_table("eleicoes-brasil", "filiados"),
                                    remove=[])
    branches_fields = _get_fields(
        get_table("documentos-brasil", "documents"),
        remove=["document_type", "sources", "text"],
    )

    if is_company:
        partners_data = Socios.objects.filter(
            cnpj__in=branches_cnpjs).order_by("nome_socio")
        company = Empresas.objects.filter(cnpj=obj.document).first()
        obj_dict["state"] = company.uf if company else ""
        companies_data = Holdings.objects.filter(
            cnpj_socia__in=branches_cnpjs).order_by("razao_social")
        companies_fields = _get_fields(get_table("socios-brasil", "holdings"),
                                       remove=["cnpj_socia"])

        # all appearances of 'obj.document'
        camara_spending_data = GastosDeputados.objects.filter(
            txtcnpjcpf__in=branches_cnpjs).order_by("-datemissao")
        federal_spending_data = GastosDiretos.objects.filter(
            codigo_favorecido__in=branches_cnpjs).order_by("-data_pagamento")
    elif is_person:
        companies_data = (Socios.objects.filter(
            nome_socio=unaccent(obj.name)).distinct(
                "cnpj", "razao_social").order_by("razao_social"))
        applications_data = Candidatos.objects.filter(
            cpf_candidato=obj.document)
        filiations_data = FiliadosPartidos.objects.filter(
            nome_do_filiado=unaccent(obj.name))

        # all appearances of 'obj.document'
        camara_spending_data = GastosDeputados.objects.filter(
            txtcnpjcpf=obj.document).order_by("-datemissao")
        federal_spending_data = GastosDiretos.objects.filter(
            codigo_favorecido=obj.document).order_by("-data_pagamento")

    original_document = request.GET.get("original_document", None)
    context = {
        "applications_data": applications_data,
        "applications_fields": applications_fields,
        "branches": branches,
        "branches_fields": branches_fields,
        "camara_spending_data": camara_spending_data,
        "camara_spending_fields": camara_spending_fields,
        "companies_data": companies_data,
        "companies_fields": companies_fields,
        "doc_prefix": doc_prefix,
        "encrypted": encrypted,
        "federal_spending_data": federal_spending_data,
        "federal_spending_fields": federal_spending_fields,
        "filiations_data": filiations_data,
        "filiations_fields": filiations_fields,
        "obj": obj_dict,
        "original_document": original_document,
        "partners_data": partners_data,
        "partners_fields": partners_fields,
    }
    return render(request, "specials/document-detail.html", context)
def document_detail(request, document):
    datasets = get_datasets()
    Candidatos = datasets['eleicoes-brasil']['candidatos'].get_model()
    Documents = datasets['documentos-brasil']['documents'].get_model()
    Empresas = datasets['socios-brasil']['empresas'].get_model()
    Holdings = datasets['socios-brasil']['holdings'].get_model()
    Socios = datasets['socios-brasil']['socios'].get_model()
    FiliadosPartidos = datasets['eleicoes-brasil']['filiados'].get_model()
    GastosDeputados = datasets['gastos-deputados'][
        'cota_parlamentar'].get_model()
    GastosDiretos = datasets['gastos-diretos']['gastos'].get_model()

    encrypted = False
    if len(document) not in (11, 14):  # encrypted
        try:
            encrypted_document = document.encode('ascii')
            document_bytes = cipher_suite.decrypt(encrypted_document)
            document = document_bytes.decode('ascii')
        except (UnicodeEncodeError, InvalidToken, UnicodeDecodeError):
            raise Http404
        else:
            encrypted = True
    document = document.replace('.', '').replace('-', '').replace('/',
                                                                  '').strip()
    document_size = len(document)
    is_company = document_size == 14
    is_person = document_size == 11

    branches = Documents.objects.none()
    branches_cnpjs = []

    if is_company:
        doc_prefix = document[:8]
        try:
            obj = get_company_by_document(document)
        except Documents.DoesNotExist:
            raise Http404
        # From here only HQs or companies without HQs
        if document != obj.document:
            if obj.document[:12].endswith('0001'):  # HQ
                return redirect_company(document, obj.document, warn=False)
            else:
                return redirect_company(document, obj.document, warn=True)

        branches = Documents.objects.filter(
            docroot=obj.docroot,
            document_type='CNPJ',
        )
        branches_cnpjs = [branch.document for branch in branches]

    else:  # not a company
        doc_prefix = None
        obj = get_object_or_404(Documents, document=document)

    obj_dict = obj.__dict__
    partners_data = Socios.objects.none()
    companies_data = Socios.objects.none()
    applications_data = Candidatos.objects.none()
    filiations_data = FiliadosPartidos.objects.none()
    applications_fields = _get_fields(
        datasets['eleicoes-brasil']['candidatos'],
        remove=['cpf_candidato', 'nome_candidato'])
    companies_fields = _get_fields(
        datasets['socios-brasil']['socios'],
        remove=['cpf_cnpj_socio', 'nome_socio'],
    )
    camara_spending_fields = _get_fields(
        datasets['gastos-deputados']['cota_parlamentar'],
        remove=['txtcnpjcpf', 'txtfornecedor'],
    )
    federal_spending_fields = _get_fields(
        datasets['gastos-diretos']['gastos'],
        remove=['codigo_favorecido', 'nome_favorecido'],
    )
    partners_fields = _get_fields(
        datasets['socios-brasil']['socios'],
        remove=['cnpj', 'razao_social'],
    )
    filiations_fields = _get_fields(
        datasets['eleicoes-brasil']['filiados'],
        remove=[],
    )
    branches_fields = _get_fields(
        datasets['documentos-brasil']['documents'],
        remove=['document_type', 'sources', 'text'],
    )

    if is_company:
        partners_data = \
            Socios.objects.filter(cnpj__in=branches_cnpjs)\
                          .order_by('nome_socio')
        company = Empresas.objects.filter(cnpj=obj.document).first()
        obj_dict['state'] = company.uf if company else ''
        companies_data = Holdings.objects.filter(cnpj_socia__in=branches_cnpjs)\
                                         .order_by('razao_social')
        companies_fields = _get_fields(
            datasets['socios-brasil']['holdings'],
            remove=['cnpj_socia'],
        )

        # all appearances of 'obj.document'
        camara_spending_data = \
            GastosDeputados.objects.filter(txtcnpjcpf__in=branches_cnpjs)\
                                   .order_by('-datemissao')
        federal_spending_data = \
            GastosDiretos.objects.filter(codigo_favorecido__in=branches_cnpjs)\
                                 .order_by('-data_pagamento')
    elif is_person:
        companies_data = \
            Socios.objects.filter(nome_socio=unaccent(obj.name))\
                          .distinct('cnpj', 'razao_social')\
                          .order_by('razao_social')
        applications_data = \
            Candidatos.objects.filter(cpf_candidato=obj.document)
        filiations_data = \
            FiliadosPartidos.objects.filter(nome_do_filiado=unaccent(obj.name))

        # all appearances of 'obj.document'
        camara_spending_data = \
            GastosDeputados.objects.filter(txtcnpjcpf=obj.document)\
                                   .order_by('-datemissao')
        federal_spending_data = \
            GastosDiretos.objects.filter(codigo_favorecido=obj.document)\
                                 .order_by('-data_pagamento')

    original_document = request.GET.get('original_document', None)
    context = {
        'applications_data': applications_data,
        'applications_fields': applications_fields,
        'branches': branches,
        'branches_fields': branches_fields,
        'camara_spending_data': camara_spending_data,
        'camara_spending_fields': camara_spending_fields,
        'companies_data': companies_data,
        'companies_fields': companies_fields,
        'doc_prefix': doc_prefix,
        'encrypted': encrypted,
        'federal_spending_data': federal_spending_data,
        'federal_spending_fields': federal_spending_fields,
        'filiations_data': filiations_data,
        'filiations_fields': filiations_fields,
        'obj': obj_dict,
        'original_document': original_document,
        'partners_data': partners_data,
        'partners_fields': partners_fields,
    }
    return render(request, 'specials/document-detail.html', context)