Add Lesson 6 Task 2
This commit is contained in:
parent
ef62307e08
commit
1ea0c35f22
4 changed files with 103 additions and 0 deletions
1
Lesson_6/Task 2/.gitignore
vendored
Normal file
1
Lesson_6/Task 2/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
data.db
|
50
Lesson_6/Task 2/databaseWorker.py
Normal file
50
Lesson_6/Task 2/databaseWorker.py
Normal file
|
@ -0,0 +1,50 @@
|
|||
import sqlite3
|
||||
from sqlite3 import Error
|
||||
|
||||
def init_conn(path):
|
||||
conn = None
|
||||
try:
|
||||
conn = sqlite3.connect(path)
|
||||
print ("Connection established!")
|
||||
except Error as e:
|
||||
print (e)
|
||||
print ("Connection failed!")
|
||||
return conn
|
||||
|
||||
def init_tables(connection):
|
||||
sql = "CREATE TABLE IF NOT EXISTS hardware( id integer PRIMARY KEY, unit text NOT NULL, value text NOT NULL);"
|
||||
connection.execute(sql)
|
||||
|
||||
def prepareDb(name):
|
||||
conn = init_conn(name)
|
||||
init_tables(conn)
|
||||
conn.close()
|
||||
|
||||
def getData(name):
|
||||
connection = init_conn(name)
|
||||
sql = "SELECT * FROM hardware;"
|
||||
cursor = connection.cursor()
|
||||
cursor.execute(sql)
|
||||
rows = cursor.fetchall()
|
||||
connection.close()
|
||||
|
||||
return rows
|
||||
|
||||
def generateDataHTMLTable(rows):
|
||||
dataTable = "<table border='1'>"
|
||||
for row in rows:
|
||||
dataTable += "<tr>"
|
||||
for cell in row:
|
||||
dataTable += "<td>" + str(cell) + "</td>"
|
||||
dataTable += "</tr>"
|
||||
dataTable += "</table>"
|
||||
return dataTable
|
||||
|
||||
def sendData(db, unit, value):
|
||||
connection = init_conn(db)
|
||||
sql = "INSERT INTO hardware(`unit`, `value`) VALUES(?, ?);"
|
||||
args = (unit, value)
|
||||
cursor = connection.cursor()
|
||||
cursor.execute(sql, args)
|
||||
connection.commit()
|
||||
connection.close()
|
24
Lesson_6/Task 2/templates/index.html
Normal file
24
Lesson_6/Task 2/templates/index.html
Normal file
|
@ -0,0 +1,24 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Computer info</title>
|
||||
</head>
|
||||
<body>
|
||||
<form action="/send">
|
||||
<label for="cpu">CPU: </label><br>
|
||||
<input type="checkbox" id="cpu" name="cpu"><br>
|
||||
<label for="ram">RAM: </label><br>
|
||||
<input type="checkbox" id="ram" name="ram"><br>
|
||||
<label for="architecture">Architecture: </label><br>
|
||||
<input type="checkbox" id="architecture" name="architecture"><br>
|
||||
<label for="family">Family: </label><br>
|
||||
<input type="checkbox" id="family" name="family"><br>
|
||||
<button id="submit" type="submit">Submit</button>
|
||||
</form>
|
||||
Collected data:
|
||||
<hr>
|
||||
<div id="messages">
|
||||
{{data|safe}}
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
28
Lesson_6/Task 2/webserver.py
Normal file
28
Lesson_6/Task 2/webserver.py
Normal file
|
@ -0,0 +1,28 @@
|
|||
from databaseWorker import *
|
||||
from flask import Flask, render_template, redirect, request
|
||||
import platform, psutil, os
|
||||
|
||||
app = Flask("Computer info")
|
||||
prepareDb("data.db")
|
||||
|
||||
@app.route('/')
|
||||
def index():
|
||||
rows = getData("data.db")
|
||||
return render_template("index.html", data=generateDataHTMLTable(rows))
|
||||
|
||||
@app.route('/send')
|
||||
def send():
|
||||
os.remove("data.db")
|
||||
prepareDb("data.db")
|
||||
|
||||
if request.args.get('cpu'):
|
||||
sendData("data.db", "CPU", platform.processor())
|
||||
if request.args.get('ram'):
|
||||
sendData("data.db", "RAM", str(psutil.virtual_memory()))
|
||||
if request.args.get('architecture'):
|
||||
sendData("data.db", "Architecture", str(platform.architecture()))
|
||||
if request.args.get('family'):
|
||||
sendData("data.db", "Family", platform.machine())
|
||||
return redirect('/')
|
||||
|
||||
app.run(host='0.0.0.0', port=8081)
|
Reference in a new issue