• Stars
    star
    162
  • Rank 232,284 (Top 5 %)
  • Language
    Jupyter Notebook
  • License
    GNU General Publi...
  • Created over 6 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A platform for profiling public figures in Brazilian politics

Travis CI Codecov Code Climate Apoia.se

Perfil Político

A platform for profiling candidates in Brazilian 2022 General Election, based entirely on open data.

Install

This project requires Docker and Docker Compose.

Settings

To run the API, you must copy the .env.sample to a .env file. You can edit it accordingly if you want run in a production env.

Creating the container

You need to create the docker container:

$ docker-compose up -d

Note: You can use docker compose instead of docker-compose in this project.

Database initial setup

You should create your database by applying migrations:

$ docker-compose run --rm django ./manage.py migrate

Running

To run the project locally, you can simply use this command:

$ docker-compose up

The website and API will be available at localhost:8000 and the Jupyter at localhost:8888.

Bringing data into your database

Your local data/ directory is mapped, inside the container, to /mnt/data. Each command uses a CSV (compressed as .xz or not) from a public and available source. Use --help for more info. Yet some extra data can be generated with some Django custom commands.

Once you have download the datasets to data/, you can create your own database from scratch running:

$ docker-compose run --rm django ./manage.py load_affiliations /mnt/data/filiacao.csv
$ docker-compose run --rm django ./manage.py load_candidates /mnt/data/candidatura.csv
$ docker-compose run --rm django ./manage.py link_affiliations_and_candidates
$ docker-compose run --rm django ./manage.py link_politicians_and_election_results
$ docker-compose run --rm django ./manage.py load_assets /mnt/data/bemdeclarado.csv
$ docker-compose run --rm django ./manage.py pre_calculate_stats
$ docker-compose run --rm django ./manage.py load_bills /mnt/data/senado.csv
$ docker-compose run --rm django ./manage.py load_bills /mnt/data/camara.csv
$ docker-compose run --rm django ./manage.py load_income_statements /mnt/data/receita.csv
# make sure to read the instructions on populate_company_info.sql before running the next command
$ docker-compose run --rm postgres psql -U perfilpolitico < populate_company_info.sql

⚠️ Note that it will change the primary keys for all candidates in the database! So be careful on running it for production environment because some endpoints as /api/candidate/<pk>/ depends on this primary key to retrieve the correct data.

Or you can update the data from your database using the commands:

$ docker-compose run --rm django ./manage.py unlink_and_delete_politician_references
$ docker-compose run --rm django ./manage.py load_affiliations /mnt/data/filiacao.csv clean-previous-data
$ docker-compose run --rm django ./manage.py update_or_create_candidates /mnt/data/candidatura.csv
$ docker-compose run --rm django ./manage.py link_affiliations_and_candidates
$ docker-compose run --rm django ./manage.py link_politicians_and_election_results
$ docker-compose run --rm django ./manage.py load_assets /mnt/data/bemdeclarado.csv clean-previous-data
$ docker-compose run --rm django ./manage.py pre_calculate_stats
$ docker-compose run --rm django ./manage.py load_bills /mnt/data/senado.csv clean-previous-data
$ docker-compose run --rm django ./manage.py load_bills /mnt/data/camara.csv

Note: The code only updates data coming from the csv's to the database. It does not consider the possibility of changing data that is already in the database but does not appear in the csv for some reason (in this case the data in the database is kept untouched). Commands passing the clean-previous-data-option will replace all the data for the respective csv, thus changing all primary keys.

API

GET /api/candidate/<year>/<state>/<post>/

List all candidates from a certain state to a given post. For example:

/api/candidate/2018/df/deputado-distrital/

Post options for 2018 are:

  • 1o-suplente
  • 2o-suplente
  • deputado-distrital
  • deputado-estadual
  • deputado-federal
  • governador
  • presidente
  • senador
  • vice-governador
  • vice-presidente

State options are the abbreviation of the 27 Brazilian states, plus br for national election posts.

GET /api/candidate/<pk>/

Returns the details of a given candidate.

GET /api/economic-bonds/candidate/<pk>/

Get electoral income history for a given candidate and companies that have a partnership.

Returns an object with the structure:

{
  "companies_associated_with_politician": [
    {
      "cnpj": string,
      "company_name": string,
      "main_cnae": string,
      "secondary_cnaes": string (cnaes separated by ','),
      "uf": string,
      "foundation_date": string (date format 'YYYY/MM/DD'),
      "participation_start_date": string (date format 'YYYY/MM/DD')
    }
    // ... other companies in the same format as above ...
  ],
  "election_income_history": [
    {
      "year": int,
      "value": float,
      "donor_name": string,
      "donor_taxpayer_id": string
      "donor_company_name": string
      "donor_company_cnpj": string
      "donor_economic_sector_code": string,
      "donor_secondary_sector_codes": string
    },
    // ... other income statements in the same format as above ...
  ]
}

