From b5686e5b26ce35d1f1febc266cd4f44e2b2bfd45 Mon Sep 17 00:00:00 2001
From: daphtya <davidpanjaitan1@gmail.com>
Date: Sat, 13 Apr 2019 18:50:01 +0700
Subject: [PATCH] add reply ke comment

---
 modules/admin.py    |  4 ++--
 modules/comment.py  | 21 ++++++++++++++++++++-
 modules/login.py    |  1 +
 modules/page.py     |  7 ++++++-
 modules/register.py |  2 +-
 5 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/modules/admin.py b/modules/admin.py
index 8513841..4af0cf4 100644
--- a/modules/admin.py
+++ b/modules/admin.py
@@ -15,7 +15,7 @@ def add_page():
     data = request.get_json()
 
     admin = db.User.objects.with_id(data.get("admin_id"))
-    admin.page_list.append(db.Page.objects.with_id(data.get("page_id")))
+    admin.page_list.append(db.VizData.objects.with_id(data.get("page_id")))
     admin.save()
     return jsonify({
         "status":200,
@@ -29,7 +29,7 @@ def remove_page():
     data = request.get_json()
 
     admin = db.User.objects.with_id(data.get("admin_id"))
-    admin.update(pull__page_list = db.Page.objects.with_id(data.get("page_id")))
+    admin.update(pull__page_list = db.VizData.objects.with_id(data.get("page_id")))
     
     return jsonify({
         "status":200,
diff --git a/modules/comment.py b/modules/comment.py
index 90a7063..d03e9cb 100644
--- a/modules/comment.py
+++ b/modules/comment.py
@@ -37,7 +37,7 @@ def add_comment(user):
     text = req.get("text")
     try:
         page = db.VizData.objects.with_id(page_id)
-        new_comment = db.Comment(commenter_id = user.id, comment_text=text, page=page)
+        new_comment = db.Comment(commenter_id = user.id, comment_text=text, page = page)
         new_comment.save()
         return jsonify({
             "status":200,
@@ -48,3 +48,22 @@ def add_comment(user):
             "status":500,
             "message":str(e)
         })
+
+@comment_route.route("/api/comment/add-reply", methods=["POST"])
+@validate_login_token(min_access_level=Roles.ADMIN, pass_user=True)
+def add_reply(user):
+    req = request.get_json()
+    comment_id = req.get("comment_id")
+    reply_text = req.get("text")
+
+    comment = db.Comment.objects.with_id(comment_id)
+    if comment.page not in user.page_list:
+        return jsonify({
+            "status":401,
+            "message":"Unauthorized reply"
+        })
+    comment.update(reply=db.Reply(replier_id = user.id, reply_text=reply_text))
+    return jsonify({
+        "status":200,
+        "message":"Reply added successfully"
+    })
\ No newline at end of file
diff --git a/modules/login.py b/modules/login.py
index e34b457..18c4971 100644
--- a/modules/login.py
+++ b/modules/login.py
@@ -75,6 +75,7 @@ def get_user_from_id():
     del user.password
     del user.username
     del user.page_list
+    del user.role
     return jsonify({
         "status":200,
         "data": user
diff --git a/modules/page.py b/modules/page.py
index 0170309..ca7092f 100644
--- a/modules/page.py
+++ b/modules/page.py
@@ -26,7 +26,7 @@ def get_top_page():
 
 @page_route.route("/api/page/get", methods=["POST"])
 def get_page():
-    data_id = request.get_json().get("data_id")
+    data_id = request.get_json().get("page_id")
     try:
         vdata = db.VizData.objects.with_id(data_id)
         if vdata is not None:
@@ -35,6 +35,11 @@ def get_page():
                 "data":vdata,
                 "subdata":[child for child in vdata.subdata]
             })
+        else:
+            return jsonify({
+                "status":404,
+                "message":"page not found"
+            })
     except Exception as e:
         return jsonify({
             "status": 500,
diff --git a/modules/register.py b/modules/register.py
index 151b0f6..aa30c16 100644
--- a/modules/register.py
+++ b/modules/register.py
@@ -1,6 +1,6 @@
 from flask import Blueprint, jsonify, request, current_app
 from database import database as db
-from modules.tools.token import Token
+from modules.tools.token import Token, validate_login_token
 from modules.tools.roles import Roles
 
 register_route = Blueprint('register', __name__, template_folder="templates")
-- 
GitLab