From ba9367b35d2582226568e20f51bb5599f083ae64 Mon Sep 17 00:00:00 2001 From: Socks Date: Thu, 22 Mar 2018 22:27:03 +0000 Subject: [PATCH] Added the ability to edit posts, with edited marker on profiles --- Tweeder.py | 17 +++++++++++++++++ backend/timeline.py | 9 +++++++++ templates/editpost.html | 14 ++++++++++++++ templates/profile.html | 10 +++++++--- 4 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 templates/editpost.html diff --git a/Tweeder.py b/Tweeder.py index 1ce4d30..a4d4965 100644 --- a/Tweeder.py +++ b/Tweeder.py @@ -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,21 @@ def mentions(): posts=timeline.get_mentions(logged_in)) +@app.route("/editpost/", methods=["GET", "POST"]) +def editpost(post_id): + if 'username' not in session.keys(): return redirect(url_for('login')) + logged_in = session['username'] + post_obj = timeline.post_details(post_id) + print(post_obj) + if request.method == "GET": + if post_obj['poster'].lower() != logged_in: + return abort(403) + else: + return render_template('editpost.html', post_obj=post_obj) + elif request.method == "POST": + timeline.edit_status(post_obj['_id'], request.form['status']) + return redirect('/view/'+str(post_id)) + + if __name__ == '__main__': app.run(host="127.0.0.1", debug=True) diff --git a/backend/timeline.py b/backend/timeline.py index c84becb..6df2e3c 100644 --- a/backend/timeline.py +++ b/backend/timeline.py @@ -30,12 +30,21 @@ def post_status(username, content, private=False, replyTo=False, location=False) 'mentions': accounts_mentioned, 'location': False or location, 'private': False or private, + 'edited': False } timeline_db.insert_one(status) +def edit_status(post_id, new_content): + timeline_db.update_one({"_id": ObjectId(post_id)}, + {"$set": + {"content": new_content.replace('\n', ' ').replace('\r', ''), + "edited": True} + }) + + def user_posts_by_username(username): return timeline_db.find({'posterid': accounts_db.find_one({"username": username})['_id']}).sort('timePosted', pymongo.DESCENDING) diff --git a/templates/editpost.html b/templates/editpost.html new file mode 100644 index 0000000..da05b4e --- /dev/null +++ b/templates/editpost.html @@ -0,0 +1,14 @@ +{% extends 'layout.html' %} +{% block content %} +
+
+
Editing post
+
+
+ + +
+
+
+
+{% endblock %} \ No newline at end of file diff --git a/templates/profile.html b/templates/profile.html index 406336a..2164094 100644 --- a/templates/profile.html +++ b/templates/profile.html @@ -4,7 +4,7 @@
{% if user.profile.profile_pic %} - + {% endif %}

{% if user.verified %} {% endif %}{{ user.displayname }} on Tweeder

@@ -21,6 +21,7 @@
+

{{ user.displayname }}' Profile

{% if following %}
{% else %}
{% endif %}
@@ -38,7 +39,7 @@ {% for post in posts if not post.hidden %}
- {{ post.poster }} at {{ post.timePosted.strftime('%Y-%m-%d %-H:%M') }} + {{ post.poster }} at {{ post.timePosted.strftime('%Y-%m-%d %-H:%M') }} {% if post.edited %}(Edited){% endif %} {% if logged_in|lower in post.likes %}
@@ -46,7 +47,10 @@
{% endif %} - {% if logged_in == post.poster %} + {% if logged_in|lower == post.poster|lower %} + + {% endif %} + {% if logged_in|lower == post.poster|lower %} {% endif %}