brasil.io icon indicating copy to clipboard operation
brasil.io copied to clipboard

Permitir upload automático de planilhas dos estados para a Covid-19

Open berinhard opened this issue 4 years ago • 4 comments

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.

berinhard avatar Apr 11 '20 00:04 berinhard

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:

  1. um usuário django "bot-covid19" que faria parte de todos os grupos de importação de estado;
  2. um endpoint /covid19/api/import-report/STATE/YYYY-MM-DD/ com login obrigatório;
  3. 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 de transaction.on_commit para disparar o processamento assíncrono da planilha; c. no caso de erro, retornar 400 + JSON com o form.errors;

berinhard avatar May 04 '20 18:05 berinhard

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 avatar May 04 '20 18:05 berinhard

@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

ramiroluz avatar May 19 '20 23:05 ramiroluz

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.

ramiroluz avatar May 21 '20 20:05 ramiroluz