mirror of
https://github.com/logos-co/open-law.git
synced 2025-02-16 00:37:07 +00:00
done with first kind of sorting
This commit is contained in:
parent
bf2b13d246
commit
686c6a92e6
@ -22,9 +22,9 @@
|
|||||||
{% if selected_tab=='my_library' or selected_tab=='favorite_books' or selected_tab=='explore_books'%}
|
{% if selected_tab=='my_library' or selected_tab=='favorite_books' or selected_tab=='explore_books'%}
|
||||||
<li> <a href="#" class="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white" >Most favored</a > </li>
|
<li> <a href="#" class="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white" >Most favored</a > </li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<li> <a href="#" class="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white" >Most recent</a > </li>
|
<li> <a href="?sort=recent" class="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white" >Most recent</a > </li>
|
||||||
{% if selected_tab=='latest_interpretations' or selected_tab=='my_contributions' %}
|
{% if selected_tab=='latest_interpretations' or selected_tab=='my_contributions' %}
|
||||||
<li> <a href="#" class="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white" >Most comments</a > </li>
|
<li> <a href="?sort=commented" class="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white" >Most comments</a > </li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if selected_tab=='my_library' or selected_tab=='favorite_books' or selected_tab=='explore_books'%}
|
{% if selected_tab=='my_library' or selected_tab=='favorite_books' or selected_tab=='explore_books'%}
|
||||||
<li> <a href="#" class="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white" >Most interpretations</a > </li>
|
<li> <a href="#" class="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-600 dark:hover:text-white" >Most interpretations</a > </li>
|
||||||
|
@ -3,7 +3,7 @@ from flask import (
|
|||||||
render_template,
|
render_template,
|
||||||
request,
|
request,
|
||||||
)
|
)
|
||||||
from sqlalchemy import and_
|
from sqlalchemy import and_, func, text
|
||||||
from app import models as m, db
|
from app import models as m, db
|
||||||
from app.logger import log
|
from app.logger import log
|
||||||
from app.controllers import create_pagination
|
from app.controllers import create_pagination
|
||||||
@ -15,9 +15,13 @@ bp = Blueprint("home", __name__, url_prefix="/home")
|
|||||||
@bp.route("/", methods=["GET"])
|
@bp.route("/", methods=["GET"])
|
||||||
def get_all():
|
def get_all():
|
||||||
sort = request.args.get("sort")
|
sort = request.args.get("sort")
|
||||||
interpretations = db.session.query(
|
interpretations = (
|
||||||
|
db.session.query(
|
||||||
m.Interpretation,
|
m.Interpretation,
|
||||||
).filter(
|
func.count(m.Comment.interpretation_id).label("comments_count"),
|
||||||
|
)
|
||||||
|
.join(m.Comment, isouter=True)
|
||||||
|
.filter(
|
||||||
and_(
|
and_(
|
||||||
m.Section.id == m.Interpretation.section_id,
|
m.Section.id == m.Interpretation.section_id,
|
||||||
m.Collection.id == m.Section.collection_id,
|
m.Collection.id == m.Section.collection_id,
|
||||||
@ -30,9 +34,17 @@ def get_all():
|
|||||||
m.Collection.is_deleted == False, # noqa: E712
|
m.Collection.is_deleted == False, # noqa: E712
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
.group_by(m.Interpretation.id)
|
||||||
|
)
|
||||||
match sort:
|
match sort:
|
||||||
case "upvoted":
|
case "upvoted":
|
||||||
interpretations = interpretations.order_by(m.Interpretation.score)
|
interpretations = interpretations.order_by(m.Interpretation.score.desc())
|
||||||
|
case "recent":
|
||||||
|
interpretations = interpretations.order_by(
|
||||||
|
m.Interpretation.created_at.desc()
|
||||||
|
)
|
||||||
|
case "commented":
|
||||||
|
interpretations = interpretations.order_by(text("comments_count DESC"))
|
||||||
case _:
|
case _:
|
||||||
interpretations = interpretations.order_by(
|
interpretations = interpretations.order_by(
|
||||||
m.Interpretation.created_at.desc()
|
m.Interpretation.created_at.desc()
|
||||||
@ -44,11 +56,13 @@ def get_all():
|
|||||||
log(log.INFO, "Returns data for front end")
|
log(log.INFO, "Returns data for front end")
|
||||||
|
|
||||||
log(log.INFO, "Returning data to front end")
|
log(log.INFO, "Returning data to front end")
|
||||||
|
interpretations = interpretations.paginate(
|
||||||
|
page=pagination.page, per_page=pagination.per_page
|
||||||
|
)
|
||||||
|
interpretations.items = [item[0] for item in interpretations.items]
|
||||||
return render_template(
|
return render_template(
|
||||||
"home/index.html",
|
"home/index.html",
|
||||||
interpretations=interpretations.paginate(
|
interpretations=interpretations,
|
||||||
page=pagination.page, per_page=pagination.per_page
|
|
||||||
),
|
|
||||||
page=pagination,
|
page=pagination,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
34
migrations/versions/f104cc0131c5_score.py
Normal file
34
migrations/versions/f104cc0131c5_score.py
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
"""score
|
||||||
|
|
||||||
|
Revision ID: f104cc0131c5
|
||||||
|
Revises: ad0ed27f417f
|
||||||
|
Create Date: 2023-06-13 17:04:08.590895
|
||||||
|
|
||||||
|
"""
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision = "f104cc0131c5"
|
||||||
|
down_revision = "ad0ed27f417f"
|
||||||
|
branch_labels = None
|
||||||
|
depends_on = None
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
with op.batch_alter_table("interpretations", schema=None) as batch_op:
|
||||||
|
batch_op.add_column(
|
||||||
|
sa.Column("score", sa.Integer(), nullable=True, server_default="0")
|
||||||
|
)
|
||||||
|
|
||||||
|
# ### end Alembic commands ###
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
with op.batch_alter_table("interpretations", schema=None) as batch_op:
|
||||||
|
batch_op.drop_column("score")
|
||||||
|
|
||||||
|
# ### end Alembic commands ###
|
Loading…
x
Reference in New Issue
Block a user