-
Notifications
You must be signed in to change notification settings - Fork 69
Integração com terceiros
A Câmara Municipal está trabalhando conosco para liberar os dados disponíveis no portal da transparência através de um webservice. Antes de acessá-lo, precisamos importar os dados históricos e então começar a consumir do serviço disponibilizado.
Fizemos um compromisso de acessar o webservice apenas uma vez por dia para evitar sobrecarga nos servidores do município.
A Câmara Municipal disponibilizou os dados de seu banco de dados através de arquivos CSV. Os seguintes comandos limpam as informações e salvam no nosso banco de dados:
./manage.py import citycouncil_expenses /home/maria/Dados/despesas.csv
./manage.py import citycouncil_contracts /home/maria/Dados/contratos.csv
./manage.py import citycouncil_bids /home/maria/dados/licitacoes.csv
./manage.py import citycouncil_revenues /home/maria/receitas.csv
./manage.py import citycouncil_contract_files /home/maria/arquivo-contratos.csv
./manage.py import citycouncil_bid_files /home/maria/arquivo-licitacoes.csv
Para apagar todos os dados de uma tabela antes da importação basta adicionar o parâmetro
--drop-all
ao comando.
Importante: os comandos relacionados a arquivo devem ser executados por último; dessa forma, poderão ser conectados aos seus respectivos objetos corretamente.
O endpoint é /webservice/
. Para comunicação, devemos enviar uma requisição GET
com data
(aaaa-mm-dd
) e token
como parâmetros. Exemplo:
requests.get(
'http://<HOST>/webservice/',
params={'data': '2020-05-05', 'token': 'token-secreto'},
headers={'User-Agent': 'Maria Quitéria'},
).json()
Exemplo de payload:
{
'inclusoesContrato': [],
'alteracoesContrato': [],
'exclusoesContrato': [],
'inclusoesLicitacao': [],
'alteracoesLicitacao': [{
'codLic': '214',
'codTipoLic': '7',
'numLic': '004/2020',
'numTipoLic': '004/2020',
'objetoLic': 'Contratação de pessoa jurídica do ramo de atividade pertinente para fornecimento, por demanda, de medalhas de condecorações para homenagens prestadas pela Câmara Municipal de Feira de Santana-BA, conforme condições, quantidades e especificações constantes no Edital e seus Anexos.',
'dtLic': '2020-03-26 09:00:00'
}],
'exclusoesLicitacao': [],
'inclusoesReceita': [],
'alteracoesReceita': [],
'exclusoesReceita': [],
'inclusoesDespesa': [],
'alteracoesDespesa': [],
'exclusoesDespesa': []
}
A sincronização pode ser executada através do comando:
python manage.py citycouncil_sync
O comando acima vai sempre pegar a data de ontem. Para passar uma data específica:
python manage.py citycouncil_sync --date 2020-10-05
- Método não suportado.
- A data informada é menor do que a data limite.
- Os parâmetros enviados são inválidos.
- Já existe uma requisição em andamento.