Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -1,7 +1,9 @@
|
|
1 |
# app.py
|
2 |
-
from flask import Flask, request, render_template
|
3 |
from parser import parse_python_code
|
4 |
import os
|
|
|
|
|
5 |
|
6 |
app = Flask(__name__)
|
7 |
|
@@ -17,7 +19,6 @@ def index():
|
|
17 |
filename = 'unnamed.py'
|
18 |
code_input = None
|
19 |
|
20 |
-
# Handle file upload
|
21 |
if 'file' in request.files and request.files['file'].filename:
|
22 |
file = request.files['file']
|
23 |
if not file.filename.endswith('.py'):
|
@@ -28,8 +29,6 @@ def index():
|
|
28 |
with open(file_path, 'r') as f:
|
29 |
code_input = f.read()
|
30 |
parts = parse_python_code(code_input)
|
31 |
-
|
32 |
-
# Handle pasted code
|
33 |
elif 'code' in request.form and request.form['code'].strip():
|
34 |
code_input = request.form['code']
|
35 |
filename = request.form.get('filename', 'unnamed.py') or 'unnamed.py'
|
@@ -40,7 +39,6 @@ def index():
|
|
40 |
if parts:
|
41 |
indexed_parts = [{'index': i + 1, **part} for i, part in enumerate(parts)]
|
42 |
reconstructed_code = reconstruct_code(indexed_parts)
|
43 |
-
# Return partial HTML for htmx to update the results section
|
44 |
return render_template(
|
45 |
'results_partial.html',
|
46 |
parts=indexed_parts,
|
@@ -50,9 +48,22 @@ def index():
|
|
50 |
)
|
51 |
return 'No file or code provided', 400
|
52 |
|
53 |
-
# Initial page load
|
54 |
return render_template('index.html', parts=None, filename=None, reconstructed_code=None, code_input=None)
|
55 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
if __name__ == '__main__':
|
57 |
if not os.path.exists('uploads'):
|
58 |
os.makedirs('uploads')
|
|
|
1 |
# app.py
|
2 |
+
from flask import Flask, request, render_template, jsonify, send_file
|
3 |
from parser import parse_python_code
|
4 |
import os
|
5 |
+
import json
|
6 |
+
import io
|
7 |
|
8 |
app = Flask(__name__)
|
9 |
|
|
|
19 |
filename = 'unnamed.py'
|
20 |
code_input = None
|
21 |
|
|
|
22 |
if 'file' in request.files and request.files['file'].filename:
|
23 |
file = request.files['file']
|
24 |
if not file.filename.endswith('.py'):
|
|
|
29 |
with open(file_path, 'r') as f:
|
30 |
code_input = f.read()
|
31 |
parts = parse_python_code(code_input)
|
|
|
|
|
32 |
elif 'code' in request.form and request.form['code'].strip():
|
33 |
code_input = request.form['code']
|
34 |
filename = request.form.get('filename', 'unnamed.py') or 'unnamed.py'
|
|
|
39 |
if parts:
|
40 |
indexed_parts = [{'index': i + 1, **part} for i, part in enumerate(parts)]
|
41 |
reconstructed_code = reconstruct_code(indexed_parts)
|
|
|
42 |
return render_template(
|
43 |
'results_partial.html',
|
44 |
parts=indexed_parts,
|
|
|
48 |
)
|
49 |
return 'No file or code provided', 400
|
50 |
|
|
|
51 |
return render_template('index.html', parts=None, filename=None, reconstructed_code=None, code_input=None)
|
52 |
|
53 |
+
@app.route('/export_json', methods=['POST'])
|
54 |
+
def export_json():
|
55 |
+
parts = request.json.get('parts', [])
|
56 |
+
export_data = [{'vector': part['vector'], 'source': part['source']} for part in parts]
|
57 |
+
json_str = json.dumps(export_data, indent=2)
|
58 |
+
buffer = io.BytesIO(json_str.encode('utf-8'))
|
59 |
+
buffer.seek(0)
|
60 |
+
return send_file(
|
61 |
+
buffer,
|
62 |
+
as_attachment=True,
|
63 |
+
download_name='code_vectors.json',
|
64 |
+
mimetype='application/json'
|
65 |
+
)
|
66 |
+
|
67 |
if __name__ == '__main__':
|
68 |
if not os.path.exists('uploads'):
|
69 |
os.makedirs('uploads')
|