Newer
Older
from flask import redirect, abort, render_template
from html import escape #This is used to escape characters, if they are send in the url
def userProfile(request, cookieNotice, s, pageNumber, url_scheme):
backButton = 0
nextButton = 0
lenEntries = 0
try:
userID = s.loads(request.cookies.get('userID')) #Get the userid from the cookie
loginbar = "Hello " + s.loads(request.cookies.get('username')) + ' (<a href="/user/logout" >logout</a>)' #This is the loginbar
except:
return redirect("/user/login") #If user is not logged in redirect him to the login page
try:
pageNumber = int(pageNumber)
offset = pageNumber * 25
except:
abort(404)
cursor = conn.cursor()
res = cursor.execute('SELECT LONG_URL, SHORT_URL FROM WEB_URL WHERE USERNAME=?', [userID]) #Get all entries from the database, that are created by this user
response = '<table id="t01">\n<tr>\n<th>Long URL</th>\n<th>Short URL</th>\n<th>Views</th>\n<th>Action</th>\n</tr>\n' #This is the layout of the table
try:
entriesList = res.fetchall()
lenEntries = len(entriesList)
for entries in entriesList[offset:][:25]: #for every entrie in the database add a line to the table
cursor2 = conn.cursor()
try:
calls = str(cursor2.execute('SELECT CALLS FROM ANALYTICS WHERE SHORT_URL=?', [entries[1]]).fetchone()[0])
except:
calls = "0"
response = response + "<tr id=tr_" + str(idCounter) + ">\n<td>" + entries[0] + "</td>\n<td><a href=\"" + url_scheme + "://" + entries[1] + '">' + entries[1] + '</a></td>\n<td>' + calls + '</td>\n<td><a id="red" href="javascript:deleteLink(\'' + escape(entries[1].replace("'", "\\'")) + '\', \'tr_' + str(idCounter) + '\')">delete</a> <a href="#" id="dialog-link" onclick="buttonListener(\'' + entries[1] + '\', this)">QR</a></tr>\n'
response = response + "</table>" #Close the table
if(len(entriesList) == 0): response = '<h2>you have no shorten links.</h2>' #If user has no shorten links make this message
elif(pageNumber > 0): backButton = "/user/links" + str(pageNumber - 1)
if(offset + 25 < lenEntries): nextButton = "/user/links" + str(pageNumber + 1)
except:
print(Exception)
abort(500) #Shouldn't happen, 500 means internal server error
return render_template('editEntries.html', content=response, loginbar=loginbar, cookieNotice=cookieNotice, backButton=backButton, nextButton=nextButton) #Put the table and the login div inside the template and server it to the user
if (__name__ == "__main__"):
print("This file is not made fore direct call, please run the main.py")
exit()