From 35f20e4f63c32f24fd16a2428e2ea1db3ba36765 Mon Sep 17 00:00:00 2001 From: Tim Date: Tue, 8 Jul 2025 16:41:12 +0200 Subject: [PATCH 1/3] added feature on new orderGet refresh orders list fixed bug if i order something from desk 2 as first after db entry 2 desk dont show its ordered items only if i add in desk 1 (querys.py) --- .gitignore | 1 + README.md | 4 + Server/DB/querys.py | 3 +- Server/Host/flaskApp.py | 27 ++++--- Server/Host/templates/index.html | 2 +- Server/Host/templates/login.html | 2 +- Server/Host/templates/orders.html | 73 ++++++++++++++---- .../Host/templates/partials/_order_rows.html | 22 ++++++ Tools/__pycache__/qrGenerator.cpython-312.pyc | Bin 0 -> 2788 bytes app.py | 2 +- 10 files changed, 103 insertions(+), 33 deletions(-) create mode 100644 .gitignore create mode 100644 Server/Host/templates/partials/_order_rows.html create mode 100644 Tools/__pycache__/qrGenerator.cpython-312.pyc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b694934 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.venv \ No newline at end of file diff --git a/README.md b/README.md index 19ae1d2..59bcd54 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,10 @@ Execute in Terminal "python3 -m venv .venv", for the virtual enviroment activate Note: This are early stages of this project listed are missing and planed. + +### DB Delete + +To delete db simple add first_startup = True in Options.ini and remove db.sqlite # To Does --- Must have features / fixes diff --git a/Server/DB/querys.py b/Server/DB/querys.py index a42532f..f721dbf 100644 --- a/Server/DB/querys.py +++ b/Server/DB/querys.py @@ -126,11 +126,10 @@ class get: def all_orders(): # All unfinished orders (finished is False or string "False") result = [] - desk = 1 orders = session.query(Order).filter(Order.finished == 0).all() session.commit() for order in orders: - products = session.query(Product).filter(Product.order_id == order.id , Order.desk_number == desk).all() + products = session.query(Product).filter(Product.order_id == order.id).all() session.commit() list_products = [] for p in products: diff --git a/Server/Host/flaskApp.py b/Server/Host/flaskApp.py index 0b22e59..acbc90a 100644 --- a/Server/Host/flaskApp.py +++ b/Server/Host/flaskApp.py @@ -95,16 +95,21 @@ def logout(): def orders(): #TODO on new orderGet refresh orders list if request.method == 'POST': order_id = request.form.get('order_id') - action = request.form.get('action') # 'finish' or 'undo' + action = request.form.get('action') # 'refresh', 'finish' or 'undo' - order = session.get(Order, int(order_id)) - if order: #SQL error handeling just in case - if action == 'finish': - order.finished = True - elif action == 'undo': - order.finished = False + if action == 'finish': + order = session.get(Order, int(order_id)) + order.finished = True session.commit() return jsonify(success=True) + elif action == 'undo': + order = session.get(Order, int(order_id)) + order.finished = False + session.commit() + return jsonify(success=True) + elif action == 'refresh': + html = render_template('partials/_order_rows.html', orders=get.all_orders()) + return jsonify(success=True, html=html) return jsonify(success=False) return render_template('orders.html', orders=get.all_orders()) @@ -137,11 +142,9 @@ def order_get(): return render_template('index.html', desk=desk, MAX_DESKS=int(config['DEFAULT']['max_desks']), orderableItems = get.valid_products(get_json_=True)) elif config['SETTINGS']['lockqrcode_whit_secret'] == 'False': return render_template('index.html', desk=desk, MAX_DESKS=int(config['DEFAULT']['max_desks']),orderableItems = get.valid_products(get_json_=True)) - else: - return '

Somethign went wrong try again.

' #TODO Make the HTML prettier for all - return '

404 wrong Secret?

' #TODO Make the HTML prettier for all - elif config['SETTINGS']['lockqrcode_whit_secret'] == 'True': - return '

your LOCKQRCODE is invalid.

' + elif config['SETTINGS']['lockqrcode_whit_secret'] == 'True': + return '

your LOCKQRCODE is invalid.

' + return '

Something went wrong went wrong, Try again.

