DB session fixes, nicer upload
parent
6fe899be17
commit
c9e47ec111
16
app.py
16
app.py
|
@ -1,9 +1,6 @@
|
||||||
import os
|
import os
|
||||||
from flask import Flask, redirect, render_template, session, request, url_for, flash
|
from flask import Flask, redirect, render_template, session, request, url_for, flash
|
||||||
|
|
||||||
from sqlalchemy import create_engine
|
|
||||||
from sqlalchemy.orm import sessionmaker
|
|
||||||
|
|
||||||
from auth import login_required, bp as auth_bp
|
from auth import login_required, bp as auth_bp
|
||||||
from deck import bp as deck_bp
|
from deck import bp as deck_bp
|
||||||
from menu import bp as menu_bp
|
from menu import bp as menu_bp
|
||||||
|
@ -11,14 +8,9 @@ from upload import bp as upload_bp
|
||||||
from share import share
|
from share import share
|
||||||
from matches import bp as matches_bp
|
from matches import bp as matches_bp
|
||||||
|
|
||||||
from create_db import Card, Deck
|
from create_db import Card, Deck, get_session
|
||||||
from config import CONFIG
|
from config import CONFIG
|
||||||
|
|
||||||
|
|
||||||
engine = create_engine(CONFIG['DB_CONNECTION'])
|
|
||||||
dbsessionmaker = sessionmaker(bind=engine)
|
|
||||||
dbsession = dbsessionmaker()
|
|
||||||
|
|
||||||
def create_app(test_config=None):
|
def create_app(test_config=None):
|
||||||
# create and configure the app
|
# create and configure the app
|
||||||
app = Flask(__name__, instance_relative_config=True)
|
app = Flask(__name__, instance_relative_config=True)
|
||||||
|
@ -39,6 +31,7 @@ def create_app(test_config=None):
|
||||||
|
|
||||||
@app.route('/deck/index', methods=["GET", "POST"])
|
@app.route('/deck/index', methods=["GET", "POST"])
|
||||||
def deck():
|
def deck():
|
||||||
|
dbsession = get_session()
|
||||||
if not 'user_id' in session:
|
if not 'user_id' in session:
|
||||||
return index()
|
return index()
|
||||||
|
|
||||||
|
@ -110,10 +103,15 @@ def create_app(test_config=None):
|
||||||
# Loudamo naslednjo karto v decku
|
# Loudamo naslednjo karto v decku
|
||||||
show_card_index = deck_object.current_card
|
show_card_index = deck_object.current_card
|
||||||
show_card_id = deck_object.cards_by_id.split(",")[show_card_index]
|
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)
|
show_card = dbsession.query(Card).get(show_card_id)
|
||||||
dbsession.close()
|
dbsession.close()
|
||||||
|
|
||||||
if not show_card:
|
if not show_card:
|
||||||
|
# @TODO how to handle missing card?
|
||||||
|
#deck_object.completed = 1
|
||||||
|
#dbsession.commit()
|
||||||
|
#dbsession.close()
|
||||||
print("show_card missing")
|
print("show_card missing")
|
||||||
return render_template("error/no_cards_in_collection.html")
|
return render_template("error/no_cards_in_collection.html")
|
||||||
#raise Exception("Ne najdem naslednje karte")
|
#raise Exception("Ne najdem naslednje karte")
|
||||||
|
|
12
auth.py
12
auth.py
|
@ -5,20 +5,16 @@ from flask import (
|
||||||
Blueprint, flash, g, redirect, render_template, request, session, url_for
|
Blueprint, flash, g, redirect, render_template, request, session, url_for
|
||||||
)
|
)
|
||||||
from hashlib import md5
|
from hashlib import md5
|
||||||
from sqlalchemy import create_engine
|
from create_db import User, get_session
|
||||||
from sqlalchemy.orm import sessionmaker
|
|
||||||
from create_db import User
|
|
||||||
from config import CONFIG
|
from config import CONFIG
|
||||||
|
|
||||||
|
|
||||||
bp = Blueprint('auth', __name__, url_prefix='/auth')
|
bp = Blueprint('auth', __name__, url_prefix='/auth')
|
||||||
|
|
||||||
engine = create_engine(CONFIG['DB_CONNECTION'])
|
|
||||||
dbsessionmaker = sessionmaker(bind=engine)
|
|
||||||
dbsession = dbsessionmaker()
|
|
||||||
|
|
||||||
@bp.route('/register', methods=('GET', 'POST'))
|
@bp.route('/register', methods=('GET', 'POST'))
|
||||||
def register():
|
def register():
|
||||||
|
dbsession = get_session()
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
username = request.form['username']
|
username = request.form['username']
|
||||||
password = request.form['password']
|
password = request.form['password']
|
||||||
|
@ -50,6 +46,8 @@ def register():
|
||||||
@bp.route('/login', methods=('GET', 'POST'))
|
@bp.route('/login', methods=('GET', 'POST'))
|
||||||
def login():
|
def login():
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
|
dbsession = get_session()
|
||||||
|
|
||||||
username = request.form['username']
|
username = request.form['username']
|
||||||
password = request.form['password']
|
password = request.form['password']
|
||||||
error = None
|
error = None
|
||||||
|
|
|
@ -13,6 +13,7 @@ from sqlalchemy import Column, Integer, Float, String, Text, DateTime, ForeignKe
|
||||||
from sqlalchemy.ext.declarative import declarative_base
|
from sqlalchemy.ext.declarative import declarative_base
|
||||||
#from sqlalchemy.orm import relationship
|
#from sqlalchemy.orm import relationship
|
||||||
from sqlalchemy import func, create_engine,join
|
from sqlalchemy import func, create_engine,join
|
||||||
|
from sqlalchemy.orm import sessionmaker
|
||||||
from config import CONFIG
|
from config import CONFIG
|
||||||
|
|
||||||
Base = declarative_base()
|
Base = declarative_base()
|
||||||
|
@ -60,3 +61,8 @@ class Review(Base):
|
||||||
engine = create_engine(CONFIG['DB_CONNECTION'])
|
engine = create_engine(CONFIG['DB_CONNECTION'])
|
||||||
|
|
||||||
Base.metadata.create_all(engine)
|
Base.metadata.create_all(engine)
|
||||||
|
|
||||||
|
def get_session():
|
||||||
|
engine = create_engine(CONFIG['DB_CONNECTION'])
|
||||||
|
dbsessionmaker = sessionmaker(bind=engine)
|
||||||
|
return dbsessionmaker()
|
||||||
|
|
10
deck.py
10
deck.py
|
@ -3,21 +3,15 @@ from flask import (
|
||||||
Blueprint, flash, g, redirect, render_template, request, url_for, session
|
Blueprint, flash, g, redirect, render_template, request, url_for, session
|
||||||
)
|
)
|
||||||
from auth import login_required
|
from auth import login_required
|
||||||
from create_db import Card, User
|
from create_db import Card, User, get_session
|
||||||
|
|
||||||
from sqlalchemy import create_engine
|
|
||||||
from sqlalchemy.orm import sessionmaker
|
|
||||||
|
|
||||||
from numpy.random import choice
|
from numpy.random import choice
|
||||||
|
|
||||||
bp = Blueprint('deck', __name__)
|
bp = Blueprint('deck', __name__)
|
||||||
|
|
||||||
engine = create_engine(CONFIG['DB_CONNECTION'])
|
|
||||||
dbsessionmaker = sessionmaker(bind=engine)
|
|
||||||
dbsession = dbsessionmaker()
|
|
||||||
|
|
||||||
@bp.route('/deck', methods=['GET'])
|
@bp.route('/deck', methods=['GET'])
|
||||||
def get_collection(user_id):
|
def get_collection(user_id):
|
||||||
|
dbsession = get_session()
|
||||||
c = dbsession.query(Card).filter(Card.owner_id == user_id).all()
|
c = dbsession.query(Card).filter(Card.owner_id == user_id).all()
|
||||||
return c
|
return c
|
||||||
|
|
||||||
|
|
16
matches.py
16
matches.py
|
@ -2,22 +2,14 @@ from flask import (
|
||||||
Blueprint, redirect, render_template, request, session, url_for
|
Blueprint, redirect, render_template, request, session, url_for
|
||||||
)
|
)
|
||||||
from requests import get
|
from requests import get
|
||||||
|
|
||||||
from sqlalchemy import create_engine
|
|
||||||
from sqlalchemy.orm import sessionmaker
|
|
||||||
from config import CONFIG
|
from config import CONFIG
|
||||||
|
from create_db import Card, User, get_session
|
||||||
from create_db import Card, User
|
|
||||||
|
|
||||||
bp = Blueprint('matches', __name__, url_prefix='/matches')
|
bp = Blueprint('matches', __name__, url_prefix='/matches')
|
||||||
|
|
||||||
|
|
||||||
engine = create_engine(CONFIG['DB_CONNECTION'])
|
|
||||||
dbsessionmaker = sessionmaker(bind=engine)
|
|
||||||
dbsession = dbsessionmaker()
|
|
||||||
|
|
||||||
|
|
||||||
def get_matches(user_id):
|
def get_matches(user_id):
|
||||||
|
dbsession = get_session()
|
||||||
|
|
||||||
list_of_matches = []
|
list_of_matches = []
|
||||||
|
|
||||||
#in all shared cards for the ones you votes yes
|
#in all shared cards for the ones you votes yes
|
||||||
|
@ -59,4 +51,4 @@ def index():
|
||||||
|
|
||||||
names_by_ids[id] = users.get(id).username
|
names_by_ids[id] = users.get(id).username
|
||||||
|
|
||||||
return render_template("matches.html", username=username, list_of_matches=list_of_matches, names_by_ids=names_by_ids)
|
return render_template("matches.html", username=username, list_of_matches=list_of_matches, names_by_ids=names_by_ids)
|
||||||
|
|
14
menu.py
14
menu.py
|
@ -1,23 +1,18 @@
|
||||||
from flask import (
|
from flask import (
|
||||||
Blueprint, redirect, render_template, request, session, url_for
|
Blueprint, redirect, render_template, request, session, url_for
|
||||||
)
|
)
|
||||||
from sqlalchemy import create_engine
|
|
||||||
from sqlalchemy.orm import sessionmaker
|
|
||||||
|
|
||||||
from config import CONFIG
|
from config import CONFIG
|
||||||
from create_db import Deck, Card
|
from create_db import Deck, Card, get_session
|
||||||
|
|
||||||
from deck import get_deck, probabilistic_deck_generator
|
from deck import get_deck, probabilistic_deck_generator
|
||||||
from auth import login
|
from auth import login
|
||||||
|
|
||||||
bp = Blueprint('menu', __name__, url_prefix='/menu')
|
bp = Blueprint('menu', __name__, url_prefix='/menu')
|
||||||
|
|
||||||
engine = create_engine(CONFIG['DB_CONNECTION'])
|
|
||||||
dbsessionmaker = sessionmaker(bind=engine)
|
|
||||||
dbsession = dbsessionmaker()
|
|
||||||
|
|
||||||
@bp.route("/", methods=("GET", "POST"))
|
@bp.route("/", methods=("GET", "POST"))
|
||||||
def index():
|
def index():
|
||||||
|
dbsession = get_session()
|
||||||
if 'user_id' not in session:
|
if 'user_id' not in session:
|
||||||
return login()
|
return login()
|
||||||
|
|
||||||
|
@ -34,10 +29,13 @@ def index():
|
||||||
# @TODO tu bi moral preveriti če je kak unfinished deck, potem bi pisalo continiue, namesto new
|
# @TODO tu bi moral preveriti če je kak unfinished deck, potem bi pisalo continiue, namesto new
|
||||||
|
|
||||||
#preverimo če so sploh karte v collectionu
|
#preverimo če so sploh karte v collectionu
|
||||||
|
print("userID", user_id)
|
||||||
c = dbsession.query(Card).filter(Card.owner_id == user_id).all()
|
c = dbsession.query(Card).filter(Card.owner_id == user_id).all()
|
||||||
|
#print(dbsession.query(Card).all())
|
||||||
|
#print(c)
|
||||||
if c == []:
|
if c == []:
|
||||||
print("ne najdem collectiona")
|
print("ne najdem collectiona")
|
||||||
return render_template("error/no_cards_in_collection.html")
|
return render_template("error/no_cards_in_collection.html", username=username)
|
||||||
|
|
||||||
#ustvari novi vnos v Deck
|
#ustvari novi vnos v Deck
|
||||||
deck = probabilistic_deck_generator(user_id, 5, 5)
|
deck = probabilistic_deck_generator(user_id, 5, 5)
|
||||||
|
|
|
@ -1,17 +1,13 @@
|
||||||
from sqlalchemy import create_engine
|
from sqlalchemy import create_engine
|
||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
|
|
||||||
from create_db import Card
|
from create_db import Card, get_session
|
||||||
from get_files import get_file_list
|
from get_files import get_file_list
|
||||||
from config import CONFIG
|
from config import CONFIG
|
||||||
|
|
||||||
import nextcloud_client
|
import nextcloud_client
|
||||||
|
|
||||||
engine = create_engine(CONFIG['DB_CONNECTION'])
|
dbsession = get_session()
|
||||||
dbsessionmaker = sessionmaker(bind=engine)
|
|
||||||
dbsession = dbsessionmaker()
|
|
||||||
|
|
||||||
|
|
||||||
nc = nextcloud_client.Client('https://obzorje.kompot.si')
|
nc = nextcloud_client.Client('https://obzorje.kompot.si')
|
||||||
|
|
||||||
nc.login(CONFIG['NC_USER'],CONFIG['NC_PASSWORD'])
|
nc.login(CONFIG['NC_USER'],CONFIG['NC_PASSWORD'])
|
||||||
|
|
11
share.py
11
share.py
|
@ -1,17 +1,14 @@
|
||||||
from sqlalchemy import create_engine
|
from sqlalchemy import create_engine
|
||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
from config import CONFIG
|
from config import CONFIG
|
||||||
from create_db import User, Card
|
from create_db import User, Card, get_session
|
||||||
|
|
||||||
from hashlib import md5
|
from hashlib import md5
|
||||||
|
|
||||||
|
|
||||||
engine = create_engine(CONFIG['DB_CONNECTION'])
|
|
||||||
dbsessionmaker = sessionmaker(bind=engine)
|
|
||||||
dbsession = dbsessionmaker()
|
|
||||||
|
|
||||||
|
|
||||||
def share(card, user_id):
|
def share(card, user_id):
|
||||||
|
dbsession = get_session()
|
||||||
|
|
||||||
#tu bi lahko naredili nek autoincrement ampak i guess da hash unique idja tudi daje unique share_id, tega potem uporabljamo, da preverimo matche
|
#tu bi lahko naredili nek autoincrement ampak i guess da hash unique idja tudi daje unique share_id, tega potem uporabljamo, da preverimo matche
|
||||||
h = md5(str(card.id).encode("utf-8")).hexdigest()
|
h = md5(str(card.id).encode("utf-8")).hexdigest()
|
||||||
card.share_id = h
|
card.share_id = h
|
||||||
|
@ -25,4 +22,4 @@ def share(card, user_id):
|
||||||
print("sharing to, ", user.id)
|
print("sharing to, ", user.id)
|
||||||
new_card = card = Card(title=card.title, interest_rate=-1.0, owner_id=user.id, item_location=card.item_location, last_review=None, share_id=h)
|
new_card = card = Card(title=card.title, interest_rate=-1.0, owner_id=user.id, item_location=card.item_location, last_review=None, share_id=h)
|
||||||
dbsession.add(new_card)
|
dbsession.add(new_card)
|
||||||
dbsession.commit()
|
dbsession.commit()
|
||||||
|
|
|
@ -12,9 +12,8 @@
|
||||||
</body>
|
</body>
|
||||||
<form id="form" method="post" enctype="multipart/form-data" action="/upload/uploader">
|
<form id="form" method="post" enctype="multipart/form-data" action="/upload/uploader">
|
||||||
<div class="drop-zone">
|
<div class="drop-zone">
|
||||||
<span class="drop-zone__prompt">Drop file here or click to upload</span>
|
<span id="zone-txt" class="drop-zone__prompt">Drop file here or click to upload</span>
|
||||||
<input type="file" name="file" class="drop-zone__input">
|
<input type="file" name="file" class="drop-zone__input">
|
||||||
<input type="submit">
|
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
@ -43,6 +42,7 @@
|
||||||
if (e.dataTransfer.files.length) {
|
if (e.dataTransfer.files.length) {
|
||||||
inputElement.files = e.dataTransfer.files;
|
inputElement.files = e.dataTransfer.files;
|
||||||
console.log("oddajam form", e);
|
console.log("oddajam form", e);
|
||||||
|
document.getElementById('zone-txt').innerHTML = "Uploading file...";
|
||||||
document.getElementById("form").submit();
|
document.getElementById("form").submit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,4 +52,4 @@
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<body>
|
<body>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
10
upload.py
10
upload.py
|
@ -4,22 +4,16 @@ from flask import (
|
||||||
Blueprint, flash, g, redirect, render_template, request, session, url_for
|
Blueprint, flash, g, redirect, render_template, request, session, url_for
|
||||||
)
|
)
|
||||||
from werkzeug.utils import secure_filename
|
from werkzeug.utils import secure_filename
|
||||||
from sqlalchemy import create_engine
|
|
||||||
from sqlalchemy.orm import sessionmaker
|
|
||||||
from auth import login_required
|
from auth import login_required
|
||||||
|
|
||||||
from config import CONFIG
|
from config import CONFIG
|
||||||
from create_db import User, Card
|
from create_db import User, Card, get_session
|
||||||
|
|
||||||
import nextcloud_client
|
import nextcloud_client
|
||||||
|
|
||||||
|
|
||||||
bp = Blueprint('upload', __name__, url_prefix='/upload')
|
bp = Blueprint('upload', __name__, url_prefix='/upload')
|
||||||
|
|
||||||
engine = create_engine(CONFIG['DB_CONNECTION'])
|
|
||||||
dbsessionmaker = sessionmaker(bind=engine)
|
|
||||||
dbsession = dbsessionmaker()
|
|
||||||
|
|
||||||
|
|
||||||
nc = nextcloud_client.Client('https://obzorje.kompot.si')
|
nc = nextcloud_client.Client('https://obzorje.kompot.si')
|
||||||
#print("Loggin in", CONFIG['NC_USER'], CONFIG['NC_PASSWORD'])
|
#print("Loggin in", CONFIG['NC_USER'], CONFIG['NC_PASSWORD'])
|
||||||
|
@ -34,6 +28,8 @@ def index():
|
||||||
|
|
||||||
@bp.route('/uploader', methods = ('GET', 'POST'))
|
@bp.route('/uploader', methods = ('GET', 'POST'))
|
||||||
def upload_file():
|
def upload_file():
|
||||||
|
dbsession = get_session()
|
||||||
|
|
||||||
user_id = session["user_id"]
|
user_id = session["user_id"]
|
||||||
username = session["username"]
|
username = session["username"]
|
||||||
message = ""
|
message = ""
|
||||||
|
|
Loading…
Reference in New Issue