blob: 52e16abd7f98ee60894ad87866e2bc0b8ac75e7a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
#handle a POST request
from flask import Flask, render_template, request, url_for, jsonify
import subprocess
import os
import RPi.GPIO as GPIO
app = Flask(__name__)
UPLOAD_DESTINATION = "Uploads/ee4951W_pendulum_web/app/app/FileProcessing/Uploads"
SYSTEM_DESTINATION = "System/"
RESULTS_DESTINATION = "Uploads/ee4951W_pendulum_web/app/app/FileProcessing/Results"
INITIALIZE_SYSTEM = "initialize_system.py"
@app.route('/')
def home():
return "ANDI'S PIE"
@app.route('/tests/endpoint', methods=['POST'])
def my_test_endpoint():
# Receive post
input_json = request.get_json(force=True)
# Put file content into a file caled upload.py
filename=input_json['filename'].encode("ascii")
file_content=input_json['file_content'].encode("ascii")
filename=input_json['filename']
file_content=input_json['file_content']
upload = open(UPLOAD_DESTINATION + filename, "w+")
upload.write(file_content)
upload.close()
# Run python script
process = subprocess.Popen(["python3", UPLOAD_DESTINATION + filename])
try:
process.wait()
print("Program exited normally!\n")
except:
print("Exception occurred running program!\n")
process.terminate()
finally:
GPIO.cleanup()
# Get results file
results_filename = filename.split(".")[0]
results_filename = results_filename + "_results.csv"
with open(RESULTS_DESTINATION + results_filename, 'r') as results:
results_content = results.read()
results.close()
# Remove test file and results file now that were done with them
os.remove(UPLOAD_DESTINATION + filename)
os.remove(RESULTS_DESTINATION + results_filename)
# Return results file content
dictToReturn = {'results_filename':results_filename, 'results_content':results_content}
return jsonify(dictToReturn)
# This will run on system bootup.
if __name__ == '__main__':
os.chdir('/home/pi/pendulum')
# Initialize the system before accepting any files.
subprocess.call(["python3", SYSTEM_DESTINATION + INITIALIZE_SYSTEM])
# Run the web client to start receiving files.
app.run(host="192.168.1.10", port=8000)
|