Conforme explicado na apresentação, alguns pontos foram deixados para serem interpretados pelo candidado. Na minha interpretação, o sistema é voltado para trabalhadores do próprio Biopark, como ferramenta de gestão interna e como tal:
- Não há ferramenta para cadastro de usuários, sendo necessário inseri-los manualmente na base de dados.
- Idealmente, o sistema seria usado em uma rede interna ou VPN, mas a opção de utilizar certificados digitais é oferecida.
- Um endpoint para atualização de informações sobre apartamentos é fornecido. Por meio dele, é possível registrar que um apartamento que estava vago agora está ocupado, isto é, alugar o apartamento.
Para executar o app.py
são necessárias as seguintes dependências:
pip install flask
pip install mysql.connector
pip install mysql-connector-python
Também são necessárias as bibliotecas: logging
, random
e json
, mas essas são nativas do Python, então não deve haver problemas.
A base de dados utilizada foi o MySQL por questões de familiaridade. Para correta execução do sistema, você precisa de um usuário e uma base de dados. Os nomes podem variar, já que são definidos no arquivo config.py, utilize os comandos abaixo para criar uma base dados chamada biopark
acessível a um usuário sistema_remoto
a partir de seu_endereço_IP
:
joao@Ubuntu:~/Desktop$ sudo mysql
mysql> CREATE USER sistema_remoto@seu_endereco_IP identified by 'senha';
Query OK, 0 rows affected (0,10 sec)
mysql> create DATABASE biopark;
Query OK, 1 row affected (0,06 sec)
mysql> grant all privileges on biopark.* to sistema_remoto@seu_endereco_IP;
mysql> flush privileges;
Query OK, 0 rows affected (0,08 sec)
Agora, acesse a base de dados com o usuário sistema_remoto e crie as bases de dados necessárias:
joao@Ubuntu:~/Desktop$ mysql -u sistema -p
Enter password:
mysql> use biopark;
Database changed
mysql> create table edificios (id_edificio int not null auto_increment, nome_edificio char(255), endereco char(255), primary key (id_edificio));
mysql> create table apartamentos (id_apartamento int not null auto_increment, id_edificio int, nome_apartamento char(255), nome_locatario char(255), preco int, primary key (id_apartamento));
mysql> create table users (user_id int not null auto_increment, user_name char(255), password char(255), primary key (user_id));
mysql>commit;
mysql> insert into users (user_name, password) values (joao, senha);
mysql>commit;
Nota: Os nomes acima podem variar, mas lembre-se de editar o arquivo config.py de acordo, sendo inteiramente possível utilizar o MySQL na mesma máquina que o app.py
Um exemplo de arquivo de configuração está disponível aqui. É necessário que o arquivo contenha TODAS as variáveis descritas.
As variáveis chave_privada
e certificado
, em específico devem conter o caminho para, respectivamente, uma chave privada e um certificado correspondente. Nesse diretório, você pode encontrar um par de chave privada e certificado auto-assinado. Caso você não deseje utilizar HTTPS, basta salvar ambas as variáveis como "False", conforme o exemplo.
Para iniciar o sistema, basta utilizar:
python3 app.py
Uma vez iniciada, acesso o par endereço porta que você salvou (ex: "http://localhost:5000/"). Se você estiver utilizando HTTPS, mas não estiver usando a porta padrão, não esqueça de adicionar o https://
no início do endereço, já que seu browser não vai identificar automaticamente.
Uma vez acessada a página, se você estiver usando um certificado auto-assinado, é provável que veja a seguinte tela:
Isso acontece pois um certificado auto-assinado não vai estar na lista de certificados confiáveis do seu browser, basta clicar em "Avançado" e seguir para a página.
A primeira página que você vai ver é a página de login:
Se você executou o insert da seção "Base de Dados", basta clicar em "submit" e você será transferido para a tela "boa vindas" ou welcome:
Clicando no botão da esquerda, você acessará a tela de cadastro:
Clicando no botão da direita, você acessará a tela para pesquisa. Basta escolher um campo desejado e escrever um termo procurado (ex: selecionar a opção "vago" vai retornar todos os apartamentos vagos). Não selecionar nada retornará uma tabela com todos os apartamentos:
Se você deseja atualizar quaisquer informação sobre um determinado apartamento, incluindo se está alugado ou não, basta clicar em "Atualizar" e você será transferido para a página abaixo:
Atualize os campos conforme necessidade e clique em salvar.