From 05444e8018763def07e034513ec8f232d26bedd4 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Mon, 26 Mar 2018 11:28:34 +0100 Subject: Add tags Fixes #4 --- app/models.py | 25 ++++++++++++++++++++++++- app/templates/packages/list.html | 14 ++++++++++++++ app/templates/packages/view.html | 9 +++++++++ app/views/packages.py | 3 ++- 4 files changed, 49 insertions(+), 2 deletions(-) (limited to 'app') 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 @@
  • No packages available {% endfor %} + +

    Tags

    +
    + Filtering by tag doesn't actually work yet! +
    + + {% endfor %} + {% 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 %} +

    Tags

    + + {% if current_user.is_authenticated or requests %}

    Edit Requests

    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/") -- cgit v1.2.3