parlametria / leggo-backend

Backend da interface web do leggo
GNU Affero General Public License v3.0
8 stars 4 forks source link

Testar uso de autenticação do DJango #383

Closed ArthurJahn closed 2 years ago

ArthurJahn commented 2 years ago

Estudo dos scripts de limpeza e carregamento dos dados de proposições para possibilitar a implementação da autenticação de usuários.

andersonms1 commented 2 years ago

Remote/production tables update

leggo-geral

leggo-geral/arquitetura.md image

leggo-geral/update_leggo_data.sh image

leggo-backend/api/management/commands/update_db_remotely.py image

leggo-backend/api/management/commands/clear_tables.py image

migrate Default django command

leggo-backend/api/management/commands/import_insights_from_remote.py image

Outros scripts de interesse

No ambiente de produção as tabelas são carregadas a partir do CVS SERVER. Já no ambiente de homolagação podemos alimentar de forma local as tabelas atráves do comando update_data que utiliza o import_utils para auxiliar no carregamento e deleção de tabelas.

leggo-backend/api/management/commands/update_data.py image

leggo-backend/api/management/commands/import_utils.py image

image

ArthurJahn commented 2 years ago

@andersonms1 tem um comando do manage.py clear_tables que pode ter a ver com esse processo também. Acho que vale dar uma olhada

andersonms1 commented 2 years ago

Proposta para implementação de login

O Django possuí um 'despachador' capaz de executar uma ação caso um model seja criado por exemplo, assim ao criar uma tabela do tipo Proposição ou <AnyModel>Proposição o 'despachador' pode executar uma função que preenche um campo da tabela com a tabela de usuários interessados.

Untitled Diagram-Sequence drawio (1)

A função update_reference() então procura nas models de usuários interessados a atual Proposição e faz o update da referência.

Untitled Diagram-Page-1 drawio

Justificativa

A vantagem dessa implementação com o uso de signals é o desacoplamento de metodos já extensos, facilitando a manutenção.

ArthurJahn commented 2 years ago

@andersonms1 Acho que podemos testar essa solução na próxima sprint. Só vamos precisar ficar de olho nesses processos no futuro porque em algum momento as proposições vão parar de ser carregadas por meio de arquivos CSV e vão começar a ser cadastradas via painel, pelo usuário autenticado.

Acredito que o processo executado atualmente em produção, utiliza os mesmos scripts de homologação também.

Sobre o uso dos signals, acredito que essa alternativa vai ser boa pra essa primeira versão. Quando repensarmos o carregamento das proposições pra evitar que sejam recriadas no banco a gente repensa esse fluxo. O que acha?

andersonms1 commented 2 years ago

Entendido, dependendo no futuro a gente pode padronizar o login mesmo.

Acho que eu posso ter me expressado mal ali mesmo, os scripts para homologação e os scripts do make file são coisas diferentes e acho que referenciei como a mesma coisa.