85 lines
2.5 KiB
Python
85 lines
2.5 KiB
Python
from flask import Blueprint, request, jsonify
|
|
from flask_jwt_extended import jwt_required, get_jwt_identity
|
|
from models import Script
|
|
from database import db
|
|
|
|
scripts_bp = Blueprint('scripts', __name__)
|
|
|
|
@scripts_bp.route('', methods=['GET'])
|
|
@jwt_required()
|
|
def get_scripts():
|
|
scripts = Script.query.all()
|
|
result = []
|
|
|
|
for script in scripts:
|
|
result.append({
|
|
'id': script.id,
|
|
'name': script.name,
|
|
'type': script.type,
|
|
'content': script.content,
|
|
'description': script.description,
|
|
'createdBy': script.created_by,
|
|
'createdAt': script.created_at.strftime('%Y-%m-%d %H:%M:%S'),
|
|
'updatedAt': script.updated_at.strftime('%Y-%m-%d %H:%M:%S')
|
|
})
|
|
|
|
return jsonify(result)
|
|
|
|
@scripts_bp.route('', methods=['POST'])
|
|
@jwt_required()
|
|
def create_script():
|
|
user_id = get_jwt_identity()
|
|
data = request.get_json()
|
|
|
|
script = Script(
|
|
name=data['name'],
|
|
type=data['type'],
|
|
content=data['content'],
|
|
description=data.get('description', ''),
|
|
created_by=user_id
|
|
)
|
|
|
|
db.session.add(script)
|
|
db.session.commit()
|
|
|
|
return jsonify({'message': '脚本创建成功', 'id': script.id}), 201
|
|
|
|
@scripts_bp.route('/<int:script_id>', methods=['GET'])
|
|
@jwt_required()
|
|
def get_script(script_id):
|
|
script = Script.query.get_or_404(script_id)
|
|
|
|
return jsonify({
|
|
'id': script.id,
|
|
'name': script.name,
|
|
'type': script.type,
|
|
'content': script.content,
|
|
'description': script.description,
|
|
'createdBy': script.created_by,
|
|
'createdAt': script.created_at.strftime('%Y-%m-%d %H:%M:%S'),
|
|
'updatedAt': script.updated_at.strftime('%Y-%m-%d %H:%M:%S')
|
|
})
|
|
|
|
@scripts_bp.route('/<int:script_id>', methods=['PUT'])
|
|
@jwt_required()
|
|
def update_script(script_id):
|
|
script = Script.query.get_or_404(script_id)
|
|
data = request.get_json()
|
|
|
|
script.name = data.get('name', script.name)
|
|
script.type = data.get('type', script.type)
|
|
script.content = data.get('content', script.content)
|
|
script.description = data.get('description', script.description)
|
|
|
|
db.session.commit()
|
|
|
|
return jsonify({'message': '脚本更新成功'})
|
|
|
|
@scripts_bp.route('/<int:script_id>', methods=['DELETE'])
|
|
@jwt_required()
|
|
def delete_script(script_id):
|
|
script = Script.query.get_or_404(script_id)
|
|
db.session.delete(script)
|
|
db.session.commit()
|
|
|
|
return jsonify({'message': '脚本删除成功'}) |