From 8ff7b349bb6d9e0cd2516c6cb76a52bb4c4a991d Mon Sep 17 00:00:00 2001 From: HombreLaser Date: Tue, 6 Feb 2024 16:28:50 -0600 Subject: Add comments processing --- src/controllers/comments_controller.py | 21 ++++++++++++++++++++- src/queries/__init__.py | 1 + src/queries/base_query.py | 10 ++++++++++ src/queries/comments_query.py | 19 +++++++++++++++++++ templates/comments/index.jinja | 8 +++++++- 5 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 src/queries/__init__.py create mode 100644 src/queries/base_query.py create mode 100644 src/queries/comments_query.py 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('//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('//comments/new') +def new(post): + return render_template('comments/form.jinja') + + +@comments_blueprint.get('//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 @@ -

Thanks!

+
+ {% for comment in page.items %} +
+ {{ comment.content }} +
+ {% endfor %} +
-- cgit v1.2.3