GET /api/stats/<year>/<post>/<characteristic>/

Get national statistics for a given characteristic in a elected post.

Post options are:

  • deputado-distrital
  • deputado-estadual
  • deputado-federal
  • governador
  • prefeito
  • presidente
  • senador
  • vereador

Characteristic options are:

  • age
  • education
  • ethnicity
  • gender
  • marital_status
  • occupation
  • party

GET /api/stats/<state>/<year>/<post>/<characteristic>/

Same as above but aggregated by state.

GET /api/asset-stats/

Returns an object with a key called mediana_patrimonios that is a list with the median of elected people's asset value aggregated by year.

optionally you can add query parameters to filter the results by state or by the candidate post (the valid posts are the same ones that are in the list above).

These parameters can support multiple values if you wish to filter by more than one thing.

Ex: /api/asset-stats?state=MG&state=RJ&candidate_post=governador&candidate_post=prefeito

Tests

$ docker-compose run --rm django py.test
$ docker-compose run --rm django black . --check

More Repositories

1

serenata-de-amor

🕵 Artificial Intelligence for social control of public administration | **This repository does not receive frequent updates. Check out the README**
Python
4,513
star
2

querido-diario

📰 Diários oficiais brasileiros acessíveis a todos | 📰 Brazilian government gazettes, accessible to everyone.
Python
1,102
star
3

rosie

🤖 Python application responsible for Serenata de Amor's intelligence
410
star
4

jarbas

🎩 API for information and suspicions about reimbursements by Brazilian congresspeople
296
star
5

serenata-toolbox

📦 pip module containing code shared across Serenata de Amor's projects | ** Este repositório não recebe atualizações frequentes **
Python
154
star
6

vitimas-da-intolerancia

Conheça as vítimas de ódio político
Python
101
star
7

serenata-website

**Este repositório não recebe atualizações frequentes**
SCSS
67
star
8

serenata-notebooks

Notebooks from Operação Serenata de Amor | ** Este repositório não recebe atualizações frequentes **
HTML
53
star
9

querido-diario-api

This is Querido Diário's API. It provides everything the frontend does and even more!
Python
49
star
10

embaixadoras

Site da rede de pessoas embaixadoras de inovação cívica da Open Knowledge Brasil e outros materiais de referência
HTML
46
star
11

whistleblower

🚨A Twitter bot for publicly reporting suspicions found by Rosie, Serenata de Amor's AI
46
star
12

censo-querido-diario

Este repositório não recebe atualizações | Queremos descobrir onde os diários oficiais das prefeituras de todo o Brasil estão sendo publicados. Nos ajude nesse trabalho!
HTML
43
star
13

querido-diario-frontend

Repositório com a implementação do frontend da Plataforma de Busca do Querido Diário
HTML
41
star
14

pedidosanonimos

Python
39
star
15

perfil-politico-frontend

Front-end that consumes Perfil Político's API
Vue
31
star
16

querido-diario-toolbox

Este projeto empodera quem deseja processar dados no contexto do Querido Diário e realizar suas próprias análises.
Python
31
star
17

querido-diario-comunidade

Querido Diário - Comunidade e Documentação
25
star
18

querido-diario-data-processing

Text processing repository to free brazilian municipal gazettes from closed file formats for the Querido Diário project.
Python
20
star
19

transparenciacovid19

TRANSPARÊNCIA COVID-19
HTML
19
star
20

cicero

Quosque tandem abutere patientia nostra?
Python
16
star
21

busca-querido-diario

Project to enable search of key words in text files extracted by the Querido Diário.
Python
14
star
22

identidade-digital

Manifesto para identificação digital no Brasil
12
star
23

orcamento.inesc.org.br

Visualização dos dados do orçamento federal feita para a INESC
HTML
11
star
24

querido-diario-api-wrapper

Wrapper for Querido Diário API
Python
10
star
25

gastos_abertos

Código principal do projeto Gastos Abertos.
Python
9
star
26

schemaOrg-Wikidata-Map

Ontology alignment between Schema.Org, Wikidata, and DBpedia
9
star
27

open-jus

Justa is a project that aims to facilitate the understanding of financing data and the management the Justice System in an accessible and innovative way.
Python
9
star
28

lexml-dou

