Compare commits

...

6 Commits

Author SHA1 Message Date
Kostanjevec 63f07e9b9f pw update, share logic 2022-06-13 14:30:28 +02:00
Kostanjevec 9007ddcdf5 share_id is now Text, so it can accept hash. 2022-06-13 14:27:14 +02:00
Kostanjevec 90cc19fc12 cleanup 2022-06-13 14:25:36 +02:00
Kostanjevec da4fa5c23f added share logic 2022-06-13 14:25:17 +02:00
Kostanjevec 0406fc6eab cleanup 2022-06-13 14:23:37 +02:00
Kostanjevec 106052c5a2 added share logic, created double-share problem 2022-06-13 14:22:46 +02:00
5 changed files with 38 additions and 20 deletions

20
app.py
View File

@ -1,6 +1,5 @@
import os import os
from flask import Flask, redirect, render_template, session, request, url_for from flask import Flask, redirect, render_template, session, request, url_for
from datetime import date
from sqlalchemy import create_engine from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker from sqlalchemy.orm import sessionmaker
@ -9,6 +8,7 @@ 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
from upload import bp as upload_bp from upload import bp as upload_bp
from share import share
from create_db import Card, Deck from create_db import Card, Deck
from config import CONFIG from config import CONFIG
@ -45,15 +45,6 @@ def create_app(test_config=None):
def index(): def index():
return 'redirecting' # meče skoz nazaj na login TODO return 'redirecting' # meče skoz nazaj na login TODO
@app.route('/deck/beta', methods=["GET", "POST"])
def deck2():
if request.method == 'POST':
pass
return render_template("deck/index.html")
#@login_required
@app.route('/deck/index', methods=["GET", "POST"]) @app.route('/deck/index', methods=["GET", "POST"])
def deck(): def deck():
if not 'user_id' in session: if not 'user_id' in session:
@ -80,10 +71,10 @@ def create_app(test_config=None):
# @TODO preveri, ali je card del trenutnega decka! # @TODO preveri, ali je card del trenutnega decka!
# Ali damo share? Potem nastavi na share in ponovi obrazec # Ali damo share? Potem nastavi na share in ponovi obrazec
share = request.form.get("share", None) share_request = request.form.get("share", None)
if share: if share_request:
print(share)
# @TODO logika za share! # @TODO logika za share!
share(submit_card, user_id)
# Če ne, gre za rate! # Če ne, gre za rate!
else: else:
@ -150,6 +141,7 @@ def create_app(test_config=None):
def match(): def match():
return "match" return "match"
#app.register_blueprint(bp) # ?? #app.register_blueprint(bp) # ??
app.register_blueprint(auth_bp) app.register_blueprint(auth_bp)
app.register_blueprint(deck_bp) app.register_blueprint(deck_bp)
@ -161,4 +153,4 @@ def create_app(test_config=None):
app = create_app() app = create_app()
app.run(debug=True, host="0.0.0.0") app.run(debug=True, host="0.0.0.0")

View File

@ -36,7 +36,7 @@ class Card(Base):
interest_rate = Column(Float) interest_rate = Column(Float)
item_location = Column(String(1024)) item_location = Column(String(1024))
last_review = Column(Text) last_review = Column(Text)
share_id = Column(Integer) #explain: 0 means not shared, otherwise increment from db and generate new cards for all relevant(tbd) users share_id = Column(Text) #explain: 0 means not shared, otherwise increment from db and generate new cards for all relevant(tbd) users
class Deck(Base): class Deck(Base):
__tablename__ = 'deck' __tablename__ = 'deck'

View File

@ -52,5 +52,4 @@ def index():
pass pass
return render_template("menu/menu.html", username=username) return render_template("menu/menu.html", username=username)

View File

@ -14,8 +14,7 @@ dbsession = dbsessionmaker()
nc = nextcloud_client.Client('https://obzorje.kompot.si') nc = nextcloud_client.Client('https://obzorje.kompot.si')
nc.login('gia', 'gia0000!') nc.login(CONFIG['NC_USER'],CONFIG['NC_PASSWORD'])
l = nc.list("/GIA CLOUD") l = nc.list("/GIA CLOUD")
@ -27,7 +26,7 @@ for item in l:
public_share = nc.share_file_with_link("/GIA CLOUD/"+name) public_share = nc.share_file_with_link("/GIA CLOUD/"+name)
public_link = public_share.get_link()+"/download/"+name public_link = public_share.get_link()+"/download/"+name
card = Card(title=name, interest_rate=-1.0, owner_id=1, item_location=public_link, last_review=None, share_id=0) card = Card(title=name, interest_rate=-1.0, owner_id=1, item_location=public_link, last_review=None, share_id="0")
dbsession.add(card) dbsession.add(card)
dbsession.commit() dbsession.commit()

28
share.py 100644
View File

@ -0,0 +1,28 @@
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from config import CONFIG
from create_db import User, Card
from hashlib import md5
engine = create_engine(CONFIG['DB_CONNECTION'])
dbsessionmaker = sessionmaker(bind=engine)
dbsession = dbsessionmaker()
def share(card, user_id):
print(card.share_id, card.id)
#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()
print("hash: ", h)
card.share_id = h
# all users
users = dbsession.query(User).filter(User.id != user_id).all()
for user in users:
print("hey, ", user.id)
#TODO skip če že ima ta card v db.
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.commit()