diff --git a/classes.py b/classes.py new file mode 100644 index 0000000..4d265de --- /dev/null +++ b/classes.py @@ -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) diff --git a/db.sql b/db.sql new file mode 100644 index 0000000..14894b0 --- /dev/null +++ b/db.sql @@ -0,0 +1,6 @@ +CREATE TABLE orders ( +id INTEGER NOT NULL UNIQUE, +amount REAL NOT NULL, +message TEXT, +name TEXT +); diff --git a/serv.py b/serv.py index b46b1aa..2fcca3e 100755 --- a/serv.py +++ b/serv.py @@ -1,40 +1,62 @@ #!/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 - -app = Flask(__name__) -sock = Sock(app) +from classes import Payement, Client -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 = [] 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('/') def index(): 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 += '{} {}
'.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') def last(): print(len(clients_list)) @@ -60,9 +82,11 @@ def notifications(): if request.json is not None: print(request.json) 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']['payer']['firstName']) + p.save(get_db()); payements_list.append(p) for c in clients_list: try: diff --git a/templates/index.html b/templates/index.html index e51afb6..f40f453 100644 --- a/templates/index.html +++ b/templates/index.html @@ -4,11 +4,25 @@
TEST
+