98 lines
3.4 KiB
Python
98 lines
3.4 KiB
Python
from flask import Blueprint, request, jsonify
|
|
from flask_jwt_extended import jwt_required
|
|
from flasgger.utils import swag_from
|
|
from models.license import License, db
|
|
from models.user import User
|
|
from models.service import Service
|
|
from utils import logged_user_id
|
|
|
|
license_bp = Blueprint('license', __name__, url_prefix='/licenses')
|
|
|
|
# 1. Criar Licença
|
|
@license_bp.route('/', methods=['POST'])
|
|
@jwt_required()
|
|
@logged_user_id
|
|
@swag_from('../docs/licenses/create.yml') # Referência ao arquivo YAML de documentação
|
|
def create_license():
|
|
data = request.get_json()
|
|
user_id = logged_user_id
|
|
service_id = data.get('service_id')
|
|
license_key = data.get('license_key')
|
|
max_service_instances = data.get('max_service_instances')
|
|
start_date = data.get('start_date')
|
|
end_date = data.get('end_date')
|
|
|
|
user = User.query.get(user_id)
|
|
service = Service.query.get(service_id)
|
|
|
|
if not user or not service:
|
|
return jsonify({"msg": "Usuário ou Serviço não encontrado"}), 404
|
|
|
|
license = License(
|
|
user_id=user_id,
|
|
service_id=service_id,
|
|
license_key=license_key,
|
|
max_service_instances=max_service_instances,
|
|
start_date=start_date,
|
|
end_date=end_date
|
|
)
|
|
|
|
db.session.add(license)
|
|
db.session.commit()
|
|
|
|
return jsonify({"msg": "Licença criada com sucesso"}), 201
|
|
|
|
# 2. Obter Licenças por Usuário
|
|
@license_bp.route('/user/<int:user_id>', methods=['GET'])
|
|
@jwt_required()
|
|
@swag_from('../docs/licenses/get_by_user_id.yml') # Referência ao arquivo YAML de documentação
|
|
def get_licenses_by_user(user_id):
|
|
licenses = License.query.filter_by(user_id=user_id).all()
|
|
if not licenses:
|
|
return jsonify({"msg": "Licenças não encontradas para o usuário"}), 404
|
|
|
|
return jsonify([{
|
|
'id': license.id,
|
|
'service_id': license.service_id,
|
|
'license_key': license.license_key,
|
|
'max_service_instances': license.max_service_instances,
|
|
'start_date': license.start_date,
|
|
'end_date': license.end_date
|
|
} for license in licenses])
|
|
|
|
# 3. Atualizar Licença
|
|
@license_bp.route('/<int:license_id>', methods=['PUT'])
|
|
@jwt_required()
|
|
@swag_from('../docs/licenses/update.yml') # Referência ao arquivo YAML de documentação
|
|
def update_license(license_id):
|
|
data = request.get_json()
|
|
|
|
license = License.query.get(license_id)
|
|
if not license:
|
|
return jsonify({"msg": "Licença não encontrada"}), 404
|
|
|
|
license.user_id = data.get('user_id', license.user_id)
|
|
license.service_id = data.get('service_id', license.service_id)
|
|
license.license_key = data.get('license_key', license.license_key)
|
|
license.max_service_instances = data.get('max_service_instances', license.max_service_instances)
|
|
license.start_date = data.get('start_date', license.start_date)
|
|
license.end_date = data.get('end_date', license.end_date)
|
|
|
|
db.session.commit()
|
|
|
|
return jsonify({"msg": "Licença atualizada com sucesso"}), 200
|
|
|
|
# 4. Deletar Licença
|
|
@license_bp.route('/<int:license_id>', methods=['DELETE'])
|
|
@jwt_required()
|
|
@swag_from('../docs/licenses/delete.yml') # Referência ao arquivo YAML de documentação
|
|
def delete_license(license_id):
|
|
license = License.query.get(license_id)
|
|
if not license:
|
|
return jsonify({"msg": "Licença não encontrada"}), 404
|
|
|
|
db.session.delete(license)
|
|
db.session.commit()
|
|
|
|
return jsonify({"msg": "Licença deletada com sucesso"}), 200
|