diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/models.py | 25 | ||||
-rw-r--r-- | app/templates/packages/list.html | 14 | ||||
-rw-r--r-- | app/templates/packages/view.html | 9 | ||||
-rw-r--r-- | app/views/packages.py | 3 |
4 files changed, 49 insertions, 2 deletions
diff --git a/app/models.py b/app/models.py index f3903ff..ab88fc6 100644 --- a/app/models.py +++ b/app/models.py @@ -147,6 +147,10 @@ class PackagePropertyKey(enum.Enum): issueTracker = "Issue Tracker" forums = "Forum Topic ID" +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) +) class Package(db.Model): id = db.Column(db.Integer, primary_key=True) @@ -167,7 +171,10 @@ class Package(db.Model): issueTracker = db.Column(db.String(200), nullable=True) forums = db.Column(db.Integer, nullable=False) - # Releases + + tags = db.relationship('Tag', secondary=tags, lazy='subquery', + backref=db.backref('packages', lazy=True)) + releases = db.relationship("PackageRelease", backref="package", lazy="dynamic", order_by=db.desc("package_release_releaseDate")) @@ -266,6 +273,22 @@ class Package(db.Model): else: raise Exception("Permission {} is not related to packages".format(perm.name)) +class Tag(db.Model): + id = db.Column(db.Integer, primary_key=True) + title = db.Column(db.String(100), nullable=False) + backgroundColor = db.Column(db.String(6), nullable=False) + textColor = db.Column(db.String(6), nullable=False) + + def __init__(self, title, backgroundColor="000000", textColor="ffffff"): + self.title = title + self.backgroundColor = backgroundColor + self.textColor = textColor + + def getName(self): + import re + regex = re.compile('[^a-z_]') + return regex.sub("", self.title.lower().replace(" ", "_")) + class PackageRelease(db.Model): id = db.Column(db.Integer, primary_key=True) diff --git a/app/templates/packages/list.html b/app/templates/packages/list.html index 1c40cfa..666e5af 100644 --- a/app/templates/packages/list.html +++ b/app/templates/packages/list.html @@ -19,4 +19,18 @@ <li><i>No packages available</i></ul> {% endfor %} </ul> + + <h3>Tags</h3> + <div class="box box_grey alert alert-warning"> + Filtering by tag doesn't actually work yet! + </div> + <ul> + {% for t in tags %} + <li><a href="{{ url_for('packages_page', q=(query or '')+' tag:'+t.getName()) }}"> + {{ t.title }} + </a></li> + {% else %} + <li><i>No tags available</i></ul> + {% endfor %} + </ul> {% endblock %} diff --git a/app/templates/packages/view.html b/app/templates/packages/view.html index 58631c9..55d0d57 100644 --- a/app/templates/packages/view.html +++ b/app/templates/packages/view.html @@ -98,6 +98,15 @@ {% endfor %} </ul> + <h3>Tags</h3> + <ul> + {% for t in package.tags %} + <li>{{ t.title }}</li> + {% else %} + <li>No tags.</li> + {% endfor %} + </ul> + {% if current_user.is_authenticated or requests %} <h3>Edit Requests</h3> diff --git a/app/views/packages.py b/app/views/packages.py index 6f809f2..c9ad24f 100644 --- a/app/views/packages.py +++ b/app/views/packages.py @@ -29,7 +29,8 @@ def doPackageList(type): if shouldReturnJson(): return jsonify([package.getAsDictionary(app.config["BASE_URL"]) for package in query.all()]) else: - return render_template("packages/list.html", title=title, packages=query.all(), query=search) + tags = Tag.query.all() + return render_template("packages/list.html", title=title, packages=query.all(), query=search, tags=tags) @app.route("/packages/") |