aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/utils.py10
-rw-r--r--app/views/packages/__init__.py9
2 files changed, 19 insertions, 0 deletions
diff --git a/app/utils.py b/app/utils.py
index dc65736..cb6a315 100644
--- a/app/utils.py
+++ b/app/utils.py
@@ -170,3 +170,13 @@ def clearNotifications(url):
if current_user.is_authenticated:
Notification.query.filter_by(user=current_user, url=url).delete()
db.session.commit()
+
+
+YESES = ["yes", "true", "1", "on"]
+
+def isYes(val):
+ return val and val.lower() in YESES
+
+
+def isNo(val):
+ return val and not isYes(val)
diff --git a/app/views/packages/__init__.py b/app/views/packages/__init__.py
index 7181b5b..8ac5a83 100644
--- a/app/views/packages/__init__.py
+++ b/app/views/packages/__init__.py
@@ -51,6 +51,7 @@ class QueryBuilder:
self.types = types
self.search = request.args.get("q")
self.lucky = "lucky" in request.args
+ self.hide_nonfree = isNo(request.args.get("nonfree"))
self.limit = 1 if self.lucky else None
def buildPackageQuery(self):
@@ -64,6 +65,10 @@ class QueryBuilder:
query = query.order_by(db.desc(Package.score))
+ 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))
+
if self.limit:
query = query.limit(self.limit)
@@ -78,6 +83,10 @@ class QueryBuilder:
if len(self.types) > 0:
topics = topics.filter(ForumTopic.type.in_(self.types))
+ 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))
+
if self.limit:
topics = topics.limit(self.limit)