Subsídios para a cooperação iniciada entre Imprensa Nacional e LexML
HTML
8
star
29

receita

Rotinas de atualização das bases públicas de dados de CNPJs e sócios da Receita Federal do Brasil.
Python
7
star
30

serenata-relatorio-catarse

Relatório da Rosie sobre candidatos nas Eleições 2018
Elm
7
star
31

reactive_scraper

JavaScript
6
star
32

cuidando2

Cuidando do Meu Bairro 2.0 é uma reescrita do projeto Cuidando do Meu Bairro ( cuidando.org.br ) que busca mapear a execução do orçamento municipal de São Paulo.
HTML
6
star
33

filiados-a-partidos

Dump com a lista do TSE de filiados a partidos no Brasil
Python
5
star
34

datasets-br-cbo

Dataset for CBO - Classificação Brasileira de Ocupações
5
star
35

mosaico

Visualization on the brazilian budget for FGV
CSS
5
star
36

BusaoSP

WhereIsMyBus aka real-time bus updates via Twitter, for São Paulo.
JavaScript
5
star
37

swagger-ui-html

Pure-HTML swagger-ui page, for OpenAPI descriptors of the Open Knowledge Brasil's projects
HTML
5
star
38

querido-diario-backend

Repositório com a implementação do backend da Plataforma de Busca do Querido Diário
Python
5
star
39

opendataday2020

Repositório das atividades realizadas no Open Data Day 2020 - São Paulo
4
star
40

getlex

Ver também http://okfn-brasil.github.io/getlex
PHP
3
star
41

querido-diario-infra

Querido diário deploy scripts
HCL
3
star
42

embaixadoras-dados-covid19

Repositório para reunir as análises de dados da Covid-19 feitas pela rede de pessoas Embaixadoras de Inovação Cívica
R
3
star
43

ISSN-L-Resolver

Converts any ISSN to the correspondent ISSN-L
PLpgSQL
3
star
44

gastos_abertos_dados

Repositório dos dados em estado bruto utilizados no projeto Gastos Abertos
Jupyter Notebook
3
star
45

querido-diario-site

*PROJETO ARQUIVADO* Official landing page of the Querido Diário project
CSS
3
star
46

piloto-educacao

Projeto piloto para monitorar as aquisições de tecnologia para educação básica.
Python
3
star
47

GetMyGist

Read, and write from gists ...
JavaScript
2
star
48

oficial-backups

backup de arquivos comuns da produção da OKBR
Perl
2
star
49

sprints-inovacao-civica

2
star
50

hackatona.vaimudar.org

Hackatona #VaiMudarNaCopa
CSS
2
star
51

gastos_abertos_website

CSS
2
star
52

dialogando

JavaScript
2
star
53

indice-dados-abertos

Vue
2
star
54

gastos_abertos_notebooks

Notebooks of data exploration for the project Gastos Abertos
HTML
1
star
55

perfil-politico-notebooks

** Este repositório não recebe atualizações frequentes **
1
star
56

country-geoinfo

Spatial relations between countries and between another geographical standards
1
star
57

esic

Cliente ruby para o e-SIC do governo federal brasileiro
Ruby
1
star
58

salarios-usp

1
star
59

gastos-abertos-documentos

1
star
60

mapeamento-de-sites

Repositório auxiliar para encontrar sites de prefeituras ou sites publicadores de diários oficiais
Python
1
star
61

observatorio-materiais

Organização de materiais referentes ao Observatório de Tecnologias na Educação
1
star
62

serenata-de-amor-inbox

1
star
63

oficial-backupsbig

backup de big-files da produção da OKBR
1
star
64

diario-do-clima

Repositório para o frontend (interface web) do Diário do Clima.
JavaScript
1
star
65

GetMyGist-Server

GetMyGist-Server - Github Get token access
JavaScript
1
star
66

vaimudar_wp

PHP
1
star
67

diarios-do-clima-frontend

Repositório para o frontend (interface web) do Diários do Clima.
TypeScript
1
star
68

queremossaber-docker

Shell
1
star
69

copa2014_grupos_economicos

JavaScript
1
star
70

gastos_abertos_dev

Gastos Abertos Development Environment with Vagrant
Shell
1
star
71

regimento-interno

Código-fonte das versões desenvolvidas para Regimento Interno da OKBr e demais Termos de Uso e responsabilidade
1
star
72

orcamento-federal-dados

Dados para o orcamento.inesc.org.br
Shell
1
star
73

lexml-vocabulary

RDF vocabulary of LexML, revision and ontology-alignment with Wikidata and others
SQLPL
1
star