Compare commits
4 Commits
6fc3ee80f0
...
b3a15184c8
Author | SHA1 | Date |
---|---|---|
Kostanjevec | b3a15184c8 | |
Kostanjevec | e0f2111b88 | |
Kostanjevec | 1fb5e0320d | |
Kostanjevec | f8d3547599 |
21
app.py
21
app.py
|
@ -6,9 +6,10 @@ from sqlalchemy import case
|
|||
from auth import login_required, bp as auth_bp
|
||||
from deck import probabilistic_deck_generator, bp as deck_bp
|
||||
from menu import bp as menu_bp
|
||||
from upload import bp as upload_bp
|
||||
from flask import Flask, redirect, render_template, session, request, url_for
|
||||
|
||||
from create_db import Card
|
||||
from create_db import Card, Deck
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
from config import CONFIG
|
||||
|
@ -57,17 +58,21 @@ def create_app(test_config=None):
|
|||
global deck_index
|
||||
user_id = session['user_id']
|
||||
username = session['username']
|
||||
d = probabilistic_deck_generator(user_id, 5, 5) #to je hell ker vsakič generira nov deck TODO deck bi moral bit nekako stabilen
|
||||
|
||||
#pokliče na bazo, da dobi str card idjev, ga spremeni v list in srevira karte po idjih
|
||||
ids = dbsession.query(Deck).filter(Deck.owner_id == user_id, Deck.completed == False).first()
|
||||
|
||||
d = ids.cards_by_id.split(",")
|
||||
|
||||
deck_index+=1
|
||||
if deck_index < len(d):
|
||||
card = d[deck_index]
|
||||
card = dbsession.query(Card).filter(Card.id == d[deck_index]).first()
|
||||
else:
|
||||
deck_index =-1
|
||||
return redirect(url_for("menu.index"))
|
||||
|
||||
if request.method == 'POST':
|
||||
rate = request.form['rate']
|
||||
rate = request.form.get('rate', None) #je to nevarno??
|
||||
cardtitle = request
|
||||
print(rate)
|
||||
if rate == "Yes":
|
||||
|
@ -96,17 +101,13 @@ def create_app(test_config=None):
|
|||
|
||||
@app.route('/match')
|
||||
def match():
|
||||
return "match"
|
||||
|
||||
@app.route('/upload')
|
||||
def upload():
|
||||
return "upload"
|
||||
|
||||
return "match"
|
||||
|
||||
#app.register_blueprint(bp) # ??
|
||||
app.register_blueprint(auth_bp)
|
||||
app.register_blueprint(deck_bp)
|
||||
app.register_blueprint(menu_bp)
|
||||
app.register_blueprint(upload_bp)
|
||||
app.add_url_rule('/', endpoint='index')
|
||||
|
||||
return app
|
||||
|
|
|
@ -41,6 +41,7 @@ class Card(Base):
|
|||
class Deck(Base):
|
||||
__tablename__ = 'deck'
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
owner_id = Column(Integer, ForeignKey("user.id"), nullable=False)
|
||||
cards_by_id = Column(Text)
|
||||
number_of_cards = Column(Integer)
|
||||
current_card = Column(Integer)
|
||||
|
|
19
deck.py
19
deck.py
|
@ -74,15 +74,18 @@ def probabilistic_deck_generator(user_id, max_new, max_due):
|
|||
|
||||
return deck
|
||||
|
||||
#################################################
|
||||
#################################################
|
||||
def get_deck(deck):
|
||||
"""naredimo string iz cardov"""
|
||||
cards_by_id = ""
|
||||
for card in deck:
|
||||
cards_by_id += str(card.id) + ","
|
||||
|
||||
cards_by_id = cards_by_id[:-1]
|
||||
|
||||
return cards_by_id
|
||||
|
||||
|
||||
#################################################
|
||||
##TODO
|
||||
# config za max_new in max_due
|
||||
#################################################
|
||||
#################################################
|
||||
#################################################
|
||||
#################################################
|
||||
#################################################
|
||||
#################################################
|
||||
#################################################
|
20
menu.py
20
menu.py
|
@ -6,7 +6,9 @@ from sqlalchemy.orm import sessionmaker
|
|||
from auth import login_required
|
||||
|
||||
from config import CONFIG
|
||||
from create_db import User
|
||||
from create_db import Deck, User
|
||||
|
||||
from deck import get_deck, probabilistic_deck_generator
|
||||
|
||||
bp = Blueprint('menu', __name__, url_prefix='/menu')
|
||||
|
||||
|
@ -22,15 +24,27 @@ def index():
|
|||
|
||||
print(username)
|
||||
|
||||
if request.method == 'POST':
|
||||
if request.method == "POST":
|
||||
action = request.form.get("menu", False) #internetna rešitev, nevem kako, ampak dela, tj. dobi info iz meni buttonov
|
||||
print(action)
|
||||
if action == "new_session":
|
||||
#tu bi moral preveriti če je kak unfinished deck, potem bi pisalo continiue, namesto new
|
||||
|
||||
#ustvari novi vnos v Deck
|
||||
deck = probabilistic_deck_generator(user_id, 5, 5)
|
||||
cards_by_id = get_deck(deck)
|
||||
number_of_cards = len(cards_by_id.split(","))
|
||||
|
||||
print(cards_by_id, number_of_cards)
|
||||
deck = Deck(cards_by_id=cards_by_id, owner_id=user_id, number_of_cards=number_of_cards, current_card=0, completed=False)
|
||||
dbsession.add(deck)
|
||||
dbsession.commit()
|
||||
|
||||
return redirect(url_for("deck"))
|
||||
elif action == "matches":
|
||||
pass
|
||||
elif action == "upload":
|
||||
pass
|
||||
return redirect(url_for("upload.index"))
|
||||
elif action == "settings":
|
||||
pass
|
||||
elif action == "instructions":
|
||||
|
|
|
@ -136,4 +136,34 @@ html {
|
|||
#pdf-doc {
|
||||
width: 100%;
|
||||
height: calc(100vh - 332px);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.drop-zone {
|
||||
max-width: 200px;
|
||||
height: 200px;
|
||||
padding: 25px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
font-family: "Quicksand", sans-serif;
|
||||
font-weight: 500;
|
||||
font-size: 20px;
|
||||
cursor: pointer;
|
||||
color: #cccccc;
|
||||
border: 4px dashed #009578;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.drop-zone--over {
|
||||
border-style: solid;
|
||||
}
|
||||
|
||||
.drop-zone__input {
|
||||
display: none;
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
{% extends 'base.html' %}
|
||||
|
||||
{% block header %}
|
||||
<head>
|
||||
<title>Drag and Drop File Upload</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
</body>
|
||||
<form method="post" enctype="multipart/form-data" action="localhost:5000/upload/uploader">
|
||||
<div class="drop-zone">
|
||||
<span class="drop-zone__prompt">Drop file here or click to upload</span>
|
||||
<input type="file" name="file" class="drop-zone__input">
|
||||
<input type="submit">
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
document.querySelectorAll(".drop-zone__input").forEach((inputElement) => {
|
||||
const dropZoneElement = inputElement.closest(".drop-zone");
|
||||
dropZoneElement.addEventListener("click", (e) => {
|
||||
inputElement.click();
|
||||
});
|
||||
|
||||
dropZoneElement.addEventListener("dragover", (e) => {
|
||||
e.preventDefault();
|
||||
dropZoneElement.classList.add("drop-zone--over");
|
||||
});
|
||||
|
||||
["dragleave", "dragend"].forEach((type) => {
|
||||
dropZoneElement.addEventListener(type, (e) => {
|
||||
dropZoneElement.classList.remove("drop-zone--over");
|
||||
});
|
||||
});
|
||||
|
||||
dropZoneElement.addEventListener("drop", (e) => {
|
||||
e.preventDefault();
|
||||
|
||||
if (e.dataTransfer.files.length) {
|
||||
inputElement.files = e.dataTransfer.files;
|
||||
}
|
||||
|
||||
dropZoneElement.classList.remove("drop-zone--over");
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
<body>
|
||||
{% endblock %}
|
|
@ -0,0 +1,39 @@
|
|||
from flask import (
|
||||
Blueprint, flash, g, redirect, render_template, request, session, url_for
|
||||
)
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
from auth import login_required
|
||||
|
||||
from config import CONFIG
|
||||
from create_db import User, Card
|
||||
|
||||
import nextcloud_client
|
||||
|
||||
bp = Blueprint('upload', __name__, url_prefix='/upload')
|
||||
|
||||
engine = create_engine(CONFIG['DB_CONNECTION'])
|
||||
dbsessionmaker = sessionmaker(bind=engine)
|
||||
dbsession = dbsessionmaker()
|
||||
|
||||
@bp.route("/", methods=("GET", "POST"))
|
||||
def index():
|
||||
return render_template("menu/upload.html")
|
||||
|
||||
|
||||
@bp.route('/uploader', methods = ['GET', 'POST'])
|
||||
def upload_file():
|
||||
print("heyy")
|
||||
if request.method == 'POST':
|
||||
#flask gets the file
|
||||
upload = request.files["file"]
|
||||
print("hello")
|
||||
|
||||
#upload to nc
|
||||
#get public link
|
||||
|
||||
#update db
|
||||
#predpostavlja title, ir, owner_id, item_location
|
||||
#card = Card(title=name, interest_rate=-1.0, owner_id=1, item_location=public_link)
|
||||
#dbsession.add(card)
|
||||
#dbsession.commit()
|
Loading…
Reference in New Issue