ventilaar
/
twitter_zuil
Archived
1
Fork 0

mostly works but need to figure out message locking in the database

database changed again, and scripts also
This commit is contained in:
ventilaar 2020-10-31 19:35:30 +01:00
parent bb29d6a2f3
commit 93a1aac507
17 changed files with 213 additions and 38 deletions

View File

@ -1 +1 @@
<mxfile host="Electron" modified="2020-10-20T11:00:03.872Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.6.2 Chrome/83.0.4103.122 Electron/9.2.0 Safari/537.36" etag="ZBDpQQ2WmE6KWBS7qbMe" version="13.6.2" type="device"><diagram id="JNM6W-7HF5Xyfk11UdC0" name="Page-1">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</diagram></mxfile> <mxfile host="Electron" modified="2020-10-31T16:41:46.595Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.6.2 Chrome/83.0.4103.122 Electron/9.2.0 Safari/537.36" etag="cq-ppZPf8VK1-7qTTUK_" version="13.6.2" type="device"><diagram id="JNM6W-7HF5Xyfk11UdC0" name="Page-1">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</diagram></mxfile>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 280 KiB

After

Width:  |  Height:  |  Size: 262 KiB

View File

@ -7,7 +7,9 @@ CREATE TABLE moderators(
moderatorid serial PRIMARY KEY, moderatorid serial PRIMARY KEY,
naam varchar(64) NOT NULL, naam varchar(64) NOT NULL,
hash varchar(255), hash varchar(255),
maylogin boolean NOT NULL,
lastseen timestamp lastseen timestamp
); );
CREATE TABLE twitterberichten( CREATE TABLE twitterberichten(
@ -23,12 +25,10 @@ CREATE TABLE statuses(
CREATE TABLE berichten( CREATE TABLE berichten(
berichtid serial PRIMARY KEY, berichtid serial PRIMARY KEY,
bericht varchar(140) NOT NULL, bericht varchar(140) NOT NULL,
datumontvangen date NOT NULL, datumontvangen timestamp NOT NULL,
tijdontvangen time NOT NULL,
naamposter varchar(32), naamposter varchar(32),
moderatorid int, moderatorid int,
datumgekeurd date, datumgekeurd timestamp,
tijdgekeurd time,
statusid int NOT NULL, statusid int NOT NULL,
locatieid int NOT NULL, locatieid int NOT NULL,
twitterid bigint, twitterid bigint,
@ -39,7 +39,7 @@ CREATE TABLE berichten(
); );
-- administrator:password -- administrator:password
INSERT INTO moderators(naam, hash) VALUES ('administrator', 'a3eec2461d6637164d836db2c9f19795357c80c1420ccc13386839ae1104b53a'); INSERT INTO moderators(naam, hash, maylogin) VALUES ('administrator', 'a3eec2461d6637164d836db2c9f19795357c80c1420ccc13386839ae1104b53a', true);
INSERT INTO locaties(locatieid, naam) VALUES ('1', 'Utrecht Centraal'); INSERT INTO locaties(locatieid, naam) VALUES ('1', 'Utrecht Centraal');
INSERT INTO locaties(locatieid, naam) VALUES ('2', 'Amsterdam Centraal'); INSERT INTO locaties(locatieid, naam) VALUES ('2', 'Amsterdam Centraal');
INSERT INTO locaties(locatieid, naam) VALUES ('3', 'Rotterdam Centraal'); INSERT INTO locaties(locatieid, naam) VALUES ('3', 'Rotterdam Centraal');

View File

@ -1 +1 @@
<mxfile host="Electron" modified="2020-10-20T10:57:25.099Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.6.2 Chrome/83.0.4103.122 Electron/9.2.0 Safari/537.36" etag="BMyJVbrVZ4EPQjX7XkGy" version="13.6.2" type="device"><diagram id="JNM6W-7HF5Xyfk11UdC0" name="Page-1">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</diagram></mxfile> <mxfile host="Electron" modified="2020-10-31T16:43:03.934Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.6.2 Chrome/83.0.4103.122 Electron/9.2.0 Safari/537.36" etag="T7l8-jizCmwrtWpbLF4g" version="13.6.2" type="device"><diagram id="JNM6W-7HF5Xyfk11UdC0" name="Page-1">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</diagram></mxfile>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 406 KiB

After

Width:  |  Height:  |  Size: 394 KiB

View File

@ -1 +1 @@
<mxfile host="Electron" modified="2020-10-20T10:58:22.189Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.6.2 Chrome/83.0.4103.122 Electron/9.2.0 Safari/537.36" etag="eqiQvSHtfg_PLV3qvBa5" version="13.6.2" type="device"><diagram id="JNM6W-7HF5Xyfk11UdC0" name="Page-1">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</diagram></mxfile> <mxfile host="Electron" modified="2020-10-31T16:43:41.405Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.6.2 Chrome/83.0.4103.122 Electron/9.2.0 Safari/537.36" etag="X0UP-HxUBg-bzk5Q34ap" version="13.6.2" type="device"><diagram id="JNM6W-7HF5Xyfk11UdC0" name="Page-1">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</diagram></mxfile>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 267 KiB

After

Width:  |  Height:  |  Size: 254 KiB

View File

@ -10,12 +10,11 @@ locatieid = 1
def insertdatabase(bericht, naamposter): def insertdatabase(bericht, naamposter):
time = datetime.datetime.utcnow().strftime("%H:%M:%S") date = datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S")
date = datetime.datetime.utcnow().strftime("%Y-%m-%d")
try: try:
QUERY = 'INSERT INTO berichten(bericht, datumontvangen, tijdontvangen, locatieid, naamposter, statusid) VALUES (%s, %s, %s, %s, %s, %s)' QUERY = 'INSERT INTO berichten(bericht, datumontvangen, locatieid, naamposter, statusid) VALUES (%s, %s, %s, %s, %s)'
DATA = (bericht, date, time, locatieid, naamposter, '1') DATA = (bericht, date, locatieid, naamposter, '1')
cur.execute(QUERY, DATA) cur.execute(QUERY, DATA)
conn.commit() conn.commit()
return True return True

View File

@ -55,7 +55,7 @@ def newaccount():
""" """
hashedpass = hashlib.sha256(password1.encode('UTF-8') + 'saltandpepper'.encode('UTF-8')).hexdigest() hashedpass = hashlib.sha256(password1.encode('UTF-8') + 'saltandpepper'.encode('UTF-8')).hexdigest()
try: try:
cur.execute("INSERT INTO moderators(naam, hash) VALUES (%s, %s)", (username, hashedpass)) cur.execute("INSERT INTO moderators(naam, hash, maylogin) VALUES (%s, %s, %s)", (username, hashedpass, 'true'))
conn.commit() conn.commit()
print('Account aangemaakt!') print('Account aangemaakt!')
return True return True
@ -113,9 +113,9 @@ def getmessage(moderatorid):
""" """
vraagt de outste bericht op en zet het bericht gelijk op moderator lock(2) vraagt de outste bericht op en zet het bericht gelijk op moderator lock(2)
returnt een tuple met de oudste bericht met de status 1(pending moderation) returnt een tuple met de oudste bericht met de status 1(pending moderation)
de tuple ziet er alsvolgt uit: (berichtid int, berichtinhoud str, datum date, tijd time, naam str) de tuple ziet er alsvolgt uit: (berichtid int, berichtinhoud str, datum date, naam str)
""" """
cur.execute("SELECT berichtid, bericht, datumontvangen, tijdontvangen, naamposter FROM berichten WHERE statusid = 1 ORDER BY datumontvangen, tijdontvangen LIMIT 1") cur.execute("SELECT berichtid, bericht, datumontvangen, naamposter FROM berichten WHERE statusid = 1 ORDER BY datumontvangen LIMIT 1")
gottuple = cur.fetchone() gottuple = cur.fetchone()
@ -133,22 +133,20 @@ def unlockmessage(berichtid):
def acceptmessage(berichtid, moderatorid): def acceptmessage(berichtid, moderatorid):
time = datetime.datetime.utcnow().strftime("%H:%M:%S") date = datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S")
date = datetime.datetime.utcnow().strftime("%Y-%m-%d")
QUERY = "UPDATE berichten SET statusid = 4, datumgekeurd = (%s), tijdgekeurd = (%s), moderatorid = (%s) WHERE berichtid = (%s)" QUERY = "UPDATE berichten SET statusid = 4, datumgekeurd = (%s), moderatorid = (%s) WHERE berichtid = (%s)"
DATA = (date, time, moderatorid, berichtid) DATA = (date, moderatorid, berichtid)
cur.execute(QUERY, DATA) cur.execute(QUERY, DATA)
conn.commit() conn.commit()
return True return True
def rejectmessage(berichtid, moderatorid): def rejectmessage(berichtid, moderatorid):
time = datetime.datetime.utcnow().strftime("%H:%M:%S") date = datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S")
date = datetime.datetime.utcnow().strftime("%Y-%m-%d")
QUERY = "UPDATE berichten SET statusid = 3, datumgekeurd = (%s), tijdgekeurd = (%s), moderatorid = (%s) WHERE berichtid = (%s)" QUERY = "UPDATE berichten SET statusid = 3, datumgekeurd = (%s), moderatorid = (%s) WHERE berichtid = (%s)"
DATA = (date, time, moderatorid, berichtid) DATA = (date, moderatorid, berichtid)
cur.execute(QUERY, DATA) cur.execute(QUERY, DATA)
conn.commit() conn.commit()
return True return True
@ -174,7 +172,7 @@ def moderateloop(moderatorid):
print('Er zijn geen berichten meer om te weergeven, probeer het later opnieuw') print('Er zijn geen berichten meer om te weergeven, probeer het later opnieuw')
return True return True
print("Op " + str(bericht[2]) + " " + str(bericht[3]) + " heeft " + str(bericht[4]) + " een bericht achtergelaten") print("Op " + str(bericht[2]) + " heeft " + str(bericht[3]) + " een bericht achtergelaten")
print(str(bericht[0]) + " " + str(bericht[1])) print(str(bericht[0]) + " " + str(bericht[1]))
while exitvar != True: while exitvar != True:
@ -295,6 +293,9 @@ def login():
elif hashedpass != sqlreturn[2]: elif hashedpass != sqlreturn[2]:
print('Wachtwoord onjuist') print('Wachtwoord onjuist')
return False return False
elif sqlreturn[3] != True:
print('account mag niet inloggen')
return False
menu(sqlreturn[0], sqlreturn[1]) menu(sqlreturn[0], sqlreturn[1])

View File

@ -20,6 +20,9 @@ def func_check_login(uname, pword):
elif hashedpass != sqlreturn[2]: elif hashedpass != sqlreturn[2]:
flash('Uw wachtwoord is fout') flash('Uw wachtwoord is fout')
return False return False
elif sqlreturn[3] != True:
flash('Dit account mag niet meer inloggen')
return False
else: else:
return True return True
@ -30,7 +33,6 @@ def func_listmoderators(limit, page):
countmoderators = cur.fetchone() countmoderators = cur.fetchone()
return (allmoderators, countmoderators) return (allmoderators, countmoderators)
def func_addmoderator(uname, pword, pword2): def func_addmoderator(uname, pword, pword2):
username = uname.lower() username = uname.lower()
password = pword password = pword
@ -55,7 +57,7 @@ def func_addmoderator(uname, pword, pword2):
if sqlreturn == None: if sqlreturn == None:
hashedpass = hashlib.sha256(password.encode('UTF-8') + 'saltandpepper'.encode('UTF-8')).hexdigest() hashedpass = hashlib.sha256(password.encode('UTF-8') + 'saltandpepper'.encode('UTF-8')).hexdigest()
cur.execute("INSERT INTO moderators(naam, hash) VALUES (%s, %s)", (username, hashedpass)) cur.execute("INSERT INTO moderators(naam, hash, maylogin) VALUES (%s, %s, 'true')", (username, hashedpass))
conn.commit() conn.commit()
flash('Account voor ' + username + ' aangemaakt!') flash('Account voor ' + username + ' aangemaakt!')
return True return True
@ -71,12 +73,47 @@ def func_removemoderator(moderatorid):
return True return True
except: except:
conn.rollback() conn.rollback()
flash('Probleem met het verwijderen van account! Heeft de account berichten gemodereerd?') try:
return False cur.execute('UPDATE moderators SET maylogin = false WHERE moderatorid = (%s)', [moderatorid])
conn.commit()
flash('Account kan niet verwijdert worden, account mag niet meer inloggen')
return True
except:
conn.rollback()
flash('Probleem opgetreden bij het aanpassen van moderator account')
return False
def publish_twitter(berichtid):
def func_listberichten(limit, page):
cur.execute('SELECT berichten.berichtid, berichten.bericht, berichten.datumontvangen, berichten.naamposter, '
'berichten.datumgekeurd, locaties.naam, moderators.naam, statuses.status, berichten.twitterid '
'FROM berichten '
'LEFT OUTER JOIN statuses ON berichten.statusid = statuses.statusid '
'LEFT OUTER JOIN locaties ON berichten.locatieid = locaties.locatieid '
'LEFT OUTER JOIN moderators ON berichten.moderatorid = moderators.moderatorid '
'ORDER BY datumontvangen DESC LIMIT (%s) OFFSET (%s)', (limit, page))
allberichten = cur.fetchall()
cur.execute('SELECT COUNT(*) FROM berichten')
countberichten = cur.fetchone()
return (allberichten, countberichten)
def func_querybericht(berichtid):
cur.execute('SELECT berichten.berichtid, berichten.bericht, berichten.datumontvangen, berichten.naamposter, '
'berichten.datumgekeurd, locaties.naam, moderators.naam, statuses.status, berichten.twitterid '
'FROM berichten '
'LEFT OUTER JOIN statuses ON berichten.statusid = statuses.statusid '
'LEFT OUTER JOIN locaties ON berichten.locatieid = locaties.locatieid '
'LEFT OUTER JOIN moderators ON berichten.moderatorid = moderators.moderatorid '
'WHERE berichtid = (%s)', [berichtid])
return cur.fetchone()
def func_lockbericht(berichtid, moderatorid):
cur.execute('UPDATE berichten SET statusid = 2, moderatorid = (%s) WHERE berichtid = (%s)', (moderatorid, berichtid))
conn.commit()
return True return True
@app.route('/') @app.route('/')
def root(): def root():
return render_template('root.html') return render_template('root.html')
@ -88,7 +125,6 @@ def login():
session['username'] = request.form['uname'] session['username'] = request.form['uname']
return redirect(url_for('home')) return redirect(url_for('home'))
else: else:
flash('Er is een probleem bij het inloggen')
return render_template('login.html') return render_template('login.html')
else: else:
if 'username' in session: if 'username' in session:
@ -118,9 +154,11 @@ def moderators():
page = maxitems * pagenum page = maxitems * pagenum
moderators = func_listmoderators(maxitems, page)[0] listreturn = func_listmoderators(maxitems, page)
moderators = listreturn[0]
moderatorcount = listreturn[1][0]
return render_template('moderators.html', moderators=moderators) return render_template('moderators.html', moderators=moderators, moderatorcount=moderatorcount)
else: else:
flash('You are not logged in!') flash('You are not logged in!')
return redirect(url_for('login')) return redirect(url_for('login'))
@ -147,5 +185,39 @@ def listmoderators():
flash('You are not logged in!') flash('You are not logged in!')
return redirect(url_for('login')) return redirect(url_for('login'))
@app.route('/berichten')
def berichten():
if 'username' in session:
if request.args.get('maxitems'):
maxitems = int(request.args.get('maxitems'))
else:
maxitems = 10
if request.args.get('pagenum'):
pagenum = int(request.args.get('pagenum')) - 1
else:
pagenum = 0
page = maxitems * pagenum
listreturn = func_listberichten(maxitems, page)
berichten = listreturn[0]
berichtcount = listreturn[1][0]
return render_template('berichten.html', berichten=berichten, berichtcount=berichtcount)
else:
flash('You are not logged in!')
return redirect(url_for('login'))
@app.route('/bericht/<berichtid>')
def bericht(berichtid):
if 'username' in session:
bericht = func_querybericht(berichtid)
return render_template('bericht.html', bericht=bericht)
else:
flash('You are not logged in!')
return redirect(url_for('login'))
if __name__ == "__main__": if __name__ == "__main__":
app.run('0.0.0.0', debug=True) app.run('0.0.0.0', debug=True)

36
templates/bericht.html Normal file
View File

@ -0,0 +1,36 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Home</title>
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}"/>
</head>
<body>
{% include 'navbar_template.html' %}
{% include 'flash_template.html' %}
<h1>Bericht ID {{ berichtid }}</h1>
<table style="width:100%">
<tr>
<th>Bericht ID</th>
<th>Naam</th>
<th>Bericht inhoud</th>
<th>Geplaatst in</th>
<th>Ontvangen op</th>
<th>Status bericht</th>
<th>Gekeurd op</th>
<th>Moderator</th>
<th>Twitter ID</th>
</tr>
<tr>
<th>{{ bericht[0] }}</th>
<th>{{ bericht[3] }}</th>
<th>{{ bericht[1] }}</th>
<th>{{ bericht[5] }}</th>
<th>{{ bericht[2] }}</th>
<th>{{ bericht[7] }}</th>
<th>{{ bericht[4] }}</th>
<th>{{ bericht[6] }}</th>
<th>{{ bericht[8] }}</th>
</tr>
</body>
</html>

59
templates/berichten.html Normal file
View File

@ -0,0 +1,59 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Berichten</title>
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}"/>
</head>
<body>
{% include 'navbar_template.html' %}
{% include 'flash_template.html' %}
<h1>List of berichten</h1>
<p>Er zijn momenteel {{ berichtcount }} berichten in het systeem</p>
<table style="width:100%">
<tr>
<th>Bericht ID</th>
<th>Naam</th>
<th>Bericht inhoud</th>
<th>Geplaatst in</th>
<th>Ontvangen op</th>
<th>Status bericht</th>
<th>Gekeurd op</th>
<th>Moderator</th>
<th>Twitter ID</th>
</tr>
{% for row in berichten %}
<tr>
<th><a href="/bericht/{{ row[0] }}">{{ row[0] }}</a></th>
<th>{{ row[3] }}</th>
<th>{{ row[1] }}</th>
<th>{{ row[5] }}</th>
<th>{{ row[2] }}</th>
<th>{{ row[7] }}</th>
<th>{{ row[4] }}</th>
<th>{{ row[6] }}</th>
<th>{{ row[8] }}</th>
</tr>
{% endfor %}
</table>
<form>
<label for="maxitems">Max items in table:</label>
<select name="maxitems" id="maxitems">
<option value="10">10</option>
<option value="20">20</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
<label for="pagenum">Table page:</label>
<select name="pagenum" id="pagenum">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
<button type="submit">Refresh table</button>
</form>
</body>
</html>

View File

@ -3,11 +3,11 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Home</title> <title>Home</title>
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}"/>
</head> </head>
<body> <body>
{% include 'navbar_template.html' %}
{% include 'flash_template.html' %} {% include 'flash_template.html' %}
<h1>Hello {{ username }}</h1> <h1>Hello {{ username }}</h1>
<p>Click <a href="login">here</a> to logout</p>
<p>Click <a href="moderators">here</a> to edit moderators in the system</p>
</body> </body>
</html> </html>

View File

@ -3,8 +3,10 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Login</title> <title>Login</title>
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}"/>
</head> </head>
<body> <body>
{% include 'navbar_template.html' %}
{% include 'flash_template.html' %} {% include 'flash_template.html' %}
<h1>Please login to access home page</h1> <h1>Please login to access home page</h1>
<form method="POST"> <form method="POST">

