roundabout,
created on Monday, 29 July 2024, 11:25:14 (1722252314),
received on Wednesday, 31 July 2024, 06:54:52 (1722408892)
Author identity: vlad <vlad.muntoiu@gmail.com>
693be014dc5086106055794bb6aed98c3c75a203
app.py
@@ -938,6 +938,28 @@ def repository_forum(username, repository):
relationships = RepoAccess.query.filter_by(repo=repo_data)
user_relationship = RepoAccess.query.filter_by(repo=repo_data, user=user).first()
page_number = flask.request.args.get("page", 1, type=int)
if flask.session.get("username"):
default_page_length = db.session.get(User, flask.session.get("username")).default_page_length
else:
default_page_length = 16
page_length = flask.request.args.get("per_page", default_page_length, type=int)
posts = Post.query.filter_by(repo=repo_data).order_by(Post.last_updated.desc()).paginate(
page=page_number, per_page=page_length
)
if posts.has_next:
next_page = posts.next_num
else:
next_page = None
if posts.has_prev:
prev_page = posts.prev_num
else:
prev_page = None
return flask.render_template(
"repo-forum.html",
username=username,
@@ -949,7 +971,13 @@ def repository_forum(username, repository):
Post=Post,
remote=f"http{'s' if config.suggest_https else ''}://{config.BASE_DOMAIN}/git/{username}/{repository}",
is_favourite=get_favourite(flask.session.get("username"), username, repository),
default_branch=repo_data.default_branch
default_branch=repo_data.default_branch,
page_number=page_number,
page_length=page_length,
next_page=next_page,
prev_page=prev_page,
num_pages=posts.pages,
posts=posts
)
templates/repository/repo-forum.html
@@ -39,7 +39,7 @@
</select>
<button type="submit">{% trans %}Search{% endtrans %}</button>
</form>
{% for post in Post.query.filter_by(repo=repo_data, parent=none).order_by(Post.last_updated.desc()) %}
{% for post in posts %}
<article class="card card-horizontal">
{% if post.state == 0 %}
<div class="card-top state-label" style="background: var(--color-done); color: var(--color-done-text);">
@@ -56,6 +56,7 @@
</section>
</article>
{% endfor %}
{% include "pagination.html" %}
</x-vbox>
</x-frame>
</x-vbox>