diff --git a/Tweeder.py b/Tweeder.py index 1ce4d30..ebe0582 100644 --- a/Tweeder.py +++ b/Tweeder.py @@ -1,5 +1,5 @@ from flask import Flask, render_template, request, redirect, url_for, session, make_response, abort -from backend import accounts, timeline, files +from backend import accounts, timeline, files, messages app = Flask(__name__) app.secret_key = "eVZ4EmVK70iETb03KqDAXV5sBHb3T73t" @@ -215,6 +215,7 @@ def like_post(post_id): elif request.method == "GET": pass + @app.route("/unlike/", methods=["GET", "POST"]) def unlike_post(post_id): if 'username' not in session.keys(): return redirect(url_for('login')) @@ -245,5 +246,33 @@ def mentions(): posts=timeline.get_mentions(logged_in)) +@app.route("/messages", methods=["GET", "POST"]) +def messages_blank(): + logged_in = session['username'] if ('username' in session.keys()) else False + if 'username' not in session: return redirect(url_for('login')) + if request.method == "GET": + return render_template('messages.html', logged_in=logged_in) + elif request.method == "POST": + return redirect('/messages/'+request.form['messageuser']) + + +@app.route("/messages/", methods=["GET", "POST"]) +def messaging(user): + logged_in = session['username'] if ('username' in session.keys()) else False + if 'username' not in session: return redirect(url_for('login')) + if request.method == "GET": + return render_template( + "messages.html", + messaging=accounts.get_display_name(user), + messages=messages.get_messages(logged_in, user.lower()) + ) + elif request.method == "POST": + messages.send_message( + accounts.get_display_name(logged_in), + accounts.get_display_name(user), + request.form['message_content'] + ) + + if __name__ == '__main__': app.run(host="127.0.0.1", debug=True) diff --git a/backend/messages.py b/backend/messages.py index 8b6c4ab..d89dced 100644 --- a/backend/messages.py +++ b/backend/messages.py @@ -1,7 +1,7 @@ from pymongo import MongoClient from bson.objectid import ObjectId from backend import accounts -import datetime +import datetime, pymongo client = MongoClient() db = client.tweeder @@ -34,3 +34,22 @@ def send_message(msg_from, msg_to, msg_content): } messages_db.insert_one(message) + + +def get_messages(user1, user2): + user1_id = accounts_db.find_one({"username": user1.lower()})['_id'] + user2_id = accounts_db.find_one({"username": user2.lower()})['_id'] + + messages = messages_db.find( + {"$or": [ + { + "from": user1_id, + "to" : user2_id + }, + { + "from": user2_id, + "to" : user1_id + } + ]} + ).sort('timeSent', pymongo.DESCENDING) + return messages diff --git a/templates/messages.html b/templates/messages.html new file mode 100644 index 0000000..3ac092c --- /dev/null +++ b/templates/messages.html @@ -0,0 +1,38 @@ +{% extends 'layout.html' %} +{% block nav_messages %}active{% endblock %} +{% block content %} +
+
+
+
+ + +
+
+
+ + {% if messages %} + {% for message in messages %} +
+
{{ message.poster }} at {{ message.timePosted.strftime('%Y-%m-%d %-H:%M') }}
+
+ {{ message.content }} +
+
+ {% endfor %} + {% endif %} + + {% if messaging %} +
+ +
+ {% endif %} + +
+ +{% endblock %} \ No newline at end of file