diff options
author | rubenwardy <rw@rubenwardy.com> | 2018-12-22 21:09:29 +0000 |
---|---|---|
committer | rubenwardy <rw@rubenwardy.com> | 2018-12-22 21:09:29 +0000 |
commit | fd901726b05a24e303501f23ef836d4594872684 (patch) | |
tree | 00055fb2ad8cb36331e69a709a42242a60860b1c | |
parent | 5f40d6844173d6d7b65a1ec5b73ab83d4ef67073 (diff) | |
download | cheatdb-fd901726b05a24e303501f23ef836d4594872684.tar.xz |
Add sort and order query params to package list
-rw-r--r-- | app/templates/index.html | 4 | ||||
-rw-r--r-- | app/views/packages/__init__.py | 19 |
2 files changed, 20 insertions, 3 deletions
diff --git a/app/templates/index.html b/app/templates/index.html index b37228c..83750ee 100644 --- a/app/templates/index.html +++ b/app/templates/index.html @@ -29,14 +29,14 @@ Welcome {{ render_pkggrid(new) }} - <a href="{{ url_for('packages_page') }}" class="btn btn-secondary float-right"> + <a href="{{ url_for('packages_page', sort='score', order='desc') }}" class="btn btn-secondary float-right"> See more </a> <h2 class="my-3">Popular</h2> {{ render_pkggrid(popular) }} - <a href="{{ url_for('packages_page', type='txp') }}" class="btn btn-secondary float-right"> + <a href="{{ url_for('packages_page', type='txp', sort='score', order='desc') }}" class="btn btn-secondary float-right"> See more </a> <h2 class="my-3">Top Texture Packs</h2> diff --git a/app/views/packages/__init__.py b/app/views/packages/__init__.py index ff670ce..d8bebfb 100644 --- a/app/views/packages/__init__.py +++ b/app/views/packages/__init__.py @@ -53,6 +53,8 @@ class QueryBuilder: self.lucky = "lucky" in request.args self.hide_nonfree = isNo(request.args.get("nonfree")) self.limit = 1 if self.lucky else None + self.order_by = request.args.get("sort") or "score" + self.order_dir = request.args.get("order") or "desc" def buildPackageQuery(self): query = Package.query.filter_by(soft_deleted=False, approved=True) @@ -63,7 +65,22 @@ class QueryBuilder: if self.search is not None and self.search.strip() != "": query = query.filter(Package.title.ilike('%' + self.search + '%')) - query = query.order_by(db.desc(Package.score)) + to_order = None + if self.order_by == "score": + to_order = Package.score + elif self.order_by == "created_at": + to_order = Package.created_at + 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) + + query = query.order_by(to_order) if self.hide_nonfree: query = query.filter(Package.license.has(License.is_foss == True)) |