]> git.lizzy.rs Git - cheatdb.git/commitdiff
Add ability to search by tag v1.24.0
authorrubenwardy <rw@rubenwardy.com>
Tue, 7 Apr 2020 17:23:06 +0000 (18:23 +0100)
committerrubenwardy <rw@rubenwardy.com>
Tue, 7 Apr 2020 17:23:06 +0000 (18:23 +0100)
app/querybuilder.py
app/templates/packages/view.html

index 4db6742625a65c5187cb5b5c9743290273eb3e3d..d811ce525af6cc03380cb1c94d1c510dcde70279 100644 (file)
@@ -1,4 +1,5 @@
-from .models import db, PackageType, Package, ForumTopic, License, MinetestRelease, PackageRelease, User
+from .models import db, PackageType, Package, ForumTopic, License, MinetestRelease, PackageRelease, User, Tag
+from .models import tags as Tags
 from .utils import isNo, isYes
 from sqlalchemy.sql.expression import func
 from flask import abort
@@ -19,10 +20,17 @@ class QueryBuilder:
                if len(types) > 0:
                        title = ", ".join([type.value + "s" for type in types])
 
+               # Get tags types
+               tags = args.getlist("tag")
+               tags = [Tag.query.filter_by(name=tname).first() for tname in tags]
+               tags = [tag for tag in tags if tag is not None]
+
+               # Hid
                hide_flags = args.getlist("hide")
 
                self.title  = title
                self.types  = types
+               self.tags   = tags
 
                self.random = "random" in args
                self.lucky  = "lucky" in args
@@ -96,6 +104,9 @@ class QueryBuilder:
 
                        query = query.filter_by(author=author)
 
+               for tag in self.tags:
+                       query = query.filter(Package.tags.any(Tag.id == tag.id))
+
                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))
index 77b84da21aef690e076a624062b1106ab0d01867..cb5f04d7f3db8bdec883c6d87d2f71d2eb546a19 100644 (file)
@@ -38,7 +38,8 @@
                                        </span>
                                {% endif %}
                                {% for t in package.tags %}
-                                       <span class="badge badge-primary">{{ t.title }}</span>
+                                       <a class="badge badge-primary"
+                                               href="{{ url_for('packages.list_all', tag=t.name) }}">{{ t.title }}</a>
                                {% endfor %}
                        </p>