summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHombreLaser <sebastian-440@live.com>2024-02-06 16:28:50 -0600
committerHombreLaser <sebastian-440@live.com>2024-02-06 16:28:50 -0600
commit8ff7b349bb6d9e0cd2516c6cb76a52bb4c4a991d (patch)
tree9ab64193bd61236f27fbb5b12c89629e7e475048
parent10482a1f0a4998a379c36d13cdd359fd63dd8241 (diff)
Add comments processing
-rw-r--r--src/controllers/comments_controller.py21
-rw-r--r--src/queries/__init__.py1
-rw-r--r--src/queries/base_query.py10
-rw-r--r--src/queries/comments_query.py19
-rw-r--r--templates/comments/index.jinja8
5 files changed, 57 insertions, 2 deletions
diff --git a/src/controllers/comments_controller.py b/src/controllers/comments_controller.py
index 1bbb0f8..9d6f02e 100644
--- a/src/controllers/comments_controller.py
+++ b/src/controllers/comments_controller.py
@@ -1,9 +1,11 @@
from flask import Blueprint, request, abort, render_template
+from src.queries import CommentsQuery
from src.services import CreateCommentService
comments_blueprint = Blueprint('comments_controller',
'__comments_controller__')
+query = CommentsQuery()
@comments_blueprint.post('/<path:post>/comments/')
@@ -14,4 +16,21 @@ def create(post):
if status_code == 404:
abort(404)
- return render_template('comments/index.jinja')
+ return render_template('comments/index.jinja',
+ page=query.comments_of_post(post))
+
+
+@comments_blueprint.get('/<path:post>/comments/new')
+def new(post):
+ return render_template('comments/form.jinja')
+
+
+@comments_blueprint.get('/<path:post>/comments/')
+def index(post):
+ page = query.comments_of_post(post)
+
+ if page.total == 0:
+ abort(404)
+
+ return render_template('comments/index.jinja',
+ page=page)
diff --git a/src/queries/__init__.py b/src/queries/__init__.py
new file mode 100644
index 0000000..08f4a8b
--- /dev/null
+++ b/src/queries/__init__.py
@@ -0,0 +1 @@
+from src.queries.comments_query import CommentsQuery
diff --git a/src/queries/base_query.py b/src/queries/base_query.py
new file mode 100644
index 0000000..70cf776
--- /dev/null
+++ b/src/queries/base_query.py
@@ -0,0 +1,10 @@
+import sqlalchemy as sa
+from src.database import db
+
+
+class BaseQuery:
+ def __init__(self, model):
+ self._model = model
+
+ def get(self, primary_key):
+ return db.session.get(self._model, primary_key)
diff --git a/src/queries/comments_query.py b/src/queries/comments_query.py
new file mode 100644
index 0000000..834bd6a
--- /dev/null
+++ b/src/queries/comments_query.py
@@ -0,0 +1,19 @@
+from src.database import db
+from src.database.models import Comment
+from src.queries.base_query import BaseQuery
+
+
+class CommentsQuery(BaseQuery):
+ def __init__(self):
+ super().__init__(Comment)
+
+ def all_comments(self, page=1, per_page=10, max_per_page=15):
+ return db.paginate(db.select(Comment), page=page, per_page=per_page,
+ max_per_page=max_per_page)
+
+ def comments_of_post(self, post, page=1, per_page=10, max_per_page=15):
+ return db.paginate(
+ db.select(Comment).where(Comment.post == post),
+ page=page, per_page=per_page,
+ max_per_page=max_per_page
+ )
diff --git a/templates/comments/index.jinja b/templates/comments/index.jinja
index e29d4d1..fea6edd 100644
--- a/templates/comments/index.jinja
+++ b/templates/comments/index.jinja
@@ -1 +1,7 @@
-<p>Thanks!</p>
+<div class="comment-section">
+ {% for comment in page.items %}
+ <div class="comment">
+ {{ comment.content }}
+ </div>
+ {% endfor %}
+</div>