2023-04-08 23:43:52 +02:00
|
|
|
from flask import (
|
|
|
|
Blueprint, render_template, request, session, flash
|
|
|
|
)
|
2023-08-27 18:52:59 +02:00
|
|
|
from create_db import Card, get_session, get_engine
|
|
|
|
from link_handler import check_link
|
|
|
|
from werkzeug.utils import secure_filename
|
|
|
|
import tempfile
|
|
|
|
import os
|
2023-04-08 23:43:52 +02:00
|
|
|
|
|
|
|
|
|
|
|
bp = Blueprint('import_link', __name__, url_prefix='/import_link')
|
|
|
|
|
|
|
|
|
|
|
|
@bp.route("/", methods=["GET", "POST"])
|
|
|
|
def index():
|
|
|
|
username = session["username"]
|
|
|
|
return render_template("import_link.html", username=username)
|
|
|
|
|
|
|
|
|
|
|
|
@bp.route('/import', methods = ('GET', 'POST'))
|
|
|
|
def import_link():
|
|
|
|
username = session['username']
|
|
|
|
user_id = session['user_id']
|
|
|
|
if request.method == 'POST':
|
2023-08-27 18:52:59 +02:00
|
|
|
import_type = request.form.get("import_txt")
|
|
|
|
print("###########################", import_type)
|
2023-04-08 23:43:52 +02:00
|
|
|
if import_type == "import_txt":
|
2023-08-27 18:52:59 +02:00
|
|
|
return render_template("import_txt.html", user_id=user_id, username=username)
|
2023-04-08 23:43:52 +02:00
|
|
|
else:
|
2023-08-27 18:52:59 +02:00
|
|
|
link = request.form.get("import_link", False)
|
|
|
|
commit_link(link=link, user_id=user_id)
|
2023-04-08 23:43:52 +02:00
|
|
|
|
|
|
|
return render_template("import_link.html", user_id=user_id, username=username)
|
|
|
|
|
|
|
|
|
|
|
|
def commit_link(link, user_id):
|
2023-08-27 18:52:59 +02:00
|
|
|
|
|
|
|
Session = get_session()
|
|
|
|
with Session() as dbsession:
|
|
|
|
existing_link = dbsession.query(Card).filter_by(owner_id=user_id, item_location=link).first()
|
|
|
|
if existing_link:
|
|
|
|
print(f"{link} has already been imported.")
|
|
|
|
flash(f"{link} has already been imported.","error")
|
|
|
|
return -1
|
|
|
|
|
|
|
|
link_check = check_link(link)
|
|
|
|
if link_check != 1:
|
|
|
|
print(link, 'is not ok')
|
|
|
|
flash(f"{link}, 'is not ok', {link_check}", "rror")
|
|
|
|
return -1
|
|
|
|
else:
|
|
|
|
print(link, 'is ok')
|
|
|
|
#add card
|
|
|
|
#TODO ni razlike med title in vsebino urlja ??
|
|
|
|
card = Card(title=link,
|
|
|
|
interest_rate=-1.0,
|
|
|
|
owner_id=user_id,
|
|
|
|
item_location=link,
|
|
|
|
last_review=None,
|
|
|
|
card_type="URL",
|
|
|
|
share_id=0)
|
|
|
|
dbsession.add(card)
|
|
|
|
dbsession.commit()
|
|
|
|
|
|
|
|
flash(f"{card.title} imported successfully")
|
|
|
|
dbsession.close()
|
|
|
|
|
|
|
|
get_engine().disolve()
|
|
|
|
return 1
|
|
|
|
|
|
|
|
@bp.route('/import_txt', methods = ('GET', 'POST'))
|
|
|
|
def import_link_from_txt():
|
|
|
|
user_id = session["user_id"]
|
|
|
|
username = session["username"]
|
2023-04-08 23:43:52 +02:00
|
|
|
|
2023-08-27 18:52:59 +02:00
|
|
|
#@TODO ta forloop bi lahko flashal postopoma
|
|
|
|
for txt_file in request.files.getlist("file"):
|
|
|
|
filename = secure_filename(txt_file.filename)
|
|
|
|
# Is there really a file?
|
|
|
|
if not filename:
|
|
|
|
flash('There is no file. Try again?')
|
|
|
|
return render_template("upload.html", username=username)
|
|
|
|
|
|
|
|
lines = txt_file.readlines()
|
|
|
|
links = [line.decode("UTF-8") for line in lines]
|
|
|
|
import_list_of_links(links, user_id)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return render_template("import_link.html", user_id=user_id, username=username)
|
|
|
|
|
2023-04-08 23:43:52 +02:00
|
|
|
|
|
|
|
|
|
|
|
def import_list_of_links(list_of_links, user_id):
|
|
|
|
#TODO nekak bi bilo dobro, da pokaže kateri so failali....
|
|
|
|
for link in list_of_links:
|
2023-08-27 18:52:59 +02:00
|
|
|
commit_link(link.strip(" ").strip("\n"), user_id)
|