Feature Request
Description
Esta funcionalidade permitirá aos usuários se inscreverem para receber notificações sobre atualizações em tabelas específicas. Isso requer a criação da infraestrutura de backend para armazenar e gerenciar essas inscrições. Envolve duas partes principais:
- Modelagem de Dados: Criação de um modelo de banco de dados para armazenar a relação entre um usuário e uma tabela à qual ele está inscrito.
- API REST: Criação de um endpoint de API para permitir que o frontend crie e gerencie essas inscrições.
Use Case
Um usuário deseja ser notificado sempre que um conjunto de dados específico (tabela) em que ele confia para sua análise for atualizado. Ele poderia ir para a página da tabela e clicar em um botão "Assinar atualizações". Quando uma nova versão dos dados for publicada, ele receberá uma notificação, permitindo-lhe acessar imediatamente os dados mais recentes sem ter que verificar manualmente as atualizações.
Proposed Solution
1. Modelagem de Dados para Inscrições
- Crie um novo aplicativo Django chamado
notifications para encapsular toda a lógica relacionada.
- Dentro deste aplicativo, defina um novo modelo
TableUpdateSubscription em models.py.
- O modelo terá pelo menos duas ForeignKeys: uma para o modelo
User e outra para o modelo Table.
- Uma
UniqueConstraint será aplicada ao modelo para garantir que um usuário não possa se inscrever na mesma tabela mais de uma vez.
- Adicione o novo aplicativo
notifications a INSTALLED_APPS nas configurações do projeto.
- Execute
python manage.py makemigrations e python manage.py migrate para aplicar as alterações do esquema do banco de dados.
2. API REST para Gerenciamento de Inscrições
- Crie um novo endpoint de API REST (por exemplo,
/api/v1/table-subscriptions/) que responda a requisições POST para criar uma nova inscrição.
- Usando Django REST Framework, crie um
TableUpdateSubscriptionSerializer em um arquivo serializers.py dentro do aplicativo notifications. Este serializador validará os dados de entrada (por exemplo, table_id).
- Em
views.py, crie uma APIView para lidar com a requisição POST. A view irá:
- Usar o serializador para validar os dados da requisição.
- Associar o usuário atualmente autenticado (
request.user) à inscrição.
- Salvar a nova instância de
TableUpdateSubscription no banco de dados.
- Crie um arquivo
urls.py no aplicativo notifications para registrar a nova view e seu padrão de URL correspondente, e inclua-o no urls.py principal do projeto.
Feature Request
Description
Esta funcionalidade permitirá aos usuários se inscreverem para receber notificações sobre atualizações em tabelas específicas. Isso requer a criação da infraestrutura de backend para armazenar e gerenciar essas inscrições. Envolve duas partes principais:
Use Case
Um usuário deseja ser notificado sempre que um conjunto de dados específico (tabela) em que ele confia para sua análise for atualizado. Ele poderia ir para a página da tabela e clicar em um botão "Assinar atualizações". Quando uma nova versão dos dados for publicada, ele receberá uma notificação, permitindo-lhe acessar imediatamente os dados mais recentes sem ter que verificar manualmente as atualizações.
Proposed Solution
1. Modelagem de Dados para Inscrições
notificationspara encapsular toda a lógica relacionada.TableUpdateSubscriptionemmodels.py.Usere outra para o modeloTable.UniqueConstraintserá aplicada ao modelo para garantir que um usuário não possa se inscrever na mesma tabela mais de uma vez.notificationsaINSTALLED_APPSnas configurações do projeto.python manage.py makemigrationsepython manage.py migratepara aplicar as alterações do esquema do banco de dados.2. API REST para Gerenciamento de Inscrições
/api/v1/table-subscriptions/) que responda a requisiçõesPOSTpara criar uma nova inscrição.TableUpdateSubscriptionSerializerem um arquivoserializers.pydentro do aplicativonotifications. Este serializador validará os dados de entrada (por exemplo,table_id).views.py, crie umaAPIViewpara lidar com a requisiçãoPOST. A view irá:request.user) à inscrição.TableUpdateSubscriptionno banco de dados.urls.pyno aplicativonotificationspara registrar a nova view e seu padrão de URL correspondente, e inclua-o nourls.pyprincipal do projeto.