diff options
author | HombreLaser <sebastian-440@live.com> | 2024-02-06 16:28:50 -0600 |
---|---|---|
committer | HombreLaser <sebastian-440@live.com> | 2024-02-06 16:28:50 -0600 |
commit | 8ff7b349bb6d9e0cd2516c6cb76a52bb4c4a991d (patch) | |
tree | 9ab64193bd61236f27fbb5b12c89629e7e475048 /src | |
parent | 10482a1f0a4998a379c36d13cdd359fd63dd8241 (diff) |
Add comments processing
Diffstat (limited to 'src')
-rw-r--r-- | src/controllers/comments_controller.py | 21 | ||||
-rw-r--r-- | src/queries/__init__.py | 1 | ||||
-rw-r--r-- | src/queries/base_query.py | 10 | ||||
-rw-r--r-- | src/queries/comments_query.py | 19 |
4 files changed, 50 insertions, 1 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 + ) |