aboutsummaryrefslogtreecommitdiffstats
path: root/PI.PI.old.py
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)