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
from flask import Flask, redirect, render_template, session, request, url_for
from datetime import date
from sqlalchemy import create_engine
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 menu import bp as menu_bp
from upload import bp as upload_bp
from share import share
from create_db import Card, Deck
from config import CONFIG
@ -45,15 +45,6 @@ def create_app(test_config=None):
def index():
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"])
def deck():
if not 'user_id' in session:
@ -80,10 +71,10 @@ def create_app(test_config=None):
# @TODO preveri, ali je card del trenutnega decka!
# Ali damo share? Potem nastavi na share in ponovi obrazec
share = request.form.get("share", None)
if share:
print(share)
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:
@ -150,6 +141,7 @@ def create_app(test_config=None):
def match():
return "match"
#app.register_blueprint(bp) # ??
app.register_blueprint(auth_bp)
app.register_blueprint(deck_bp)
@ -161,4 +153,4 @@ def create_app(test_config=None):
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)
item_location = Column(String(1024))
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):
__tablename__ = 'deck'

View File

@ -52,5 +52,4 @@ def index():
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.login('gia', 'gia0000!')
nc.login(CONFIG['NC_USER'],CONFIG['NC_PASSWORD'])
l = nc.list("/GIA CLOUD")
@ -27,7 +26,7 @@ for item in l:
public_share = nc.share_file_with_link("/GIA CLOUD/"+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.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()