diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f89b800 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.venv +db.sqlite +**/__pycache__/ \ 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..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 @@ -39,17 +43,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 @@ -126,11 +134,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..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(): @@ -95,23 +95,27 @@ 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()) @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': @@ -127,8 +131,11 @@ def order_get(): # Adding order to DB if compare.process_main(ordered_list, desk): return '