diff --git a/Tweeder.py b/Tweeder.py index a4d4965..7f867ed 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" @@ -262,5 +262,35 @@ def editpost(post_id): return redirect('/view/'+str(post_id)) +@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", + logged_in=logged_in, + messaging=accounts.get_display_name(user.lower()), + messages=messages.get_messages(logged_in, user.lower()) + ) + elif request.method == "POST": + messages.send_message( + accounts.get_display_name(logged_in.lower()), + accounts.get_display_name(user.lower()), + request.form['message_content'] + ) + return redirect(request.referrer) + + if __name__ == '__main__': app.run(host="127.0.0.1", debug=True) diff --git a/backend/messages.py b/backend/messages.py new file mode 100644 index 0000000..e908e4b --- /dev/null +++ b/backend/messages.py @@ -0,0 +1,55 @@ +from pymongo import MongoClient +from bson.objectid import ObjectId +from backend import accounts +import datetime, pymongo + +client = MongoClient() +db = client.tweeder +accounts_db = db.accounts +messages_db = db.messages + + +def send_message(msg_from, msg_to, msg_content): + if type(msg_from) == str: + from_id = accounts.account_details(msg_from.lower())['_id'] + elif type(msg_from) == ObjectId: + from_id = msg_from + msg_from = accounts_db.find_one({'_id': from_id})['displayname'] + + if type(msg_to) == str: + to_id = accounts.account_details(msg_to.lower())['_id'] + elif type(msg_to) == ObjectId: + to_id = msg_to + msg_to = accounts_db.find_one({'_id': to_id})['displayname'] + + currentTimeDate = datetime.datetime.now() + + message = { + 'from': from_id, + 'to': to_id, + 'fromName': msg_from, + 'toName': msg_to, + 'content': msg_content, + 'timeSent': currentTimeDate + } + + 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.ASCENDING) + return messages diff --git a/templates/messages.html b/templates/messages.html new file mode 100644 index 0000000..c10dd97 --- /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.fromName }} at {{ message.timeSent.strftime('%Y-%m-%d %-H:%M') }}
+
+ {{ message.content }} +
+
+ {% endfor %} + {% endif %} + + {% if messaging %} +
+ +
+ {% endif %} + +
+ +{% endblock %} \ No newline at end of file