Sqlite3: basic order table

This commit is contained in:
2023-09-13 00:14:14 +02:00
parent 1cf7f82eda
commit 8d7040a874
4 changed files with 108 additions and 26 deletions

38
classes.py Normal file
View File

@@ -0,0 +1,38 @@
from sqlite3 import Connection
class Payement:
id : int
amount: float
name : str
message : str
def __init__(self,id,amount,name,message) -> None:
self.id = id
self.amount = amount
self.name = name
self.message = message
def save(self, conn : Connection):
try:
conn.cursor()
conn.execute("insert into orders values (:id,:amount,:message,:name)",
{
"id" : self.id,
"amount" : self.amount,
"message" : self.message,
"name" : self.name
})
conn.commit()
except:
print("Can't save?")
return
def __repr__(self) -> str:
return '{} - {}€- {}'.format(self.name,self.amount/100,self.message)
class Client:
def __init__(self,sock) -> None:
self.sock = sock
def send_event(self, data):
print(self.sock)
self.sock.send(data)

6
db.sql Normal file
View File

@@ -0,0 +1,6 @@
CREATE TABLE orders (
id INTEGER NOT NULL UNIQUE,
amount REAL NOT NULL,
message TEXT,
name TEXT
);

74
serv.py
View File

@@ -1,40 +1,62 @@
#!/bin/env python3 #!/bin/env python3
from flask import Flask, make_response, render_template,request,jsonify import os
import sqlite3
from flask import Flask, make_response, render_template,request,jsonify,g
from flask_sock import Sock from flask_sock import Sock
from classes import Payement, Client
app = Flask(__name__)
sock = Sock(app)
class Payement:
amount: float
name : str
message : str
def __init__(self,amount,name,message) -> None:
self.amount = amount
self.name = name
self.message = message
def save():
return
def __repr__(self) -> str:
return '{} - {}€- {}'.format(self.name,self.amount/100,self.message)
class Client:
def __init__(self,sock) -> None:
self.sock = sock
def send_event(self, data):
print(self.sock)
self.sock.send(data)
clients_list = [] clients_list = []
payements_list : list[Payement] = [] payements_list : list[Payement] = []
app = Flask(__name__, instance_relative_config=True)
app.config.from_mapping(
DATABASE=os.path.join(app.instance_path,'db.sqlite')
)
sock = Sock(app)
def get_db():
db = getattr(g, '_database', None)
if db is None:
db = g.db = sqlite3.connect('db.sqlite')
return db
@app.teardown_appcontext
def close(exception):
db = getattr(g, 'db', None)
if db is not None:
db.close()
@app.route('/') @app.route('/')
def index(): def index():
return render_template('index.html') return render_template('index.html')
@app.route('/show')
def show():
db = get_db()
cur = db.cursor()
cur.execute('select * from orders;')
info = cur.fetchall();
val = ""
for i in info:
val += '{} {} <br/>'.format(i[0],i[1])
return make_response(val, 200)
@app.route('/test')
def test():
p = Payement(1,5000,'TEST','TEST')
for c in clients_list:
try:
c.send_event(repr(p))
except:
clients_list.remove(c)
return make_response('Test',200)
@app.route('/last') @app.route('/last')
def last(): def last():
print(len(clients_list)) print(len(clients_list))
@@ -60,9 +82,11 @@ def notifications():
if request.json is not None: if request.json is not None:
print(request.json) print(request.json)
if request.json['eventType'] == 'Order': if request.json['eventType'] == 'Order':
p = Payement(request.json['data']['amount']['total'], p = Payement(request.json['data']['id'],
request.json['data']['amount']['total'],
request.json['data']['items'][0]['customFields'][0]['answer'], request.json['data']['items'][0]['customFields'][0]['answer'],
request.json['data']['payer']['firstName']) request.json['data']['payer']['firstName'])
p.save(get_db());
payements_list.append(p) payements_list.append(p)
for c in clients_list: for c in clients_list:
try: try:

View File

@@ -4,11 +4,25 @@
</head> </head>
<body> <body>
<div id="p">TEST</div> <div id="p">TEST</div>
<div id="msg"><div>
<script> <script>
const websocket = new WebSocket('ws://'+ location.host + '/notify'); const websocket = new WebSocket('ws://'+ location.host + '/notify');
websocket.addEventListener('message', ev => { websocket.addEventListener('message', ev => {
console.log(ev.data); console.log(ev.data);
let div = document.createTextNode(ev.data); let ndiv = document.createElement('div');
let data = document.createTextNode(ev.data);
ndiv.appendChild(data);
message = document.getElementById('msg');
document.body.insertBefore(ndiv,message);
});
websocket.addEventListener('error', ev => {
let div = document.createTextNode(ev);
document.body.append(div);
});
websocket.addEventListener('close', ev => {
let div = document.createTextNode(ev);
document.body.append(div); document.body.append(div);
}); });