roundabout,
created on Wednesday, 13 November 2024, 15:27:21 (1731511641),
received on Wednesday, 13 November 2024, 15:27:23 (1731511643)
Author identity: vlad <vlad.muntoiu@gmail.com>
227ebec5fa3a5f6dffbb8fa2e59b45260297d306
app.py
@@ -158,6 +158,7 @@ def about():
@app.route("/search") def search(): query = flask.request.args.get("q") sorting = flask.request.args.get("sort", "default")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
@@ -165,8 +166,18 @@ def search():
default_page_length = 16 page_length = flask.request.args.get("per_page", default_page_length, type=int) results = Repo.query.filter(Repo.name.ilike(f"%{query}%")).filter_by(visibility=2).paginate(page=page_number, per_page=page_length)results = Repo.query.filter(Repo.name.ilike(f"%{query}%")).filter_by(visibility=2) match sorting: case "popularity": results = results.outerjoin(RepoFavourite).group_by(Repo.route).order_by( db.func.count(RepoFavourite.id).desc()) case "newest": results = results.order_by(Repo.creation_date.desc()) case "oldest": results = results.order_by(Repo.creation_date) results = results.paginate(page=page_number, per_page=page_length)if results.has_next: next_page = results.next_num
@@ -189,6 +200,7 @@ def search():
@app.route("/user-search") def user_search(): query = flask.request.args.get("q") sorting = flask.request.args.get("sort", "default")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
@@ -196,8 +208,18 @@ def user_search():
default_page_length = 16 page_length = flask.request.args.get("per_page", default_page_length, type=int) results = User.query.filter(User.username.ilike(f"%{query}%")).paginate(page=page_number, per_page=page_length)results = User.query.filter(User.username.ilike(f"%{query}%")) match sorting: case "popularity": results = results.outerjoin(UserFollow, User.username == UserFollow.followed_username).group_by( User.username).order_by(db.func.count(UserFollow.id).desc()) case "newest": results = results.order_by(User.creation_date.desc()) case "oldest": results = results.order_by(User.creation_date) results = results.paginate(page=page_number, per_page=page_length)if results.has_next: next_page = results.next_num
templates/home.html
@@ -14,10 +14,22 @@
<h2>{% trans %}Search{% endtrans %}</h2> <form action="/search" method="get" role="search" class="buttonbox"> <input type="text" name="q" placeholder="{% trans %}Search repositories...{% endtrans %}" aria-label="{% trans %}Repository search{% endtrans %}"> <select name="sort" aria-label="{% trans %}Sort by{% endtrans %}"> <option value="default" selected>{% trans %}Default{% endtrans %}</option> <option value="popularity">{% trans %}Popularity{% endtrans %}</option> <option value="newest">{% trans %}Newest{% endtrans %}</option> <option value="oldest">{% trans %}Oldest{% endtrans %}</option> </select><button type="submit">{% trans %}Search{% endtrans %}</button> </form> <form action="/user-search" method="get" role="search" class="buttonbox"> <input type="text" name="q" placeholder="{% trans %}Search users...{% endtrans %}" aria-label="{% trans %}User search{% endtrans %}"> <select name="sort" aria-label="{% trans %}Sort by{% endtrans %}"> <option value="default" selected>{% trans %}Default{% endtrans %}</option> <option value="popularity">{% trans %}Popularity{% endtrans %}</option> <option value="newest">{% trans %}Recently registered{% endtrans %}</option> <option value="oldest">{% trans %}Oldest{% endtrans %}</option> </select><button type="submit">{% trans %}Search{% endtrans %}</button> </form> </x-frame>
templates/user-profile.html
@@ -38,12 +38,14 @@
<form action="?action=follow" method="POST"> <button type="submit"> {% if relationship %} {% trans %}Stop following{% endtrans %}{% trans counter=user.followers|length %}Stop following ({{ counter }}){% endtrans %}{% else %} {% trans %}Follow{% endtrans %}{% trans counter=user.followers|length %}Follow ({{ counter }}){% endtrans %}{% endif %} </button> </form> {% else %} {% trans counter=user.followers|length %}{{ counter }} followers{% endtrans %}{% endif %} {% endblock %}