Files
Alfredv2/alfred/app/services/alfred_developer_page.py

38 lines
1.3 KiB
Python

"""Admin-only review UI for staged Alfred Developer proposals.
No web endpoint can deploy, restart, execute code or run shell commands.
"""
from flask import Blueprint, jsonify, render_template, request
from services import admin_console
from services import alfred_developer_core as dev
def register_developer_page(app):
bp=Blueprint('alfred_developer_ui',__name__)
@bp.get('/maintenance')
def maintenance_page():
return render_template('alfred_maintenance.html')
@bp.get('/api/control/developer/tasks')
@admin_console._require_admin
def tasks():
return jsonify(ok=True, tasks=dev.list_tasks())
@bp.get('/api/control/developer/tasks/<pid>')
@admin_console._require_admin
def detail(pid):
try:return jsonify(ok=True, task=dev.task_detail(pid))
except (ValueError,OSError,RuntimeError) as e:return jsonify(error=str(e)),400
@bp.post('/api/control/developer/tasks/<pid>/decision')
@admin_console._require_admin
def decide(pid):
data=request.get_json(silent=True) or {}
try:
return jsonify(ok=True, result=dev.approve(pid,data.get('decision'),data.get('diff_sha256')))
except (ValueError,OSError,RuntimeError) as e:
return jsonify(error=str(e)),400
app.register_blueprint(bp)