From b7906f86e6dc06b2b1304e0b61f35f04458605c4 Mon Sep 17 00:00:00 2001 From: Thiago Alves Date: Wed, 20 Nov 2019 15:24:49 -0500 Subject: [PATCH] Added ability to update program st file --- webserver/webserver.py | 89 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 88 insertions(+), 1 deletion(-) diff --git a/webserver/webserver.py b/webserver/webserver.py index 0e40706..cf51f26 100644 --- a/webserver/webserver.py +++ b/webserver/webserver.py @@ -672,7 +672,7 @@ def reload_program(): return_str += "" return_str += "" return_str += "" - return_str += "

Reload programRemove program
" + return_str += "

Launch programUpdate programRemove program
" return_str += """ @@ -689,6 +689,93 @@ def reload_program(): return return_str +@app.route('/update-program', methods=['GET', 'POST']) +def update_program(): + if (flask_login.current_user.is_authenticated == False): + return flask.redirect(flask.url_for('login')) + else: + if (openplc_runtime.status() == "Compiling"): return draw_compiling_page() + prog_id = flask.request.args.get('id') + + return_str = pages.w3_style + pages.style + draw_top_div() + return_str += """ +
+
+
+
+ Dashboard

Dashboard

+ Programs

Programs

+ Modbus

Slave Devices

+ Monitoring

Monitoring

+ Hardware

Hardware

+ Users

Users

+ Settings

Settings

+ Logout

Logout

+
+
""" + return_str += draw_status() + return_str += """ +
+
+
+
+

Upload Program

+
+
+ + + + +
+
+
+
+ +""" + + + return return_str + + +@app.route('/update-program-action', methods=['GET', 'POST']) +def update_program_action(): + if (flask_login.current_user.is_authenticated == False): + return flask.redirect(flask.url_for('login')) + else: + if (openplc_runtime.status() == "Compiling"): return draw_compiling_page() + if ('file' not in flask.request.files): + return draw_blank_page() + "

Error

You need to select a file to be uploaded!

Use the back-arrow on your browser to return

" + prog_file = flask.request.files['file'] + if (prog_file.filename == ''): + return draw_blank_page() + "

Error

You need to select a file to be uploaded!

Use the back-arrow on your browser to return

" + prog_id = flask.request.form['prog_id'] + epoch_time = flask.request.form['epoch_time'] + + database = "openplc.db" + conn = create_connection(database) + if (conn != None): + try: + cur = conn.cursor() + cur.execute("SELECT * FROM Programs WHERE Prog_ID = ?", (int(prog_id),)) + row = cur.fetchone() + cur.close() + + filename = str(row[3]) + prog_file.save(os.path.join('st_files', filename)) + + #Redirect back to the compiling page + return '' + + except Error as e: + print("error connecting to the database" + str(e)) + return 'Error connecting to the database. Make sure that your openplc.db file is not corrupt.

Error: ' + str(e) + else: + return 'Error connecting to the database. Make sure that your openplc.db file is not corrupt.' + + @app.route('/remove-program', methods=['GET', 'POST']) def remove_program(): if (flask_login.current_user.is_authenticated == False):