-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.py
101 lines (70 loc) · 3.19 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# coding: utf-8
# In[ ]:
import os
from flask import Flask, jsonify, request, session
from flask_cors import CORS
from flask_pymongo import PyMongo
from bson.objectid import ObjectId
from pymongo import MongoClient
client = MongoClient('mongodb+srv://gabriela:12345@clusterfuncionarios-t5r8m.mongodb.net/test?retryWrites=true&w=majority')
db = client.get_database('db_funcionarios')
app = Flask(__name__)
CORS(app)
@app.route("/challenge/funcionarios", methods=["GET"])
def lista_funcionarios():
_funcionarios = db.db_funcionarios
output = []
for f in _funcionarios.find():
output.append({"id": str(f["_id"]), "nome": f["nome"], "cargo": f["cargo"], "idade": f["idade"]})
return jsonify(output), 200
@app.route("/challenge/funcionarios/<string:id>", methods=["GET"])
def funcionario(id):
_funcionarios = db.db_funcionarios
f = _funcionarios.find_one({"_id": ObjectId(id)})
if f:
output = {"id": str(f["_id"]), "nome": f["nome"], "cargo": f["cargo"], "idade": f["idade"]}
return jsonify(output), 200
else:
return "Erro. Funcionario nao encontrado.", 404
@app.route("/challenge/funcionarios", methods=["POST"])
def criar_funcionario():
_funcionarios = db.db_funcionarios
novo_f = request.get_json()
f_db_id = _funcionarios.insert({"nome": novo_f["nome"], "cargo": novo_f["cargo"], "idade": novo_f["idade"]})
novo_funcionario = _funcionarios.find_one({"_id" : f_db_id})
if novo_funcionario:
output = {"id": str(novo_funcionario["_id"]), "nome": novo_funcionario["nome"], "cargo": novo_funcionario["cargo"], "idade": novo_funcionario["idade"]}
return jsonify(output), 201
else:
return "Erro ao adicionar funcionario.", 404
@app.route("/challenge/funcionarios", methods=["PUT"])
def alterar_funcionario():
_funcionarios = db.db_funcionarios
_id = request.args.get('id')
_idade = request.args.get('idade')
_cargo = request.args.get('cargo')
_nome = request.args.get('nome')
existent_f = _funcionarios.find_one({"_id": ObjectId(_id)})
if existent_f :
if _nome:
_funcionarios.find_one_and_update({"_id": ObjectId(_id)}, {'$set': {"nome": _nome}}, upsert=False)
if _cargo:
_funcionarios.find_one_and_update({"_id": ObjectId(_id)}, {'$set': {"cargo": _cargo}}, upsert=False)
if _idade:
_idade = int(_idade)
_funcionarios.find_one_and_update({"_id": ObjectId(_id)}, {'$set': {"idade": _idade}}, upsert=False)
final_f = _funcionarios.find_one({"_id": ObjectId(_id)})
if final_f:
output = {"id": str(final_f["_id"]), "nome": final_f["nome"], "cargo": final_f["cargo"], "idade": final_f["idade"]}
return jsonify(output), 201
return "Funcionario nao existe.", 404
@app.route("/challenge/funcionarios", methods=["DELETE"])
def deletar_funcionario():
_funcionarios = db.db_funcionarios
_id = request.args.get('id')
response = _funcionarios.delete_one({"_id": ObjectId(_id)})
if response.deleted_count == 1 :
return jsonify({"result": "Funcionario deletado com sucesso"}), 200
return "Funcionario nao pode ser removido.", 404
if __name__ == "__main__":
app.run()