44 lines
1.5 KiB
Python
44 lines
1.5 KiB
Python
from flask import Blueprint, request, jsonify
|
|
from flask_jwt_extended import jwt_required
|
|
from flasgger.utils import swag_from
|
|
from models.service import Service
|
|
from models.service_roles import ServiceRole
|
|
from models.ambiente import Ambiente
|
|
from models.user import db
|
|
|
|
ambiente_bp = Blueprint('ambiente', __name__, url_prefix='/ambiente')
|
|
|
|
@ambiente_bp.route('/', methods=['POST'])
|
|
@jwt_required()
|
|
@swag_from('../docs/ambiente/create.yml')
|
|
def create_ambiente():
|
|
data = request.get_json()
|
|
service_id = data.get('service_id')
|
|
service_role_id = data.get('service_role_id')
|
|
name = data.get('name')
|
|
description = data.get('description')
|
|
|
|
# Verifica se o serviço existe
|
|
service = Service.query.get(service_id)
|
|
if not service:
|
|
return jsonify({'error': 'Serviço não encontrado'}), 404
|
|
|
|
# Verifica se o ambiente já existe com o mesmo nome.
|
|
existing_role = ServiceRole.query.filter_by(service_id=service_id, name=name).first()
|
|
if existing_role:
|
|
return jsonify({'error': 'Função de serviço já existe para este serviço'}), 400
|
|
|
|
# Cria um novo ServiceRole
|
|
ambiente = Ambiente(
|
|
service_id=service_id,
|
|
service_role_id = service_role_id,
|
|
name=name,
|
|
description=description
|
|
)
|
|
|
|
# Adiciona e comita no banco de dados
|
|
db.session.add(ambiente)
|
|
db.session.commit()
|
|
|
|
return jsonify({'message': 'ambiente criado com sucesso', 'ambiente_id': ambiente.id}), 201
|