| | from flask import Flask, render_template, request, jsonify |
| | from processor import DatasetCommandCenter |
| | import requests |
| | import threading |
| | import uuid |
| | import json |
| |
|
| |
|
| | app = Flask(__name__) |
| | jobs = {} |
| |
|
| | @app.route('/') |
| | def index(): |
| | return render_template('index.html') |
| |
|
| | @app.route('/analyze_metadata', methods=['POST']) |
| | def analyze_metadata(): |
| | data = request.json |
| | center = DatasetCommandCenter(token=data.get('token')) |
| | return jsonify(center.get_dataset_metadata(data.get('dataset_id'))) |
| |
|
| | @app.route('/get_splits', methods=['POST']) |
| | def get_splits(): |
| | data = request.json |
| | center = DatasetCommandCenter(token=data.get('token')) |
| | return jsonify(center.get_splits_for_config(data.get('dataset_id'), data.get('config'))) |
| |
|
| | @app.route('/inspect_rows', methods=['POST']) |
| | def inspect_rows(): |
| | data = request.json |
| | center = DatasetCommandCenter(token=data.get('token')) |
| | return jsonify(center.inspect_dataset( |
| | data.get('dataset_id'), data.get('config'), data.get('split') |
| | )) |
| |
|
| | @app.route('/preview', methods=['POST']) |
| | def preview(): |
| | data = request.json |
| | recipe = data.get('recipe', {}) |
| | |
| | |
| | print("="*60) |
| | print("PREVIEW REQUEST RECEIVED") |
| | print("="*60) |
| | print("Dataset:", data.get('dataset_id')) |
| | print("Config:", data.get('config')) |
| | print("Split:", data.get('split')) |
| | print("Recipe:") |
| | print(json.dumps(recipe, indent=2)) |
| | print("="*60) |
| | |
| | center = DatasetCommandCenter(token=data.get('token')) |
| | |
| | try: |
| | rows = center.preview_transform( |
| | data.get('dataset_id'), |
| | data.get('config'), |
| | data.get('split'), |
| | recipe |
| | ) |
| | |
| | print(f"Preview successful: {len(rows)} rows returned") |
| | return jsonify({"status": "success", "rows": rows}) |
| | |
| | except Exception as e: |
| | print(f"PREVIEW ERROR: {str(e)}") |
| | import traceback |
| | traceback.print_exc() |
| | return jsonify({"status": "error", "message": str(e)}) |
| |
|
| | @app.route('/execute', methods=['POST']) |
| | def execute(): |
| | data = request.json |
| | job_id = str(uuid.uuid4()) |
| | token = data.get('token') |
| | center = DatasetCommandCenter(token=token) |
| | |
| | args = ( |
| | data.get('dataset_id'), |
| | data.get('config'), |
| | data.get('split'), |
| | data.get('target_id'), |
| | data.get('recipe', {}), |
| | data.get('max_rows'), |
| | data.get('license') |
| | ) |
| | |
| | def task(): |
| | try: |
| | jobs[job_id] = {"status": "running"} |
| | res = center.process_and_push(*args) |
| | jobs[job_id] = {"status": "completed", "result": res} |
| | except Exception as e: |
| | jobs[job_id] = {"status": "failed", "error": str(e)} |
| | |
| | threading.Thread(target=task).start() |
| | return jsonify({"status": "started", "job_id": job_id}) |
| |
|
| | @app.route('/status/<job_id>', methods=['GET']) |
| | def status(job_id): |
| | return jsonify(jobs.get(job_id, {"status": "unknown"})) |
| |
|
| | if __name__ == '__main__': |
| | app.run(debug=True, port=7860, host="0.0.0.0") |