View File

@ -9,11 +9,13 @@
{% include 'navbar_template.html' %} {% include 'navbar_template.html' %}
{% include 'flash_template.html' %} {% include 'flash_template.html' %}
<h1>List of moderators</h1> <h1>List of moderators</h1>
<table> <p>Er zijn momenteel {{ moderatorcount }} moderators in het systeem</p>
<table style="width:100%">
<tr> <tr>
<th>Moderator ID</th> <th>Moderator ID</th>
<th>Username</th> <th>Username</th>
<th>Hashed Password</th> <th>Hashed Password</th>
<th>May login</th>
<th>Last seen</th> <th>Last seen</th>
</tr> </tr>
{% for row in moderators %} {% for row in moderators %}
@ -22,6 +24,7 @@
<th>{{ row[1] }}</th> <th>{{ row[1] }}</th>
<th>{{ row[2] }}</th> <th>{{ row[2] }}</th>
<th>{{ row[3] }}</th> <th>{{ row[3] }}</th>
<th>{{ row[4] }}</th>
<th> <th>
<form method="POST" action="/moderators/removemoderator"> <form method="POST" action="/moderators/removemoderator">
<button type="submit" name="delete" value="{{ row[0] }}">Delete</button> <button type="submit" name="delete" value="{{ row[0] }}">Delete</button>

View File

@ -1,5 +1,7 @@
<ul> <ul>
<li><a href="/home">Home</a></li> <li><a href="/home">Home</a></li>
<li><a href="/moderators">Moderators</a></li> <li><a href="/moderators">Moderators</a></li>
<li><a href="/berichten">Berichten</a></li> <li><a href="/berichten">Berichten</a></li>
<li><a href="/login" style="float:right;">Login/Logout</a></li>
</ul> </ul>

View File

@ -3,10 +3,11 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Root</title> <title>Root</title>
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}"/>
</head> </head>
<body> <body>
{% include 'navbar_template.html' %}
{% include 'flash_template.html' %}
<h1>Welcome to the index page!</h1> <h1>Welcome to the index page!</h1>
<p>Click <a href="login">here</a> for the login page</p>
<p>Click <a href="home">here</a> for the home page</p>
</body> </body>
</html> </html>