Fix query sorting further

This commit is contained in:
rubenwardy
2020-07-12 17:56:06 +01:00
parent 2e3a9035c4
commit 2faa0e4219
2 changed files with 12 additions and 11 deletions

View File

@ -340,7 +340,7 @@ provides = db.Table("provides",
db.Column("metapackage_id", db.Integer, db.ForeignKey("meta_package.id"), primary_key=True) db.Column("metapackage_id", db.Integer, db.ForeignKey("meta_package.id"), primary_key=True)
) )
tags = db.Table("tags", Tags = db.Table("tags",
db.Column("tag_id", db.Integer, db.ForeignKey("tag.id"), primary_key=True), db.Column("tag_id", db.Integer, db.ForeignKey("tag.id"), primary_key=True),
db.Column("package_id", db.Integer, db.ForeignKey("package.id"), primary_key=True) db.Column("package_id", db.Integer, db.ForeignKey("package.id"), primary_key=True)
) )
@ -472,7 +472,7 @@ class Package(db.Model):
dependencies = db.relationship("Dependency", backref="depender", lazy="dynamic", foreign_keys=[Dependency.depender_id]) dependencies = db.relationship("Dependency", backref="depender", lazy="dynamic", foreign_keys=[Dependency.depender_id])
tags = db.relationship("Tag", secondary=tags, lazy="select", tags = db.relationship("Tag", secondary=Tags, lazy="select",
backref=db.backref("packages", lazy=True)) backref=db.backref("packages", lazy=True))
releases = db.relationship("PackageRelease", backref="package", releases = db.relationship("PackageRelease", backref="package",

View File

@ -70,7 +70,7 @@ class QueryBuilder:
query = query.filter(Package.type.in_(self.types)) query = query.filter(Package.type.in_(self.types))
if self.search: if self.search:
query = query.search(self.search, sort=True) query = query.search(self.search, sort=self.order_by is None)
if self.random: if self.random:
query = query.order_by(func.random()) query = query.order_by(func.random())
@ -78,7 +78,7 @@ class QueryBuilder:
to_order = None to_order = None
if self.order_by is None and self.search: if self.order_by is None and self.search:
pass pass
if self.order_by is None or self.order_by == "score": elif self.order_by is None or self.order_by == "score":
to_order = Package.score to_order = Package.score
elif self.order_by == "name": elif self.order_by == "name":
to_order = Package.name to_order = Package.name
@ -91,14 +91,15 @@ class QueryBuilder:
else: else:
abort(400) abort(400)
if self.order_dir == "asc": if to_order:
to_order = db.asc(to_order) if self.order_dir == "asc":
elif self.order_dir == "desc": to_order = db.asc(to_order)
to_order = db.desc(to_order) elif self.order_dir == "desc":
else: to_order = db.desc(to_order)
abort(400) else:
abort(400)
query = query.order_by(to_order) query = query.order_by(to_order)
if self.author: if self.author:
author = User.query.filter_by(username=self.author).first() author = User.query.filter_by(username=self.author).first()