brasil.io
brasil.io copied to clipboard
Permitir upload automático de planilhas dos estados para a Covid-19
Mensagem do @turicas:
Possibilidade de um robô adicionar uma planilha. Não precisa ter uma API necessariamente. Se você conseguir criar uma função em que passo login/senha (ou auth token) e dados da planilha (os mesmos que o usuário preencherá no form), essa função cria a entrada da planilha no sistema e devolve {"success": True/False, "errors": [...]}. Idealmente essa função não dependerá do Django do Brasil.IO, pois o robô que baixará os dados (alguns estados já tem o dado em CSV) estará num repositório separado.
A ideia é viabilizar isso por um endpoint de API específico para a importação automática de planilhas de covid-19. Para isso teríamos:
- um usuário django "bot-covid19" que faria parte de todos os grupos de importação de estado;
- um endpoint
/covid19/api/import-report/STATE/YYYY-MM-DD/
com login obrigatório; - Aceitaria uma planilha em CSV com os dados para aquele dia. Internamente, ele rodaria o mesmo processo que já temos rodando no admin, ou seja
a. preparia os dados para serem usados pelo form de validação usando o usuário da API como
user
; b. no caso de sucesso, usar a estratégia detransaction.on_commit
para disparar o processamento assíncrono da planilha; c. no caso de erro, retornar 400 + JSON com oform.errors
;
Ah, além do arquivo CSV, o endpoint também aceita outros dois campos no corpo da requisição:
- boletim_urls: campo obrigatório que espera uma lista de URLs;
- boletim_notes: campo de texto opicional;
@berinhard pode atribuir a mim?
Se alguém quiser ver o progresso ou ajudar, estou trabalhando aqui: https://github.com/ramiroluz/brasil.io/tree/ramiroluz/issue-213
Tem um problema, além de não estar passando no CI.
https://github.com/ramiroluz/brasil.io/blob/ramiroluz/issue-213/covid19/views.py#L341
Está dentro de uma função, self não está definido. Mas está passsando nos tests.