' #TODO Make the HTML prettier for all else: return render_template('index.html',desk=desk, MAX_DESKS=int(config['DEFAULT']['max_desks']),orderableItems = get.valid_products(get_json_=True)) diff --git a/Server/Host/templates/index.html b/Server/Host/templates/index.html index 2fbb5e8..80934de 100644 --- a/Server/Host/templates/index.html +++ b/Server/Host/templates/index.html @@ -7,7 +7,7 @@ Document -
+
  • Tisch Nummer
    diff --git a/Server/Host/templates/login.html b/Server/Host/templates/login.html index 462a86a..c94edd5 100644 --- a/Server/Host/templates/login.html +++ b/Server/Host/templates/login.html @@ -20,4 +20,4 @@ - \ No newline at end of file + diff --git a/Server/Host/templates/orders.html b/Server/Host/templates/orders.html index 8fbc6aa..dabf3a8 100644 --- a/Server/Host/templates/orders.html +++ b/Server/Host/templates/orders.html @@ -35,26 +35,31 @@ Action Order-Nr +
    + Last refreshed: 0s ago +
    + {% for order in orders%} - - {{ order[0] }} - -
      - {% for product in order[1] %} -
    • {{ product }}
    • - {% endfor %} -
    - - - - - order {{ order[2] }} - + + {{ order[0] }} + +
      + {% for product in order[1] %} +
    • {{ product }}
    • + {% endfor %} +
    + + + + + order {{ order[2] }} + {% else %} No open orders. {% endfor %} + \ No newline at end of file diff --git a/Server/Host/templates/partials/_order_rows.html b/Server/Host/templates/partials/_order_rows.html new file mode 100644 index 0000000..f77f5d0 --- /dev/null +++ b/Server/Host/templates/partials/_order_rows.html @@ -0,0 +1,22 @@ + +{% for order in orders%} + + {{ order[0] }} + +
      + {% for product in order[1] %} +
    • {{ product }}
    • + {% endfor %} +
    + + + + + order {{ order[2] }} + +{% else %} +No open orders. +{% endfor %} + \ No newline at end of file diff --git a/Tools/__pycache__/qrGenerator.cpython-312.pyc b/Tools/__pycache__/qrGenerator.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3749a6d2c442d0e398ff793decfdffd973f43ec7 GIT binary patch literal 2788 zcmc&$U2GFa5Z*hV&o;L6g9$WtfDjPsw#Cf&MHCEBXIwWLoxb@uFyqli{5RmJGE zGdr_CGrQl;+&6yzCIr+_l^VR`Lg+E?2y&E!)ddh{kdAaIiK0a=MJ2m0M`hr0(vec4 zio|UWkeyMdElWu?s>%qfi3+i3na`KRs2jTzfwEpm!Y(1O*9dKy>&m=T?7?2n4^h;s ztI+z!rLgM>H*|+3CZ9VGt;@oeWtiy+@0no=+-fq?M!#HM3n?J;cvlZWGlOVpWrPyz zN0laIP)3?B=_lok+=IeWcUWdB(bBq^VlK{&Gz~kLBW0wa(XKH`v-k$}_4UuXB7SI>gSCh6$CrzyAVDE zE%b2FwIJ)V-8zQ$Av7(KgOrc8i8|LLAs}6`M>}~dE=KTnn12NzFo`I4*QSJ9NM$ar zd{Uxbp-uRNROY&>yUG`^&hMfRZrc;j1Wcg(RBXzudByemrVUnE_{#N@4q9ED1pwGA zq%zMq#OO&SqdX6s8A=c?Z&!B~hHT$lzUPx=6s2P=1f(L4B?F2G1^wv%xU9--gMlrw4GfuIOgw~A& z3~eN_rv&J@S*@UP^j{Em<(GejuQg{%xcvv1dD*BCXnOgG&@2CMMBMz9;~`wt&D=dF zdV5cGclNNYNwa@wg!G#_j=eu<(3pk$38qZxC8L9P)3^ADmI-%bagi40INRL`r9vGrNlK$2c}7TS2k0n#IN>=z zT*K6UGd*C$nG^DS95V-`dL|ntbG40AY@Iqocw)74GILmzFtzA3Q&QRxW{RbaVde%O z#)Zt>6*TN3{P{B< zSYbTHF^#}};$U=*YJ|U0CXW#2#n%jrLVbyi5R2zws70Iz&$X;7UaTrOcJ6%aIGizQ z0yVG8Rsqftii*phP2^m)i@`%V*Wrg_c~?teOYQyL_Xp3w=d6a$=5VyJ63#~Z*|@1n)Q8pA=|a& zJG>Hlbvbk(7dns+9fGZ@1JmuZbq}{LRlk{SD+G5v*ne;Tf}9V&wj6BE1)D#AV=>sA z55Bz|?8pT>^1+kYuJ0;?D|-)4dzY#jR`xYbdmmNp{i$l(jQ6&8w(V|Z!56sIeWUwZ zU)}H9A+A5_QBCl9Q9nigjZyzilrI!izPj;6LJI#yNRJ?-5I9YEi4FS+uNy_|@;bw+ zdoURT7__%F4Z;si5|edU^%dX1utqFQnD4m#BF@@9!fP3G0|@PZEv68x>BavP4yn(O zy`PP`XYQjZQy)#@W26~O{JmP8(ER3*BJ^Z@*S* Date: Sun, 20 Jul 2025 15:56:43 +0200 Subject: [PATCH 2/3] Fix: Removed that when there was nothign in order no commit add woud be done. --- Server/DB/querys.py | 18 +++++++++++------- Server/Host/flaskApp.py | 6 ++++-- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/Server/DB/querys.py b/Server/DB/querys.py index f721dbf..9e9641b 100644 --- a/Server/DB/querys.py +++ b/Server/DB/querys.py @@ -39,17 +39,21 @@ class compare: OUT: True, False if succeded adding to db ''' - - if compare.verifie_order(ordered_list): #products = Product() - order = Order(desk) - session.add(order) - session.commit() + order = Order(desk) + if compare.verifie_order(ordered_list): + is_emtpy = True #check if nothing in prouduct if True dont commit. for product in ordered_list: if int(product[0]) > 0: #dont add not ordered to list + if is_emtpy: #first time enter in loop + session.add(order) + session.commit() productDB = Product(quantity=int(product[0]),name=product[1],order_id = order.id) - - session.add(productDB) + session.add(productDB) + is_emtpy = False + if is_emtpy: + return False + session.commit() logger.success("Order at desk "+ str(desk) +" resived") # add a new ordered_list to the database diff --git a/Server/Host/flaskApp.py b/Server/Host/flaskApp.py index acbc90a..afdbcc1 100644 --- a/Server/Host/flaskApp.py +++ b/Server/Host/flaskApp.py @@ -116,7 +116,6 @@ def orders(): #TODO on new orderGet refresh orders list @app.route("/order_get", methods=['GET','POST']) def order_get(): - desk= 1 global config #POST order if request.method == 'POST' and config['SETTINGS']['lockqrcode_whit_secret'] == 'True': @@ -132,8 +131,11 @@ def order_get(): # Adding order to DB if compare.process_main(ordered_list, desk): return '

    your order got ressived!

    ' + else: + #TODO IF nothing ordered send back to main and say something in a txt box + return '

    You have selected nothing try again

    ' return '

    your order coudnt be ressived try again Error:SQL

    ' - + # Veriefie if auth or not from GET elif request.method == 'GET': desk = int(request.args['desk']) From cffe60b109752f04884ec4283136881ef7d267cd Mon Sep 17 00:00:00 2001 From: Tim Date: Mon, 21 Jul 2025 15:28:57 +0200 Subject: [PATCH 3/3] +Fix On user in login not there it makes an error. +Added On user or pass incorect make indicator. --- .gitignore | 4 +- Server/DB/querys.py | 8 ++- Server/Host/flaskApp.py | 6 +-- .../templates/partials/_wrong_user_pass.html | 52 +++++++++++++++++++ 4 files changed, 64 insertions(+), 6 deletions(-) create mode 100644 Server/Host/templates/partials/_wrong_user_pass.html diff --git a/.gitignore b/.gitignore index b694934..f89b800 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ -.venv \ No newline at end of file +.venv +db.sqlite +**/__pycache__/ \ No newline at end of file diff --git a/Server/DB/querys.py b/Server/DB/querys.py index 9e9641b..36911e4 100644 --- a/Server/DB/querys.py +++ b/Server/DB/querys.py @@ -12,9 +12,13 @@ config.read('Options.ini') class compare: + def is_user_pass_valid(username, password): - session_username = session.query(User).filter(User.username == username).one() - session.commit() + try: #check if username in db + session_username = session.query(User).filter(User.username == username).one() + session.commit() + except: + return False print(session_username.hashed_password) if bcrypt.hashpw(password.encode('utf-8'), session_username.salt) == session_username.hashed_password.encode('utf-8'): return True diff --git a/Server/Host/flaskApp.py b/Server/Host/flaskApp.py index afdbcc1..b5db8f5 100644 --- a/Server/Host/flaskApp.py +++ b/Server/Host/flaskApp.py @@ -69,8 +69,7 @@ def login(): form = LoginForm() if form.validate_on_submit(): user = user_loader(form.username.data) - #TODO if username not in User: - #TODO return if username or pass wrong a red textbox in ui... + if user and compare.is_user_pass_valid(form.username.data, form.password.data): login_user(user) # store user id in session @@ -82,8 +81,9 @@ def login(): #next = request.args.get('next') is written in documentaion FLASK #return redirect(next, url_for('orders')) # redirect to orders page return redirect(url_for('orders')) # redirect to orders page + #return wrong_user_pass.html a indexer for wrong pass or username + return render_template('partials/_wrong_user_pass.html', form=form) return render_template('login.html', form=form) - @app.route("/logout") #TODO make a button @login_required def logout(): diff --git a/Server/Host/templates/partials/_wrong_user_pass.html b/Server/Host/templates/partials/_wrong_user_pass.html new file mode 100644 index 0000000..f9e6baf --- /dev/null +++ b/Server/Host/templates/partials/_wrong_user_pass.html @@ -0,0 +1,52 @@ + + + + Login Page + + + +

    Login Page

    +
    Invalid User or Password
    +
    + {{ form.csrf_token }} + {{ form.username.label }} + {{ form.username }} +
    +
    + {{ form.password.label }} + {{ form.password }} +
    +

    {{ form.remember_me }} {{ form.remember_me.label }}

    +
    + {{ form.submit }} +
    + + +