Skip to content

ronaldomello/flask_web_application

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 

Repository files navigation

Aplicação Web: Sistema de Controle de Estoque - diAL

Aplicação web com CRUD desenvolvida com python, flask, sqlalchemy e mongodb:

  • Sistema de controle de estoque e gerenciamento de usuários da aplicação com controle de acesso e funcionalidades diferentes dependendo do nível do usuário.

O controle de acesso é verificado em toda chamada GET ou POST nas rotas para verificar se o usuário tem o nível preciso para realizar a operação, se o usuário está logado em uma sessão e se o usuário está tentando acessar a sessão de outra pessoa.

Todo o código está extensamente comentado, possui templates html com estilizações em css. Por preferência, os comentários do código foram feitos em inglês.

Índice

Features

Nível do Usuário Atualizar sua Própria Conta Visualizar os Produtos Adicionar um Produto Editar um Produto Deletar um Produto Visualizar os Usuários Adicionar um Usuário Editar um Usuário Deletar um Usuário
User

Admin

Novas contas criadas na aplicação terão o nível de usuário 'user' por padrão, a única maneira de elevar o nível para 'admin' é editando a conta do usuário pelo gerenciamento de usuários, funcionalidade que só é disponibilizada para usuários administradores.

  • Usuário comum padrão: login: user, senha: user.
  • Usuário administrador padrão: login: admin, senha: admin.

-> Retornar ao índice

Demonstração:

A demonstração geral foi limitada a duas funcionalidades, a visão do controle de inventário por um usuário comum, e a visão do administrador, incluindo o controle dos usuários da aplicação.

Visão geral usuário comum:

user_demo.mp4

Visão geral administrador:

admin_demo.mp4

Demonstrações Detalhadas:

Sign Up - Erros:

sign_up_errors.mp4

Log In - Erros:

log_in_errors.mp4

Sign Up e Log In - Sucesso:

sign_up_and_log_in_sucess.mp4

Update Account - Erros:

update_account_errors.mp4

Update Account - Sucesso:

update_account_sucess.mp4

Inventory Management:

  • User:
user_inventory.mp4
  • Admin:

    • Add - Erros:
    inventory_add_errors.mp4
    • Add - Sucesso:
    inventory_add.mp4
    • Edit - Erros:
    inventory_edit_errors.mp4
    • Edit - Sucesso:
    inventory_edit.mp4
    • Delete:
    inventory_delete.mp4

User Management:

  • Add - Erros:
admin_create_user_errors.mp4
  • Add - Sucesso:
admin_create_user.mp4
  • Edit - Erros:
admin_edit_account_errors.mp4
  • Edit - Sucesso:
admin_edit_account.mp4
  • Delete:
admin_delete_account.mp4

-> Retornar ao índice

Detalhamento:

Bancos de Dados:

Existem dois bancos de dados na aplicação, o primeiro é o SQLAlchemy (ORM) que comporta os usuários (todas as senhas são submetidas a uma criptografia md5 para serem armazenadas no banco) da aplicação e o segundo o MongoDB que comporta os produtos da aplicação. Cada banco possui sua classe de utilidades, referentes a select, insert, update e delete, sendo o SqlUtils referente ao SQLAlchemy e o MongoUtils referente ao MongoDB, para um detalhamento maior de suas funcionalidades, verificar os comentários no código.

Sign Up:

Funcionalidade para um usuário comum criar sua conta na aplicação, possui três tipos de travas diferentes:

    1. Login(username) já existente na aplicação. (Login e e-mail são unique constraints no banco) // Retorno: "Username already exists."
    1. E-mail já existente na aplicação. (Login e e-mail são unique constraints no banco) // Retorno: "E-mail already exists."
    1. As senhas inseridas não coincidem. (Senha e confirmação de senha) // Retorno: "Password don't match."

Log in:

Funcionalidade para um usuário logar na aplicação, possui dois tipos de travas diferentes:

    1. O login inserido não existe. // Retorno: "User not found."
    1. A senha inserida está incorreta. // Retorno: "Incorrect Password."

Log in:

Funcionalidade para um usuário deslogar da aplicação, (por padrão, a sessão dura no máximo 30m, após isso o usuário será deslogado automaticamente).

My Account:

Funcionalidade para um usuário visualizar informações sobre sua conta, retorna as seguintes informações:

    1. Login
    1. Name
    1. E-mail

Update my Account:

