def put(self, _id):
        equipamento = equipamento_service.listar_equipamento_by_id(_id)
        if equipamento is None:
            return make_response(jsonify("Equipamento não encontrada..."), 400)

        body = request.get_json()
        erro_equipamento = equipamento_schema\
            .EquipamentoSchema().validate(body)
        if erro_equipamento:
            return make_response(jsonify(erro_equipamento), 400)

        updated_body = json.loads(
            equipamento_service.deserealize_equipamento(body).to_json())
        old_body = json.loads(
            equipamento_service.listar_equipamento_by_id(_id).to_json())
        log_service.registerLog("equipamento",
                                old_body,
                                updated_body,
                                ignored_fields=["created_at", "updated_at"],
                                all_fields=False)

        equipamento_service.atualizar_equipamento(body, _id)
        equipamento_atualizado = equipamento_service \
            .listar_equipamento_by_id(_id)

        return Response(equipamento_atualizado.to_json(),
                        mimetype="application/json",
                        status=200)
def upsert_equipment(body):
    try:
        _id = body["_id"]
    except Exception:
        _id = False

    erro_equipamento = equipamento_schema.EquipamentoSchema().validate(body)
    if erro_equipamento:
        return False

    equipamento_existente = equipamento_service.consultar_numero_de_serie(
        body["numero_de_serie"])

    if not _id and equipamento_existente:
        return False

    if not _id:
        novo_equipamento_id = equipamento_service \
            .registar_equipamento_complete(body)
        return json.loads(novo_equipamento_id.to_json())

    try:
        del body["_id"]
    except KeyError:
        print("_id não está presente no body")

    equipamento_service.atualizar_equipamento(body, _id)
    return json.loads(
        equipamento_service.listar_equipamento_by_id(_id).to_json())
 def get(self, _id):
     equipamento = equipamento_service.listar_equipamento_by_id(_id)
     if equipamento is None:
         return make_response(jsonify("Equipamento não encontrada..."), 404)
     return Response(equipamento.to_json(),
                     mimetype="application/json",
                     status=200)
    def post(self):
        body = request.json

        try:
            _id = body["_id"]
        except Exception:
            _id = False

        erro_equipamento = equipamento_schema \
            .EquipamentoSchema() \
            .validate(body)
        if erro_equipamento:
            return make_response(jsonify(erro_equipamento), 400)

        equipamento_existente = equipamento_service.consultar_numero_de_serie(
            body["numero_de_serie"])

        if not _id and equipamento_existente:
            return make_response(
                jsonify({
                    "error": True,
                    "message": "Número de série já cadastrado",
                    "equipamento": dumps(equipamento_existente)
                }), 400)

        if not _id:
            novo_equipamento_id = equipamento_service \
                .registar_equipamento(body)
            resposta = json.dumps({"_id": novo_equipamento_id})
        else:

            updated_body = json.loads(
                equipamento_service.deserealize_equipamento(body).to_json())
            old_body = json.loads(
                equipamento_service.listar_equipamento_by_id(_id).to_json())
            log_service.registerLog(
                "equipamento",
                old_body,
                updated_body,
                ignored_fields=["created_at", "updated_at"],
                all_fields=False)

            try:
                del body["_id"]
            except KeyError:
                print("_id não está presente no body")

            equipamento_service.atualizar_equipamento(body, _id)
            resposta = json.dumps({"_id": _id})

        return Response(resposta, mimetype="application/json", status=200)
    def delete(self):
        body = request.args
        try:
            _id = body['_id']
        except Exception:
            return error_response('Identificador não encontrado')

        try:
            equipamento = equipamento_service.listar_equipamento_by_id(_id)
            if equipamento is None:
                return error_response("Equipamento não encontrado.")
        except Exception:
            return error_response("Não foi possível encontrar " +
                                  "equipamento com o ID enviado.")

        equipamento_service.deletar_equipamento(_id)
        Response(jsonify({"ok": True}),
                 mimetype="application/json",
                 status=204)
    def get(self):
        body = request.args
        try:
            _id = body['_id']
        except Exception:
            _id = False

        if not _id:
            equipamentos = equipamento_service.listar_equipamentos()
            return Response(equipamentos.to_json(),
                            mimetype="application/json",
                            status=200)

        try:
            equipamento = equipamento_service.listar_equipamento_by_id(_id)
            return Response(equipamento.to_json(),
                            mimetype="application/json",
                            status=200)
        except Exception:
            return error_response("Não foi possível encontrar" +
                                  "equipamento com o parâmetro enviado")
 def delete(self, _id):
     equipamento = equipamento_service.listar_equipamento_by_id(_id)
     if equipamento is None:
         return make_response(jsonify("Equipamento não encontrado..."), 400)
     equipamento_service.deletar_equipamento(_id)
     return make_response('', 204)