def login_page():
    if request.method == 'GET':
        return render_template('login.html')
    elif request.method == 'POST':
        username = request.form["username"]
        password = request.form["password"]
        obje = forms.ShowMe()
        cursor=obje.Check_existing_user(username)
        if len(cursor) != 1:
            flash("Warning!")
            #flash(len(cursor))
            #flash(cursor[0][1]])
            flash('Username or password is wrong')
            return redirect(url_for("login_page"))
        else:
            if not hasher.verify(password, cursor[0][1]):
                flash("Warning!")
                flash('Username or password is wrong!')
                return redirect(url_for("login_page"))
            else:
                #flash("Success!")
                #flash("You have already logged in successfully!")
                user = get_user_2(cursor[0][0], cursor[0][1])
                login_user(user, remember=True)
                next_page = request.args.get("next", url_for("my_profile_page"))
                return redirect(next_page)
def about_page(user_key):
    obje = forms.ShowMe()
    if request.method == 'POST':
        processAdd = request.form.get('buttonName')
        processUpdate = request.form.get('buttonName')
        processDelete = request.form.get('buttonName')
        if processAdd == "add":
            return redirect(url_for("about_adding_page"))
        elif processUpdate == "update":
            return redirect(url_for('about_update_page'))
        elif processDelete == "delete":
            obje.About_delete(current_user.username)
            cursor = obje.About_key(current_user.username)
            return render_template('about.html',cursor=cursor, username=current_user.username, currentuser=current_user.username)
    cursor=obje.About_key(user_key)
    return render_template('about.html', cursor=cursor, username=user_key, currentuser=current_user.username)
def sign_up_page():
    if request.method == 'GET':
        return render_template('signup.html')
    elif request.method == 'POST':
        name= request.form["name"]
        surname= request.form["surname"]
        gender= request.form["gender"]
        username = request.form["username"]
        password = request.form["password"]
        obje = forms.ShowMe()
        cursor=obje.Check_username(username)
        #print(cursor)
        if cursor == False:
            flash("Warning!")
            flash("Please select a different username!")
            return redirect(url_for("sign_up_page"))
        else:
            obje.User_Add(name,surname,gender,username,hasher.hash(password))
        flash("Info!")
        flash("You have crated your account, please login!")
        return redirect(url_for("my_profile_page"))
def about_adding_page():
    obje = forms.ShowMe()
    if request.method == 'GET':
        return render_template('add_about.html')
    elif request.method == 'POST':
        username = current_user.username
        info = request.form["about"]
        city = request.form["city"]
        email = request.form["email"]
        uni = request.form["uni"]
        tel = request.form["tel"]
        cursor=obje.Check_about(username)
        if cursor == False:
            flash("Warning!")
            flash("Already added about!")
            cursor = obje.About_key(current_user.username)
            return redirect(url_for('about_page', user_key=current_user.username ))
        else:
            obje.About_add(username,info,city,email,uni,tel)
            #flash("You have updated about!")
            cursor = obje.About_key(current_user.username)
            return redirect(url_for('about_page', user_key=current_user.username ))
    return render_template('add_about.html')
def my_profile_page():
    obje = forms.ShowMe()
    cursor=obje.get_gender(current_user.username)
    return render_template('myprofile.html', username=current_user.username, cursor=cursor[0][0])
def graph_page():
    global url_global
    url = url_global
    obje = forms.ShowMe()
    try:
        myob = UrlSearch.UrlSearch(url)
        myob.fill_blanks()
    except:
        flash('Warning!')
        flash('Please check your URL!')
        return redirect(url_for('dashboard_page'))

    myob = UrlSearch.UrlSearch(url)
    myob.fill_blanks()

    #cursor=[]  #citations
    #for i in range(len(myob.all_citas)):
    #    cursor.append(myob.all_citas[i])
    if not os.path.exists('./static/pdf'):
        os.makedirs('./static/pdf')
    try:
        r = requests.get(myob.your_article['download_link'])
        try:
            os.remove('./static/pdf/your_paper.pdf') 
        except:
            print('x')
        with open('./static/pdf/your_paper.pdf', 'wb') as f:
            f.write(r.content)
    except:
        try:
            os.remove('./static/pdf/your_paper.pdf') 
        except:
            print('x')
    ######################################################################
    processURL = request.form.get('graph')
    if processURL:
        url_global = processURL
        return redirect(url_for('graph_page'))
    ######################################################################
    processDownloadCit = request.form.get('download_cit')
    if processDownloadCit:
        if not os.path.exists('./static/pdf'):
                os.makedirs('./static/pdf')
        try:
            '''try:
                cit = UrlSearch.UrlSearch(processDownloadCit)
                cit.fill_blanks()
            except:
                flash('Warning!')
                flash('Please check your URL!')
                return redirect(url_for('dashboard_page'))'''

            cit = UrlSearch.UrlSearch(processDownloadCit)
            cit.fill_blanks()
            r2 = requests.get(cit.your_article['download_link'])
            try:
                os.remove('./static/pdf/cit_paper.pdf') 
            except:
                print('x')
            with open('./static/pdf/cit_paper.pdf', 'wb') as f:
                f.write(r2.content)
        except:
            try:
                os.remove('./static/pdf/cit_paper.pdf') 
            except:
                print('x')
    ######################################################################
    processDownloadRef = request.form.get('download_ref')
    if processDownloadRef:
        if not os.path.exists('./static/pdf'):
                os.makedirs('./static/pdf')
        try:
            '''try:
                ref = UrlSearch.UrlSearch(processDownloadCit)
                ref.fill_blanks()
            except:
                flash('Warning!')
                flash('Please check your URL!')
                return redirect(url_for('dashboard_page'))'''

            ref = UrlSearch.UrlSearch(processDownloadRef)
            ref.fill_blanks()
            r3 = requests.get(ref.your_article['download_link'])
            try:
                os.remove('./static/pdf/ref_paper.pdf') 
            except:
                print('x')
            with open('./static/pdf/ref_paper.pdf', 'wb') as f:
                f.write(r3.content)
        except:
            try:
                os.remove('./static/pdf/ref_paper.pdf') 
            except:
                print('x')
    ######################################################################    
    if current_user.is_authenticated:
        processAdd = request.form.get('add')
        processDelete = request.form.get('delete')
        if processAdd:
            url_add = str(request.form["add"])
            url_add = url_add.split("SPLITSPLIT")
            obje.Bookmark_add(current_user.username, url_add[0],url_add[1])
            return redirect(url_for('graph_page'))
        elif processDelete:
            url_delete = str(request.form["delete"])
            obje.Bookmark_delete_graph(current_user.username,url_delete)
            return redirect(url_for('graph_page'))
        cursorBookmarks = obje.Bookmarks(current_user.username)
        return render_template("graph.html",cursor=myob.all_citas, your_paper=myob.your_article, references=myob.all_references, cursorBookmarks=cursorBookmarks, your_paper_link=url,processDownloadCit=processDownloadCit,processDownloadRef=processDownloadRef)
    return render_template("graph.html",cursor=myob.all_citas, your_paper=myob.your_article, references=myob.all_references, your_paper_link=url,processDownloadCit=processDownloadCit,processDownloadRef=processDownloadRef)