From 3e07bed51bf910517c16ec42d35c49ac424d793e Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Sat, 28 Mar 2020 18:09:20 +0000 Subject: Add ability to search packages by author --- app/querybuilder.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'app/querybuilder.py') diff --git a/app/querybuilder.py b/app/querybuilder.py index 5fa4ec6..4db6742 100644 --- a/app/querybuilder.py +++ b/app/querybuilder.py @@ -1,4 +1,4 @@ -from .models import db, PackageType, Package, ForumTopic, License, MinetestRelease, PackageRelease +from .models import db, PackageType, Package, ForumTopic, License, MinetestRelease, PackageRelease, User from .utils import isNo, isYes from sqlalchemy.sql.expression import func from flask import abort @@ -23,14 +23,19 @@ class QueryBuilder: self.title = title self.types = types - self.search = args.get("q") + self.random = "random" in args self.lucky = "lucky" in args self.hide_nonfree = "nonfree" in hide_flags self.limit = 1 if self.lucky else None self.order_by = args.get("sort") self.order_dir = args.get("order") or "desc" + + # Filters + + self.search = args.get("q") self.protocol_version = args.get("protocol_version") + self.author = args.get("author") self.show_discarded = isYes(args.get("show_discarded")) self.show_added = args.get("show_added") @@ -84,6 +89,13 @@ class QueryBuilder: query = query.order_by(to_order) + if self.author: + author = User.query.filter_by(username=self.author).first() + if not author: + abort(404) + + query = query.filter_by(author=author) + if self.hide_nonfree: query = query.filter(Package.license.has(License.is_foss == True)) query = query.filter(Package.media_license.has(License.is_foss == True)) -- cgit v1.2.3