From 2faa0e42195fdf46ff6e647c250da7d438798c59 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Sun, 12 Jul 2020 17:56:06 +0100 Subject: [PATCH] Fix query sorting further --- app/models.py | 4 ++-- app/querybuilder.py | 19 ++++++++++--------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/app/models.py b/app/models.py index ea78638..3e71c75 100644 --- a/app/models.py +++ b/app/models.py @@ -340,7 +340,7 @@ provides = db.Table("provides", 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("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]) - tags = db.relationship("Tag", secondary=tags, lazy="select", + tags = db.relationship("Tag", secondary=Tags, lazy="select", backref=db.backref("packages", lazy=True)) releases = db.relationship("PackageRelease", backref="package", diff --git a/app/querybuilder.py b/app/querybuilder.py index 84513e9..26c0b84 100644 --- a/app/querybuilder.py +++ b/app/querybuilder.py @@ -70,7 +70,7 @@ class QueryBuilder: query = query.filter(Package.type.in_(self.types)) if self.search: - query = query.search(self.search, sort=True) + query = query.search(self.search, sort=self.order_by is None) if self.random: query = query.order_by(func.random()) @@ -78,7 +78,7 @@ class QueryBuilder: to_order = None if self.order_by is None and self.search: 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 elif self.order_by == "name": to_order = Package.name @@ -91,14 +91,15 @@ class QueryBuilder: else: abort(400) - if self.order_dir == "asc": - to_order = db.asc(to_order) - elif self.order_dir == "desc": - to_order = db.desc(to_order) - else: - abort(400) + if to_order: + if self.order_dir == "asc": + to_order = db.asc(to_order) + elif self.order_dir == "desc": + to_order = db.desc(to_order) + else: + abort(400) - query = query.order_by(to_order) + query = query.order_by(to_order) if self.author: author = User.query.filter_by(username=self.author).first()