broadfield-dev commited on
Commit
08ea95c
·
verified ·
1 Parent(s): 810bb77

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -6
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')