From 513a28ef515c08f82134f7a31fec1d200541e033 Mon Sep 17 00:00:00 2001 From: Kostanjevec Date: Sun, 7 Aug 2022 17:46:04 +0200 Subject: [PATCH] moved deck session function to special file --- app.py | 9 +++-- prob_session.py | 96 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+), 3 deletions(-) create mode 100644 prob_session.py diff --git a/app.py b/app.py index 0599d1d..eee5d41 100644 --- a/app.py +++ b/app.py @@ -1,14 +1,13 @@ -from flask import Flask, redirect, render_template, session, request, url_for, flash +from flask import Flask, redirect, render_template, session, request, url_for from auth import login_required, bp as auth_bp from deck import bp as deck_bp from menu import bp as menu_bp from upload import bp as upload_bp -from share import share from matches import bp as matches_bp from settings import bp as settings_bp +from prob_session import prob_session -from create_db import Card, Deck, get_session from config import CONFIG def create_app(test_config=None): @@ -31,6 +30,9 @@ def create_app(test_config=None): @app.route('/deck/index', methods=["GET", "POST"]) def deck(): + return prob_session() + """ + this is commented out because it was moved to pro_session.py. dbsession = get_session() if not 'user_id' in session: return index() @@ -118,6 +120,7 @@ def create_app(test_config=None): # Prikaži obrazec return render_template("deck/index.html", username=username, card=show_card) + """ @app.route("/share_button", methods=["GET", "POST"]) diff --git a/prob_session.py b/prob_session.py new file mode 100644 index 0000000..f83b859 --- /dev/null +++ b/prob_session.py @@ -0,0 +1,96 @@ +from flask import session, redirect, url_for,request, flash, render_template +from create_db import get_session, Deck, Card +from share import share + +""" +Refactoring the 'deck' function from app.py +""" + + +def prob_session(): + dbsession = get_session() + if not 'user_id' in session: + redirect(url_for('login')) + user_id = session['user_id'] + username = session['username'] + + #pokliče na bazo, da dobi str card idjev, ga spremeni v list in srevira karte po idjih + deck_query = dbsession.query(Deck).filter(Deck.owner_id == user_id) + deck_object = deck_query.filter(Deck.completed == False).first() + # @TODO: ce deck, ne obstaja, kaj naj zaj jas? + if len(deck_object.cards_by_id.split(",")) == 0: + deck_query.filter(Deck) + redirect(url_for('login')) + + # Smo oddali obrazec? + if request.method == 'POST': + card_id = request.form.get('card_id', None) + if not card_id: + raise Exception("card_id je nujen!") + + + submit_card = dbsession.query(Card).get(card_id) + # @TODO preveri, ali je card del trenutnega decka! + + # Ali damo share? Potem nastavi na share in ponovi obrazec + share_request = request.form.get("share", None) + if share_request: + # @TODO logika za share! + share(submit_card, user_id) + + # Če ne, gre za rate! + else: + rate = request.form.get('rate', None) #je to nevarno?? + print(rate) + + if not rate: + raise Exception("manjka rate info!") + + if rate == "Yes": + submit_card.interest_rate = 1 + + elif rate == "Maybe": + k = 0.5 + print(submit_card) + submit_card.interest_rate= abs(submit_card.interest_rate*k) + + elif rate == "No": + k = 0.1 + submit_card.interest_rate = abs(submit_card.interest_rate*k) + + elif rate == "Delete": + submit_card.interest_rate = 0 + #@TODO to bi lahko zbrisalo tudi file v določenih primerih + + # zaporedno število trenutnega carda v decku + next_card = deck_object.current_card + 1 + + # Ali je deck končan? + if next_card >= deck_object.number_of_cards: + deck_object.completed = True + dbsession.commit() + dbsession.close() + flash("Deck rating finished!") + return redirect(url_for("menu.index")) + + deck_object.current_card = next_card + dbsession.commit() + + # Loudamo naslednjo karto v decku + show_card_index = deck_object.current_card + show_card_id = deck_object.cards_by_id.split(",")[show_card_index] + print("GET CARD PLS", show_card_id) + show_card = dbsession.query(Card).get(show_card_id) + dbsession.close() + + if not show_card: + # @TODO how to handle missing card? + #deck_object.completed = 1 + #dbsession.commit() + #dbsession.close() + print("show_card missing") + return render_template("error/no_cards_in_collection.html") + #raise Exception("Ne najdem naslednje karte") + + # Prikaži obrazec + return render_template("deck/index.html", username=username, card=show_card) \ No newline at end of file