Funcionalidade para um usuário atualizar os dados da sua conta, permite modificar qualquer informação, mas necessita da senha atual para que a modificação seja feita. Possui quatro tipos de travas diferentes:

    1. Login(username) já existente na aplicação. (Login e e-mail são unique constraints no banco) // Retorno: "Username already exists."
    1. E-mail já existente na aplicação. (Login e e-mail são unique constraints no banco) // Retorno: "E-mail already exists."
    1. As senhas inseridas não coincidem. (Senha e confirmação de senha) // Retorno: "Password don't match."
    1. A senha inserida está incorreta. (Senha atual) // Retorno: "Incorrect Password."

Inventory Management:

Funcionalidade para um usuário visualizar os produtos e seus estoques respectivos, caso o usuário seja administrador ele terá acesso a criação, edição e deleção de produtos. A tela possui a funcionalidade de pesquisa por um produto, sendo de match parcial, funcionando como uma consulta 'LIKE', caso o produto não seja encontrado, será retornado a mensagem "Product not found".

Usuário Administrador:

Inventory Add:

Funcionalidade para um usuário admistrador adicionar um novo produto, o id do usuário será armazenado no registro do produto, possui apenas uma única trava, relacionada a unicidade do registro, constraint unique composta -> [nome do produto, código do produto, endereço do inventário]

    1. O produto já existe no inventário(nome, código, endereço do inventário). (unique constraint composta) // Retorno: "Product already exists in this stock."
Inventory Edit:

Funcionalidade para um usuário admistrador editar um produto, o id do usuário será atualizado para o id de quem está atualizando no registro do produto, possui apenas uma única trava, relacionada a unicidade do registro, constraint unique composta -> [nome do produto, código do produto, endereço do inventário]

    1. O produto já existe no inventário(nome, código, endereço do inventário). (unique constraint composta) // Retorno: "Product already exists in this stock."
Inventory Delete:

Funcionalidade para um usuário admistrador deletar um produto.

User Management:

Funcionalidade para um usuário administrador visualizar, criar, editar e deletar os usuários da aplicação. A tela possui a funcionalidade de pesquisa por um usuário, sendo de match parcial, funcionando como uma consulta 'LIKE', caso o usuário não seja encontrado, será retornado a mensagem "User not found".

User Add:

Funcionalidade para um usuário admistrador adicionar um novo usuário, possibilitando a escolha do nível do usuário, possui as mesmas travas que a criação de uma conta possuem:

    1. Login(username) já existente na aplicação. (Login e e-mail são unique constraints no banco) // Retorno: "Username already exists."
    1. E-mail já existente na aplicação. (Login e e-mail são unique constraints no banco) // Retorno: "E-mail already exists."
    1. As senhas inseridas não coincidem. (Senha e confirmação de senha) // Retorno: "Password don't match."
User Edit:

Funcionalidade para um usuário admistrador editar as informações de um usuário, possui as mesmas travas que a criação de uma conta possuem:

    1. Login(username) já existente na aplicação. (Login e e-mail são unique constraints no banco) // Retorno: "Username already exists."
    1. E-mail já existente na aplicação. (Login e e-mail são unique constraints no banco) // Retorno: "E-mail already exists."
    1. As senhas inseridas não coincidem. (Senha e confirmação de senha) // Retorno: "Password don't match."
User Delete:

Funcionalidade para um usuário admistrador deletar um usuário.

-> Retornar ao índice

Instalação:

Para rodar o código em sua máquina será necessário criar uma conta no site MongoDB Atlas, realize a conexão com seu cluster substituindo o código de conexão na linha 9 do arquivo 'mongodb.py' pelo seu.

-> Retornar ao índice

Arquivos:

dial_web_development_flask:

  • static -> arquivos css referentes aos templates html.
  • templates -> templates html.
  • app.py -> arquivo principal, adiciona todas as rotas ao app, executar para ligar o app.
  • config.py -> arquivo de configurações do servidor.
  • diAL_users.db -> banco de dados gerado pelo arquivo 'models.py', contém os usuários da aplicação.
  • models.py -> arquivo de criação do banco de dados, contém o modelo da tabela de usuários.
  • mongodb.py -> arquivo de instanciação e conexão com o MongoDB Atlas, também contém operações de utilidade (CRUD).
  • sql_utils.py -> arquivo de utilidade para manipular o banco de dados, contém operações de CRUD.
  • routes.py -> contém todas as rotas da aplicação com suas respectivas regras de negócio.

-> Retornar ao índice

Tecnologias Utilizadas:

Tecnologia Versão
Python 3.10.4
Flask 2.2.2
Flask-RESTful 0.3.9
pymongo 4.3.3
SQLAlchemy 1.4.42

-> Retornar ao índice

About

Aplicação web com CRUD desenvolvida com python, flask, sqlalchemy e mongodb: Sistema de controle de estoque e gerenciamento de usuários da aplicação com controle de acesso e funcionalidades diferentes dependendo do nível do usuário.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors