Skip to content
Snippets Groups Projects
userprofile.py 2.11 KiB
Newer Older
  • Learn to ignore specific revisions
  • import sqlite3
    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):
        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" style="color:white">logout</a>)' #This is the loginbar
        except:
            return redirect("/user/login") #If user is not logged in redirect him to the login page
    
        with sqlite3.connect('db/urls.db') as conn:
            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()
                for entries in entriesList: #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>\n<td>" + entries[0] + "</td>\n<td>" + entries[1] + '</td>\n<td>' + calls + '</td>\n<td><a id="red" href="/user/delete?link=' + escape(entries[1]) + '">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 = 'you have no shorten links.' #If user has no shorten links make this message
            except:
                print(Exception)
                abort(500) #Shouldn't happen, 500 means internal server error
            return render_template('editEntries.html', content=response, loginbar=loginbar, cookieNotice=cookieNotice) #Put the table and the login div inside the template and server it to the user